java全局变量和局部变量_Java 10 –局部变量类型推断
java全局變量和局部變量
在本文中,我們將看到作為JEP 286的一部分提出的名為Local Variable Type Inference的Java10功能。 從Java的第一個(gè)版本開始,它是一種強(qiáng)類型化的語(yǔ)言,我們需要提及每種變量數(shù)據(jù)類型。 我們都感到Java是冗長(zhǎng)的語(yǔ)言,并期望精確,緊湊的Java編寫方式。 Java 8解決了這個(gè)問(wèn)題。
Java 10在初始化程序中添加了局部變量類型推斷 ,以消除冗長(zhǎng)的內(nèi)容。 例如,
jshell> Map<String,String> map = new HashMap<>(); jshell> var map = new HashMap<>(); //This is valid with Java10這里的LHS變量數(shù)據(jù)類型將由RHS語(yǔ)句確定。 例如,
jshell> var i = 3; i ==> 3 //based on RHS, the LHS datatype is int. jshell>int i=3,j=4; //Valid Declaration but, jshell> var j=4,k=5; //Not a Valid Declaration | Error: |'var' is not allowed in a compound declaration | var j=4,k=5; |^您可以將此功能用于增強(qiáng)的for循環(huán)和for循環(huán)。
jshell> List names = Arrays.asList("ABC","123","XYZ"); names ==> [ABC, 123, XYZ] jshell> for(var name : names){ ...> System.out.println("Name = "+ name); ...> }Name = ABC Name = 123 Name = XYZ我們也可以在for循環(huán)中使用局部變量類型推斷。
jshell> int[] arr = {1,2,3,4}; arr ==> int[4] { 1, 2, 3, 4 }jshell> for (var i=0;i<arr.length;i++){...> System.out.println("Value = "+i);...> } Value = 0 Value = 1 Value = 2 Value = 3在某些情況下,此功能無(wú)效。 例如,
- 對(duì)構(gòu)造函數(shù)變量無(wú)效
- 對(duì)實(shí)例變量無(wú)效
- 對(duì)方法參數(shù)無(wú)效
- 無(wú)效以分配NULL值
- 無(wú)效作為返回類型
讓我們看看上述聲明的示例。
jshell> public class Sample {...> private var name = "xyz";...> public Sample(var name) {...> this.name=name;...> }...> public void printName(var name){...> System.out.println(name);...> }...> public var add(int a, int b) {...> return a+b;...> }...> } | Error: | 'var' is not allowed here | private var name = "xyz"; //Instance variable | ^-^ | Error: | 'var' is not allowed here | public Sample(var name) { //Constructor variable | ^-^ | Error: | 'var' is not allowed here | public void printName(var name){ //Method parameter | ^-^ | Error: | 'var' is not allowed here | public var add(int a, int b) { //Method return type | ^-^jshell> public class Sample {...> ...> public static void main(String[] args) {...> var s = null;...> }...> } | Error: | cannot infer type for local variable s | (variable initializer is 'null') | var s = null; | ^-----------^當(dāng)我們從較低版本遷移到Java10時(shí),我們不必?fù)?dān)心本地變量類型推斷,因?yàn)樗哂邢蚝蠹嫒菪浴?
在接下來(lái)的文章中,我們將學(xué)習(xí)另一個(gè)主題。 直到敬請(qǐng)期待!
翻譯自: https://www.javacodegeeks.com/2018/06/local-variable-type-inference.html
java全局變量和局部變量
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java全局变量和局部变量_Java 10 –局部变量类型推断的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 平板电脑芯片商(电脑芯片生产商)
- 下一篇: jdk 1.8 字符串+_JDK 9/1