您的位置:首页 > 编程语言 > Java开发

int与Integer类型关系

2016-03-30 16:19 405 查看
/*

测试Integer与int类型的关系

*/

public class TestInteger{
public static void main(String[] args){
/*Integer i01 = 59;
int i02 = 59;
Integer i03 =Integer.valueOf(59);
Integer i04 = new Integer(59);

System.out.println(i01== i02);
System.out.println(i02== i03);

  
System.out.println(i01== i03);
System.out.println(i01== i04);//false
System.out.println(i03== i04);//false
 
System.out.println(i02== i04);*/

int x1 = 127;
Integer x2 = 127;
System.out.println("x1==x2:" + (x1==x2));//true

int x3 = 200;
Integer x4 = 200;
System.out.println("x3==x4:" + (x3==x4));//true

int x5 = 200;
Integer x6 = 200;
System.out.println("x6==x5:" + (x6==x5));//true,

int i1 = 20;
int i2 = 20;
//System.out.println("i1.equals(i2):" + i1.equals(i2));//编译出错,无法取消引用int

Integer a = 300;
Integer b = 300;
System.out.println("a.equals(b):" + a.equals(b));

/*
Integer y01 = 127;
Integer y02 = 127;
System.out.println("y01==y02:" + (y01==y02));//true

Integer y1 = Integer.valueOf(128);
Integer y2 = 128;//相当于Integer y2 = Integer.valueOf(128);
System.out.println("y1==y2:" + (y1==y2));//false,

Integer y3 = -129;
Integer y4 = -129;
System.out.println("y3==y4:" + (y3==y4));//false,
*/

/*
小结:
 Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。
 此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。
*/

/*总结:
1,==两边只要有一边是基本数据类型,运算时只取栈内存的变量值进行比较,不管堆内存地址
2,==两边都是引用类型时,比较的是堆内存地址值。
3,但是,Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字,,
此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。
4,equals比较的是2个对象的内容,只能做引用类型的比较。
*/

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java