中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JDK10中本地變量類型var的用法

發布時間:2020-07-23 17:23:26 來源:億速云 閱讀:170 作者:小豬 欄目:編程語言

這篇文章主要講解了JDK10中本地變量類型var的用法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

簡介

java以面向對象的特性顯著于世并得到了蓬勃的發展。在語言的發展過程中,為了讓java語言更加簡潔和方便使用,JDK也在不斷的進行改進。

今天本文將要介紹一下JDK10中引入的本地變量類型var。

為什么我們需要var

類型推斷是很多編程語言都具有的特性,編譯器可以在我們不指定具體變量類型的情況下推斷出該變量的實際類型。

類型推斷的出現,可以讓程序員的代碼更加靈活,利于維護和編寫。其實我們一直都有使用到類型推斷。

JDK8中引入的lambda表達式就是類型推斷的一個非常有用的例子:

int maxWeight = blocks.stream().filter(b -> b.getColor() == BLUE).mapToInt(Block::getWeight)
.max();

上面的例子中blocks是一個Stream<Block>類型,在filter中使用到的b實際上就沒有指定其類型,它的類型是從Stream中推斷出來的。

再看一個線程池的例子:

ExecutorService executorService= Executors.newSingleThreadExecutor();
Runnable runnable=new Runnable() {
 @Override
 public void run() {
  log.info("inside runnable");
  }
 };
 executorService.submit(runnable);

很多時候,我們從變量的名字就已經知道了這個變量到底是什么類型的,那么上面的例子如果用var來改寫就可以像這樣:

var executorService= Executors.newSingleThreadExecutor();
var runnable=new Runnable() {
 @Override
 public void run() {
   log.info("inside runnable");
  }
 };
executorService.submit(runnable);

代碼更加簡潔,程序員寫起來也更加方便。

如果上面的例子還不能夠提起你使用var的興趣,那么下面的例子你一定很樂意使用var了。

假如我們有一個非常非常長的類名:

ItIsAVeryLongNameJavaClass itIsAVeryLongNameJavaClass= new ItIsAVeryLongNameJavaClass();

寫起來是不是超級麻煩,代碼看起也非常冗余,這時候我們就可以將其簡化為:

var itIsAVeryLongNameJavaClass= new ItIsAVeryLongNameJavaClass();

var使用在什么地方

首先var代表的是本地變量,所以,只有本地變量才能夠使用var。

其次var在定義的時候就必須被初始化:

var a; //Invalid Declaration - - Cannot use 'var' on variable without initializer
var a = 100; //Valid Declaration

var可以用在for loop中:

for ( var element : elementList){
  //do something for element
}

或者這種:

for ( var i = 0 ; i < elementList.size(); i++ ){
  System.out.println( elementList.get(i) );
}

var不能用在什么地方

因為var是本地變量類型,它不能用在類變量的定義中,不能用在方法變量中,不能用在構造函數中,不能用在方法返回中,不能用在catch變量定義中。

public class VarIncorrectUsage {
   
  //var user;  //Not allowed as class fields
     
  //public VarIncorrectUsage(var param){  //Not allowed as parameter 
  //}
 
  /*try{
     
  } catch(var exception){  //Not allowed as catch formal 
 
  }*/
 
  /*public var returnMethod(){ //Not allowed in method return type
    return null;
  }*/
 
  /*public Integer parameterMethod( var input ){ //Not allowed in method parameters
    return null;
  }*/
}

注意,var在JVM無法推斷其類型或者可以有很多類型的情況下不能夠使用:

var ints = {1, 2, 3};
var lambda = a -> a;
var methodReference = String::concat;

上面例子中數組初始化,lambda表達式和方法引用都是不能用var的。

其他var的特點

var不是關鍵字,所以我們可以使用var來做變量名字:

var var = 2;  //Valid Declaration
     
int var = 2;  //Also valid Declaration

因為var是JDK10引入的概念,所以不是向下兼容的。不能夠用低版本的編譯器來編譯var。

var不會影響性能,因為var是在代碼編譯器進行的類型推斷,所以并不會影響到性能。

看完上述內容,是不是對JDK10中本地變量類型var的用法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红桥区| 黔西县| 乌鲁木齐市| 义乌市| 黄梅县| 高州市| 乌兰察布市| 家居| 长寿区| 呼伦贝尔市| 常宁市| 香港| 东城区| 邵阳县| 祥云县| 卢氏县| 罗甸县| 宣威市| 徐闻县| 蓬莱市| 绥宁县| 新巴尔虎左旗| 林周县| 昌邑市| 旺苍县| 樟树市| 和平区| 堆龙德庆县| 开平市| 辉南县| 余庆县| 南华县| 芜湖市| 邵阳县| 泾阳县| 五台县| 万州区| 福泉市| 岑巩县| 三穗县| 清远市|