Integer与int

来源:互联网 发布:淘宝助理下载安装 编辑:程序博客网 时间:2024/06/05 05:44
Integer a = 1000,b=1000;  
Integer c = 100,d=100;    
System.out.println(a==b); 
System.out.println(c==d);  
String s1 = "abc";  
String s2 = "abc";  
String s3 = new String("abc");  
System.out.println(s1 == s2);  
System.out.println(s1 == s3);  
Integer a1 = new Integer(1000);  
int b1 = 1000;  
Integer c1 = new Integer(10);  
Integer d1 = new Integer(10);  
System.out.println(a1 == b1);  

System.out.println(c1 == d1);  

Integer 与int 以及之间的比较:

integer与integer比较的是引用的地址,integer与int,integer先拆箱,比较的是值。

java中Integer类型对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。但对于不在这区间的数字是在堆中new出来的。所以地址空间不一样,也就不相等。

我们知道一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,而堆内存中则存放new 出来的对象和数组。然而除此之外还有一块区域叫做常量池。像我们通常想String s1 = "abc"; 这样申明的字符串对象,其值就是存储在常量池中。当我们创建String s1 = "abc"这样一个对象之后,"abc"就存储到了常量池(也可叫做字符串池)中,当我们创建引用String s2  = "abc" 的时候,Java底层会优先在常量池中查找是否存在"abc",如果存在则让s2指向这个值,不会重新创建,如果常量池中没有则创建并添加的池中。

0 0
原创粉丝点击