public class test7 {
public static void main(String args[]){
int c = 1;
int d = 1;
Integer r = new Integer(1);
Integer o = new Integer(1);
//System.out.println(a.equals(b));
//System.out.println(a == b);
//System.out.println(a = b);
System.out.println("1".equals(String.valueOf(c)));false
System.out.println(r == o);// true
System.out.println(r.equals(o));// true
System.out.println(r == c);// true
System.out.println(r.equals(Integer.parseInt("1")));// true
System.out.println(r.equals(1));// true
System.out.println(r == 1);true
}
}
为什么????
解决方案 »
- 请求大大来看下我的代码怎么改才好。。。只有几行而已
- java中数组问题
- 我被弄晕了
- 高手请进,j2ee面试题目(难一个字!!!!!),本人考不定,请那位高手帮忙,谢谢
- 请问如何使Linux下的JVM运行Graphics
- 这个正则表达式怎么写??
- reference到底是什么?
- java sdk最新版在哪里下载?在线等待
- ******<<网络机器人JAVA编程指南>>电子工业的,Jeff Heaton写的。那里可以得到有它的配套jar包?100分悬赏*******
- 请问该怎么做类似本网站的发布、接受短信的功能??
- 关于java中import的问题
- 求助:可执行jar文件中的Class.getResource()调用老是有错。。。
System.out.println("1".equals(String.valueOf(c)));为什么是false?
System.out.println(r == o);为什么是true?
一个是Object,int是原始类型,两个怎么可能相等呢
这里的装箱应该理解为 封装对象 ,即把基础数据类型(如 int)转换成基础类型封装类的对象(如 new Integer())
拆箱就是装箱的反过程,即把基础类型封装类的对象(如 new Integer())转换为基础数据类型(如 int)。装箱: Integer a = new Integer() ;
a = 100 ; //1.5以前不支持为对象如此赋值
拆箱: int b = new Integer(100) ;
public static void main(String args[]){
int c = 1;
int d = 1;
Integer r = new Integer(1);
Integer o = new Integer(1);
//System.out.println(a.equals(b));
//System.out.println(a == b);
//System.out.println(a = b);
System.out.println("1".equals(String.valueOf(c)));false ---> true,原因很明确吧
System.out.println(r == o);// true ----> false,r 和 o 是栈内存中两个不同的变量,且指向不同对象, 只是对象的属性相同,要输出true,请用equals且重写它
System.out.println(r.equals(o));// true ---> 这说明Integer类重写了equals()
System.out.println(r == c);// true --->等高手指点,初步觉得是编译器的原因
System.out.println(r.equals(Integer.parseInt("1")));// true -->同上
System.out.println(r.equals(1));// true --->同上
System.out.println(r == 1);true ---》同上
}
}
Integer是包装类 是对象类型
int c = 1;
int d = 1;
Integer r = new Integer(1);
Integer o = new Integer(1);
int c1 = 128; Integer r1 = new Integer(128);
Integer o1 = new Integer(128);
Integer aa = 127;
Integer bb = 127;
Integer aa1 = 128;
Integer bb1 = 128;
Integer aa2 = -128;
Integer bb2 = -128;
Integer aa3 = -129;
Integer bb3 = -129;
System.out.println("1".equals(String.valueOf(c)));//true
System.out.println(r == o);// false
System.out.println(r.equals(o));// true
System.out.println(r == c);// true
System.out.println(r.equals(Integer.parseInt("1")));// true
System.out.println(r.equals(1));// true
System.out.println(r == 1);//true
System.out.println(c1 == r1);//true
System.out.println(r1.equals(c1));// true
System.out.println(aa == bb);//true
System.out.println(aa1 == bb1);//false
System.out.println(aa2 == bb2);//true
System.out.println(aa3 == bb3);//false
Integer是对象,是int的包装类。
public boolean equals(Object obj)比较此对象与指定对象。当且仅当参数不为 null,并且是一个与该对象包含相同 int 值的 Integer 对象时,结果为 true。 覆盖:
类 Object 中的 equals
参数:
obj - 要比较的对象。
返回:
如果对象相同,则返回 true,否则返回 false。
另请参见:
Object.hashCode(), Hashtable