<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # Java `var` – 局部變量類型推斷 > 原文: [https://howtodoinjava.com/java10/var-local-variable-type-inference/](https://howtodoinjava.com/java10/var-local-variable-type-inference/) Java 一直在努力減少語法的冗長性。 首先是[菱形運算符](https://howtodoinjava.com/java-7/improved-type-inference-in-java-7/),現在是`var`(局部變量類型 – [JEP 286](https://openjdk.java.net/jeps/286))在 Java 中聲明變量。 當您使用`var`聲明變量時,基本上,而不是聲明變量類型,而是根據設置的類型假定其類型。 例如 ```java var str = "Hello world"; //or String str = "Hello world"; ``` 在上面的示例中,在第一個語句中,您將`String`設置為變量`str`,因此隱式假定其為`String`類型。 在上面的示例中,第一條語句基本上等同于第二條語句。 ## `var`同時聲明和初始化 使用`var`時,必須在同一位置初始化變量。 您不能將聲明和初始化放在不同的位置。 如果未在適當位置初始化變量,則會出現編譯錯誤 – `Cannot use 'var' on variable without initializer`。 ```java var i; //Invalid Declaration - - Cannot use 'var' on variable without initializer var j = 10; //Valid Declaration System.out.println(i); ``` ## `var`不是關鍵字 雖然看起來像`var`并不是**保留的 Java 關鍵字**。 因此,您可以創建名稱為`var`的變量,允許使用。 ```java var var = 10; //Valid Declaration int var = 10; //Also valid Declaration ``` ## `var`用法 使用`var`僅限于具有初始化器的局部變量,增強的`for`循環中的索引以及在傳統的`for`循環中聲明的局部變量; 它不適用于方法形式,構造器形式,方法返回類型,字段,`catch`形式或任何其他類型的變量聲明。 #### 用法如下: * 帶有初始化器的局部變量 * 增強的`for`循環中的索引 * 在傳統的`for`循環中聲明的局部變量 ```java 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) ); } ``` #### 不允許的用法如下: * 方法參數 * 構造器參數 * 方法返回類型 * 類字段 * 捕獲形式(或任何其他類型的變量聲明) ```java 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 中,類型不是在運行時推斷的,而是在編譯時推斷的。 這意味著生成的字節碼與顯式類型聲明相同 – 它確實包含有關類型的信息。 這意味著在運行時無需額外的處理。 學習愉快!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看