Java一直在努力減少語法的冗長性。首先是 Diamond運算符,現在是 var
(局部變量類型– JEP 286 )以在Java中聲明變量。當您使用 var
聲明變量時,基本上,而不是聲明變量類型,它會根據設置的類型來假定其類型。例如
var str = "Hello world"; //or String str = "Hello world";
在上面的示例中,在第一條語句中,您將 String
設置爲變量 str
,因此隱式假定其爲 String
類型。在上面的示例中,第一條語句基本上等同於第二條語句。
var
聲明和初始化
使用 var
時,必須在同一位置初始化變量。您不能將聲明和初始化放在不同的位置。如果未在適當位置初始化變量,則會出現編譯錯誤– 在沒有初始化程序的情況下不能對變量使用'var'
。
var i; //Invalid Declaration - - Cannot use 'var' on variable without initializer var j = 10; //Valid Declaration System.out.println(i);
var
不是關鍵字
雖然看起來很像,但 var
不是保留的Java關鍵字。因此,您可以創建名稱爲" var"的變量-允許使用。
var var = 10; //Valid Declaration int var = 10; //Also valid Declaration
var
用法
使用 var
僅限於具有初始化程序的局部變量,增強的for循環中的索引以及在傳統的for循環中聲明的局部變量;它不適用於方法形式,構造函數形式,方法返回類型,字段,catch形式或任何其他類型的變量聲明。
允許使用爲 :
- 帶有初始化程序的局部變量
- 增強型for循環中的索引
- 在傳統的for循環中聲明的本地
var blogName = "howtodoinjava.com"; for ( var object : dataList){ System.out.println( object ); } for ( var i = 0 ; i < dataList.size(); i++ ){ System.out.println( dataList.get(i) ); }
用法不允許 :
- 方法參數
- 構造函數參數
- 方法返回類型
- 類字段
- 捕獲形式(或任何其他類型的變量聲明)
public class Application { //var firstName; //Not allowed as class fields //public Application(var param){ //Not allowed as parameter //} /*try{ } catch(var ex){ //Not allowed as catch formal }*/ /*public var demoMethod(){ //Not allowed in method return type return null; }*/ /*public Integer demoMethod2( var input ){ //Not allowed in method parameters return null; }*/ }
var
不向後兼容
由於這是新的語言函數,使用 var
編寫的代碼不會在較低的JDK版本(小於10)中編譯。因此,只有在確定時才使用此函數。
var
不影響性能
請記住,在Java中,類型不是在運行時推斷的,而是在編譯時推斷的。這意味着結果字節碼與顯式類型聲明相同–它確實包含有關類型的信息。這意味着在運行時無需額外的處理。
鏈接:https://www.learnfk.com/article-java10-var-local-variable-type-inference
來源:Learnfk無涯私塾網