代码如下:public class Test3 {
private Integer c;
private Integer d; public Integer getC() {
return c;
} public void setC(Integer c) {
this.c = c;
} public Integer getD() {
return d;
} public void setD(Integer d) {
this.d = d;
}
public static void main(String[] args){
Test3 test = new Test3();
test.setC(4);
test.setD(4); if (test.getC() == test.getD()) {
System.out.println("aa");
} else {
System.out.println("bb");
}
}
} 我想要问的就是:当c和d总是被赋给相同的值时,结果一定输出“aa”么(两者相等)?为什么?我知道如果属性是int型的时候,一定是成立的。
求大神么讲解一下,不胜感激!
private Integer c;
private Integer d; public Integer getC() {
return c;
} public void setC(Integer c) {
this.c = c;
} public Integer getD() {
return d;
} public void setD(Integer d) {
this.d = d;
}
public static void main(String[] args){
Test3 test = new Test3();
test.setC(4);
test.setD(4); if (test.getC() == test.getD()) {
System.out.println("aa");
} else {
System.out.println("bb");
}
}
} 我想要问的就是:当c和d总是被赋给相同的值时,结果一定输出“aa”么(两者相等)?为什么?我知道如果属性是int型的时候,一定是成立的。
求大神么讲解一下,不胜感激!
为什么你输入int 类型的一个常量值的比如12345什么的 只要它们的值相等那么就只能输出aa
你输入字符常量也是同理,他们值相同,而且地址也是相同的都是在常量池中,所以它们相等输出aa
但是如果你放一个它们值相同,但是地址不同的来比较==那么就输出bb了。。比如String a ="abc";
String b= "abc";
a==b ---------true
这是相等的,但是eg:
String a ="abc";
String b = new String("abc");
system.out.print(b)------------abc
但是a==b-----------false
test.setC(new Integer(4));
test.setD(new Integer(4));再看看结果。
我知道你说的那个意思,生成两个Integer的对象,他们的地址不同,用“==”判断当然是输出“bb”。
我的问题的真实情况是这个类是匹配的数据库,也就是po类,然后我从数据库中查询出结果,有了一些对象,然后从这些对象中get Integer类型的值进行比较。