在今年的9月份就要發佈Java歷史以來第三個長期支持版本Java 17了,不知道你做何感想……java
我知道你們目前對待JDK的態度是這樣的:python
新版任你發,我就用Java8!markdown
可是我今天要和你們分享的是Java 10中新添加的一個特性,並且這個特性我以爲是你們很是有必要了解和學習的一個特性,以致於你們能夠把Java 8升級到Java 11,固然,是在咱們日常的學習當中!ide
var初體驗是什麼呢?咱們先來看段代碼:學習
public class HelloWorld { public static void main(String[] args) { String s = "慶哥java"; System.out.println(s); } }
這段代碼太簡單了,其實重點是如下這個:編碼
public class HelloWorld { public static void main(String[] args) { var s = "慶哥java"; System.out.println(s); } }
怎麼樣,是否是不同了呢?你可能會說,這不行吧,的確,我目前的人編譯環境是java8,天然不行:atom
我如今將其切換到java10:
這個時代代碼無誤,正常編譯打印:spa
咱們還能夠這樣:code
var s = "慶哥java"; var i = 10; String s1 = "慶哥java"; int i1 = 10;
注意下區別!也就是說在java 10中新添加的這個特性var,其實準確來講這並非一個關鍵字,這個特性以前在java9中就已經出現,可是後來又給刪除了,咱也不知道爲啥,咱也不敢問!blog
有這這個var,正如你所看到的那樣,咱們能夠直接使用這個var來聲明變量,而不用管你究竟是String仍是int,咋樣,是否是感受很方便,這樣一來,咱們編碼的效率是否是會大大提升了嘞!
局部變量類型推斷提及來,這個特性叫作局部變量推斷,咱們看這行代碼:
String s1 = "慶哥java";
你若是你要聲明一個字符串類型,那就須要先使用String去聲明,同理若是你想聲明一個整型變量,那就得使用int去聲明,這看起來很正確,可是實際編碼中卻感到麻煩,由於你須要寫各類不一樣的變量聲明,必定程度是否是增長了代碼的難度和複雜度!
那些不學java的可能會說,使用python或者js能夠一分鐘搞定的事情,要是用Java來作可能得10分鐘,我以爲這個鍋,要用各類不一樣變量聲明這種特性要背一點!
做爲一門長久不衰的高級語言,java應該很智能的纔對,當我寫出「慶哥java」你就應該知道我這個聲明的是個字符串變量,而不用很呆板的在前面加上個String類型你才知道是字符串變量,同理,像整型int也該如此!
這個其實就是局部變量類型推斷,根據具體的數值變量推斷出其變量類型,並且這個功能在其餘語言上早就有了!
想必學過js的看到這個var應該很熟悉吧,js中早就在用這個var了,詳細點來講,這種局部變量推斷在其餘語言上早已應用,具體爲:
而java,爲啥沒有,這不該該啊,一句扎心的話,在java10以前啊,咱們的大java是惟一沒有局部變量類型推斷或者支持var關鍵字的語言!
想一想就以爲,真的不該該!
java中對類型推斷的支持這裏有個知識點,在java中,其實也是對類型推斷這塊作了努力的,在java8中引入了lambda表達式,方法引用和Stream等都是對類型推斷作了很大改進,說實話,這幾塊本身仍是須要花時間好好研究研究!
雖然上述說的對類型推斷作了改進,可是你仍是得機械的呆板的加上正確的類型來聲明局部變量!
我這裏一直在強調局部變量,你看這個:
懂我意思了吧!要否則人家咋叫作局部變量類型推斷呢!
回到上面所說的,java好像對局部變量類型推斷不怎麼感冒啊,但是,不要緊,如今java10的到來,終結了這一尷尬現象,我們的java也有var了!
var使代碼變得簡潔先來個栗子:
public static void main(String[] args) { var str = "慶哥java"; //自動推斷str的類型爲String var list = new ArrayList<String>(); //自動推斷出ArrayList<String> }
有沒有發現,使用var以後代碼變得更加簡潔了,咱們以上面這個list爲例,加入咱們不適用var的話是否是須要這樣書寫:
ArrayList<String> strings = new ArrayList<String>();
可是使用var使用,咱們能夠直接省略前面的ArrayList,這是否是就是減小了重複使得你的代碼更加的簡潔呢?
關於var使用的一些注意事項咱們能夠看到,var的使用仍是比較簡單的,可是在使用它的時候依然有一些事情須要咱們特別注意,一不當心,你可能就搞錯了!
正如上面給你們所展現的那樣,咱們使用var能夠自動幫咱們進行局部變量類型的推斷,這裏你須要知道的是,這個局部變量的類型是由編譯器幫咱們推斷的!
咱們一直在說局部變量類型推斷,所以,這個var只能用於聲明局部變量,好比方法內部,初始化代碼塊上以及for循環中聲明的局部變量!
要記住,你是不能使用它來聲明成員變量或者字段的,這點要注意,請記住,人家是「局部變量類型推斷!」
咱們看似var是一個關鍵字,可是實際上它並非一個關鍵字,而是一個保留的類型名稱,這一點也是須要你們注意的!
好了,本篇文章給你們簡單介紹了java10中的新特性,話說,你喜歡這個var嗎?