引用:https://mp.weixin.qq.com/s/n1tcJ0CywSi0j-YycGPwxg
what
- java10引入了局部變量折斷 var用於聲明局部變量。
如var user=new ArrayList<User>();
why
- 避免了信息冗余
- 對齊了變量名
- 更容易閱讀
how
-
java10之前的變量聲明:
URL codefx = new URL("http://codefx.org") URLConnection connection = codefx.openConnection(); Reader reader = new BufferedReader( new InputStreamReader(connection.getInputStream()));
-
java10
var codefx = new URL("http://codefx.org"); var connection = codefx.openConnection(); var reader = new BufferedReader( new InputStreamReader(connection.getInputStream()));
- 在處理 var時,編譯器先是查看表達式右邊部分,也就是所謂的構造器,並將它作為變量的類型,然后將該類型寫入字節碼當中。
attention
- 只能用於帶有構造器的局部變量,以下場景不適用
var foo; foo = "Foo";
var ints = {0, 1, 2};
var appendSpace = a -> a + " ";
private var getFoo(){}
-
除了局部變量,for循環是唯一可以使用 var的地方:
var numbers = List.of("a", "b", "c"); for (var nr : numbers) System.out.print(nr + " "); for (var i = 0; i < numbers.size(); i++) System.out.print(numbers.get(i) + " ");