public static void main(String[] args) {
Integer i1=new Integer(1);
Integer i2=new Integer(1);
int i3=1;
if(i1==i2){System.out.print("aaa");}
if(i1==i3){System.out.print("bbb");}
if(i1.equals(i3)){System.out.print("ccc");}
}运行结果是 bbbccc 为什么是这样 i2 和 i3引用的是同一个地址空间????
Integer i1=new Integer(1);
Integer i2=new Integer(1);
int i3=1;
if(i1==i2){System.out.print("aaa");}
if(i1==i3){System.out.print("bbb");}
if(i1.equals(i3)){System.out.print("ccc");}
}运行结果是 bbbccc 为什么是这样 i2 和 i3引用的是同一个地址空间????
i1 和 i2 都是对象 比较两个的值要用equals
int是指类型 他的值和i1 i2 等
int是JAVA缺省的8中基本数据类型之一.不是类的对象.
int是基本数据类型,Integer是对int进行了封装的一个类。
声明为int的变量不需要实例化,声明为Interger的变量需要实例化
int是基本类型,Integer是包装类,也就是类。
Integer 是比int 更高级的 数据类型 为什么java中使用int 而不像vb中那样使用Integer
int是面向机器底层的数值类型,是Primitive类型的数据类型,而Integer是int的Warpper类,是面向对象的即OOP的对象类型。int 一般只用在数值计算中,而Integer是用在Java的其它要使用对象的地方,比如Map的Key与Value,List与Set的Element若要保存数值信息都要把int包装成Integer对象使用。
i3是值类型,然后在i1==i3的时候感觉应该是用的i1的值跟i3进行比较的,可能也想ls上说的,调用的intValue函数。
另外equals函数应该也是比较的两个值的大小吧。 呵呵~~~~
int是指类型 他的值和i1 i2 等
integer是int的封装类
javaSE5.0后,对于封装类,如Integer、Short、Boolean、Character等与基本数据类型int、short、boolean、char等进行运算时(包括比较),编译器会帮程序员打包解包:
如果需要的是封装类对象,基本数据类型会自动打包成封装类对象:new Integer(i)//i是int型
如果需要的是基本数据类型,封装类对像会解包成基本数据类型:i.intValue()//i是Integer的引用如这里
i1==i3编译器会帮你写上:i1.intValue()==i3