代码如下: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型的时候,一定是成立的。
求大神么讲解一下,不胜感激!

解决方案 »

  1.   

    当你赋予相同的值得时候,判断相等返回true,不是理所应当的吗?为什么会有这个疑问呢
      

  2.   

    这个是看你是否理解到了关系运算符"=="
    为什么你输入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
      

  3.   

    将test.setC(4),test.setD(4)改为
    test.setC(new Integer(4));
    test.setD(new Integer(4));再看看结果。
      

  4.   


    我知道你说的那个意思,生成两个Integer的对象,他们的地址不同,用“==”判断当然是输出“bb”。
    我的问题的真实情况是这个类是匹配的数据库,也就是po类,然后我从数据库中查询出结果,有了一些对象,然后从这些对象中get Integer类型的值进行比较。
      

  5.   

    数据库获取的值本身都是String类型,如果要进行比较可以直接进行String的比较或者数值类的直接转换成int基本类型比较.怎么非得用Integer类型来做呢?