今天在公众号上看到一道有点意思的题目:
Integer a = 127;
Integer b = 127;
Integer e = 128;
Integer f = 128;
System.out.println(a == b);
System.out.println(e == f);
很基础的东西,时间久了也容易忘记,下午抽空回忆了一下:
public static voidmain(String[] args) {
Integer a = 127;
Integer b = 127;
Integer e = 128;
Integer f = 128;//同 new Integer("128")或new Integer(128)
System.out.println(a == b);// true -128~127之间的数是缓冲区取的,所以用==比较为true,超过该范围则为false
System.out.println(e == f);// false Double 没有缓冲区
System.out.println(e == 128);// true
System.out.println(f == 128);// true
System.out.println(e.intValue() == f.intValue());// true
System.out.println(e.equals(f));// true
inti_max = Integer.MAX_VALUE;//大于2147483647;则编译报错integer num too large
inti_min = Integer.MIN_VALUE;//小于-2147483648;编译报错
//System.out.println(i_max.equals(i_min));//编译报错 基本类型不是对象,不能用equals
inti = Integer.parseInt("123");//将有符号的十进制整数字符串
Integer ii = Integer.valueOf(123);//将指定的整数字符串转换成Integer对象
Integer iii = Integer.getInteger("123");//根据制定的名称得到系统属性的整数值
System.out.println(iii);// null
iii =Integer.parseInt("123",10);
System.out.println(iii);// 123
Integer a = 127;
Integer b = 127;
Integer e = 128;
Integer f = 128;//同 new Integer("128")或new Integer(128)
System.out.println(a == b);// true -128~127之间的数是缓冲区取的,所以用==比较为true,超过该范围则为false
System.out.println(e == f);// false Double 没有缓冲区
System.out.println(e == 128);// true
System.out.println(f == 128);// true
System.out.println(e.intValue() == f.intValue());// true
System.out.println(e.equals(f));// true
inti_max = Integer.MAX_VALUE;//大于2147483647;则编译报错integer num too large
inti_min = Integer.MIN_VALUE;//小于-2147483648;编译报错
//System.out.println(i_max.equals(i_min));//编译报错 基本类型不是对象,不能用equals
inti = Integer.parseInt("123");//将有符号的十进制整数字符串
Integer ii = Integer.valueOf(123);//将指定的整数字符串转换成Integer对象
Integer iii = Integer.getInteger("123");//根据制定的名称得到系统属性的整数值
System.out.println(iii);// null
iii =Integer.parseInt("123",10);
System.out.println(iii);// 123
}