Java Integer与int,栈与堆
2014-09-16 14:50
190 查看
就是懒!直接给出例子!
运行结果为:
基于以下几点可能合理的解释:
(1)Integer使用了缓存数据,直接赋值的时候,Integer使得-128--127之间的数据都是从缓冲数据中进行取,所以所有的地址都是一致的,但是对于new出来的对象,地址都是不一致的。【参考:http://blog.csdn.net/eseaqyq/article/details/7315780】
(2)对于基本数据类型,“==”比较的是数值是否相等;对于对象,“==”比较的是地址是否相等,equals()方法比较的是数值是否相等
(3)Integer和int判断“==”,自动拆包,比较的是数值是否相等。
(4)关于String,参考【http://sarin.iteye.com/blog/603684/】
package box_test; public class test1 { public static void main(String[] args) { int m=124; int n=266; Integer x1=m; Integer x2 = Integer.valueOf(m); Integer x3=new Integer(m); Integer x4=n; Integer x5=Integer.valueOf(n); Integer x6=new Integer(n); Integer y1=m; Integer y2 = Integer.valueOf(m); Integer y3=new Integer(m); Integer y4=n; Integer y5=Integer.valueOf(n); Integer y6=new Integer(n); System.out.println("x1==y1:" + (x1==y1)); System.out.println("x2==y2:" + (x2==y2)); System.out.println("x3==y3:" + (x3==y3)); System.out.println("x4==y4:" + (x4==y4)); System.out.println("x5==y5:" + (x5==y5)); System.out.println("x6==y6:" + (x6==y6)); System.out.println("x1==m:" + (x1==m)); System.out.println("n==y6:" + (n==y6)); String str11="abc"; String str12=new String("abc"); String str21="abc"; String str22=new String("abc"); System.out.println("str11==str21:" + (str11==str21)); System.out.println("str12==str22:" + (str12==str22)); System.out.println("str11==str12:" + (str11==str12)); System.out.println("str11.equals(str21):" + (str11.equals(str21))); System.out.println("str12.equals(str22):" + (str12.equals(str22))); System.out.println("str11.equals(str12):" + (str11.equals(str12))); } }
运行结果为:
x1==y1:true x2==y2:true x3==y3:false x4==y4:false x5==y5:false x6==y6:false x1==m:true n==y6:true str11==str21:true str12==str22:false str11==str12:false str11.equals(str21):true str12.equals(str22):true str11.equals(str12):true
基于以下几点可能合理的解释:
(1)Integer使用了缓存数据,直接赋值的时候,Integer使得-128--127之间的数据都是从缓冲数据中进行取,所以所有的地址都是一致的,但是对于new出来的对象,地址都是不一致的。【参考:http://blog.csdn.net/eseaqyq/article/details/7315780】
(2)对于基本数据类型,“==”比较的是数值是否相等;对于对象,“==”比较的是地址是否相等,equals()方法比较的是数值是否相等
(3)Integer和int判断“==”,自动拆包,比较的是数值是否相等。
(4)关于String,参考【http://sarin.iteye.com/blog/603684/】
相关文章推荐
- 第2章 Java编程基础——FAQ2.11 int和Integer都可以作为整数类型, 那么它们有什么区别?
- java Integer.ValueOf(int)和new Integer(int)性能比较
- Java中int和Integer的区别
- java int与integer的区别
- Java中Integer和int的区别
- JAVA string int Integer间的转换以及日期问题
- Java中int和Integer的区别
- java基础问题----Integer与int的区别
- JAVA中Double与double(Integer&int)之间的区别
- Java中int和Integer的区别
- java Integer.ValueOf(int)和new Integer(int)性能比较
- iBaits中,关于insert返回值的问题(注意!!!不必写resultClass= "java.lang.Integer",方法的返回值就是int)
- Java中int和Integer的区别详解
- 一起谈.NET技术,C#之int挑战Java之Integer
- Java面试题:int和Integer有什么区别
- java Integer.ValueOf(int)和new Integer(int)性能比较
- java 中int和Integer的区别
- C#之int挑战Java之Integer
- Java数据类型中String、Integer、int相互间的转换
- Java中int和Integer的区别详解