简介:
本文主要介绍Java中var定义基本数据类型变量情况,通过实例代码说明var推断变量的实际类型是原始类型或对应的包装类类型。
1、var推断变量类型
var要求编译器从初始化器的类型推断变量的类型,42的自然类型是int,所以number是int:
var a = 1; // a 是 'int'
如果要改变推断出的类型:
var x = (Integer) 10; // x 现在是 Integer
2、代码说明
编译器处理var number = 42
;类似于int number = 42
;
public void method(Integer i) {
System.out.print("Integer method");
}
public void method(int i) {
System.out.print("int method");
}
var n = 42; // n has type 'int'
method(n); // => "int method"
自动装箱:
只有一个方法时,会自动装箱
public void method(Integer i) {
System.out.print("Integer method");
}
var n = 42; // a has type 'int'
method(n); // => "Integer method"
3、用Jshell说明
jshell> Integer boxed1 = 42000;
boxed1 ==> 42000
jshell> Integer boxed2 = 42000;
boxed2 ==> 42000
jshell> System.out.println(boxed1 == boxed2);
false
jshell> var infered1 = 42000;
infered1 ==> 42000
jshell> var infered2 = 42000;
infered2 ==> 42000
jshell> System.out.println(infered1 == infered2);
true
在第一次比较中,两个变量是不一样的;它们是不同的实例。然而,第二个比较是正确的,因此这里必须推断出一个int。
注意:要在家里尝试,请使用(-128,128)
之外的值。包装类缓存会缓存范围内的整数实例。
了解更多分析及数据抓取可查看:
http://data.yisurvey.com:8989/
特别说明:本文旨在技术交流,请勿将涉及的技术用于非法用途,否则一切后果自负。如果您觉得我们侵犯了您的合法权益,请联系我们予以处理。