给大家出个题a=b, b=c, a=c??用代码来看吧:        int i = 123;
        Integer a = new Integer(i);
        int b = i;
        Integer c = new Integer(i);
        System.out.println(a == b);
        System.out.println(b == c);
        System.out.println(a == c);
好吧,看谁能给出正确答案!

解决方案 »

  1.   

    true
    true
    false
    貌似是:《java解惑》里的东西
      

  2.   

    T  //Integer 是Int的封装类 , 传1 进去就相当于 int i = 1;
    T   //同上
    f  // a和c是两个对象在==  ,hashcode值肯定不一样,应该重写equals 方法后 比较
      

  3.   

            int i = 123;    //声明一个基本数据类型
            Integer a = new Integer(i);//将基本数据类型转换成类,这样将基本数据类型转换成类就叫做包装类。  int类型的包装类为Integer , 就是new出了一个新的对象。
            int b = i;
            Integer c = new Integer(i);
    //同上。。
            System.out.println(a == b);  //这种判断语句不用在解释了吧
            System.out.println(b == c);
            System.out.println(a == c);
      

  4.   

    汗丶原来是题目丶 
    答案:true
         true
         false
      

  5.   

    true
    true
    false
    我想说的,都让别人说了...
      

  6.   

    a == b,a是int的包装类型,当和一个int类型比较时,会自动换成int类型所以值是相等的,这里比较的是基本数据类型。
    b == c也是一样。
    a == c,因两个对象都是对象,比较的是地址,当然a和c都是new出来的地址不一样
      

  7.   

    1,2是 值比较 
    3 引用比较
    so
    T,T,F
      

  8.   

    两个不同的对象不相等的,所以a==c是false
    其他的是包装器类和值比较,楼上解释的清楚了
      

  9.   

    引用 19 楼 mxqqingjava 的回复:a == b,a是int的包装类型,当和一个int类型比较时,会自动换成int类型所以值是相等的,这里比较的是基本数据类型。
    b == c也是一样。
    a == c,因两个对象都是对象,比较的是地址,当然a和c都是new出来的地址不一样这个解释很好理解!
      

  10.   

    true
    true
    false
    //分析:
    //首先i,a,b,c的值都为123.
    Integer a = new Integer(i);//a是i的封装类,和基本数据类型i比较时,a拆箱成int类型,比较的是值。所以a和i比较为true.
    System.out.println(a == c);//当两个Integer类型比较的时候,这时候比较的就不是值了,而是值的引用,两者的hashCode()不一样,要比较时必须重写toString()方法:
    System.out.println(a.toString().equals(c.toString()));//true
      

  11.   

    两个不同的对象,hash值不一样的
      

  12.   

    yushouling  他解释的很清楚。。 谢谢 我也学习点了
      

  13.   

    值的比较应该用 equals 方法,而不是这样做。
      

  14.   

    建议楼主看看我的 《java中==与equals的区别》一文
    http://blog.csdn.net/crystalangle/archive/2010/06/02/5642166.aspx
      

  15.   

    true
    true
    false
    前两个相当于是基本数据类型的比较
    最后一个是对象比较
      

  16.   


    他比较的只是int类型的值,而不是对象或引用,也需要用equals方法来比较吗?
      

  17.   

    题目就是 看== 和equals的不同比较方法吧 
    t
    t
    f
    ==是比较两个对象的地址,equals比较两个对象的值
      

  18.   

    可能很多人误会了,我并不是不知道答案,而是期待能有人给出证据证明为什么在JAVA里面,会出现这样的问题,46楼的朋友,很感谢你的热心虽然说已经看到了有价值的答案,但还是没能达到我预想的要求,有谁能给出更直接的答案
      

  19.   

    补充以下内容: // part 1
    int i = 123;
    Integer a = new Integer(i);
    int b = i;
    Integer c = new Integer(i);

    System.out.println(a == b);
    System.out.println(b == c);
    System.out.println(a == c);

                    // part 2
    int i2 = 127;
    Integer a2 = 127;
    int b2 = i;
    Integer c2 = 127;

    System.out.println(a2 == b2);
    System.out.println(b2 == c2);
    System.out.println(a2 == c2);                // part 3
    int i3 = 128;
    Integer a3 = 128;
    int b3 = i;
    Integer c3 = 128;

    System.out.println(a3 == b3);
    System.out.println(b3 == c3);
    System.out.println(a3 == c3);
    前面的朋友们,对照下这个补充内容,然后用你们的解释套一下,看看结果又如何
      

  20.   

    在Java中,Integer和int是可以装箱和自动装箱的,在int自动装箱为Integer的过程中,如果数值范围在
    -128~127之间,会在内存中提供重用,所以才会出现上述程序中数值为127时的两个Integer是相等的,128时不相等
      

  21.   

    查源代码就知道了啊,jdk的源代码安装的时候都有的,在src.zip里
      

  22.   

    public static Integer valueOf(int i) {
    final int offset = 128;
    if (i >= -128 && i <= 127) { // must cache 
        return IntegerCache.cache[i + offset];
    }
            return new Integer(i);
        }
      

  23.   

    TTT
    前边2个不用说了,最后一个只要在 -128 ~ 127 的范围内也是True
      

  24.   

    a == b,a是int的包装类型,当和一个int类型比较时,会自动换成int类型所以值是相等的,这里比较的是基本数据类型。
    b == c也是一样。
    a == c,因两个对象都是对象,比较的是地址,当然a和c都是new出来的地址不一样
      

  25.   

    T
    T
    F    a,c 对象地址不同 所以是错的其余的都是比较值 
      

  26.   

            int i = 123;
            Integer a = new Integer(i);
            int b = i;
            Integer c = new Integer(i);
            System.out.println(a +"**" + b + "***" + c);
            
            System.out.println(a == b);
            System.out.println(b == c);
            System.out.println(a == c);运行结果
    123**123***123
    true
    true
    false
      

  27.   

    明显 a和c的 地址不同吗
    通俗点说都是new出来的 哈哈
      

  28.   

    true :同一个值。
    true :同一个值。
    false :两个数引用的地址相同而已。
      

  29.   

    true
    true
    false
    这个貌似不怎么难吗,直接根据参数就可以判断吗
      

  30.   

      "=="是相对于内存地址的比较,而       Integer a = new Integer(i);
            Integer c = new Integer(i);a和c引用的是不一样的对象
      

  31.   

    我的答案是
    true
    true
    false
      

  32.   

    int a,b,ca = b
    b = c
    a = c true
      

  33.   

    java的自动装箱功能。参考林信良《java学习笔记》…………楼主有点无聊……
      

  34.   

    很高兴有这么多人参与讨论=======华丽的分割线========但是往往很多人都是在老师的指引下,知道了什么是理所当然,比如,能被3整除的数有什么特征?
    我们都知道把所有的数位都加起来,如果结果能被3整除,那么这个数必然能被3整除,可究竟有多少人认真的去思考过,为什么这样就可以?这不是公理,不需要证明就成立!!那些说月经,说无聊的人,你们反思下,你们的月经和无聊来了这么久,你可曾知道点什么,还是看到贴子就大喊。=======依旧华丽的分割线========还是那句话,虽然我看到了有价值的答案,但离我想要的结果还相距甚远我用一个问题提醒下你们,jdk的bin目录下有很多的可执行文件,你们可知道他们的用处?
    例如jdk1.6的bin目录下有这些个可执行文件
    appletviewer.exe
    apt.exe
    extcheck.exe
    HtmlConverter.exe
    idlj.exe
    jar.exe
    jarsigner.exe
    java-rmi.exe
    java.exe
    javac.exe
    javadoc.exe
    javah.exe
    javap.exe
    javaw.exe
    javaws.exe
    jconsole.exe
    jdb.exe
    jhat.exe
    jinfo.exe
    jmap.exe
    jps.exe
    jrunscript.exe
    jstack.exe
    jstat.exe
    jstatd.exe
    jvisualvm.exe
    keytool.exe
    kinit.exe
    klist.exe
    ktab.exe
    native2ascii.exe
    orbd.exe
    pack200.exe
    packager.exe
    policytool.exe
    rmic.exe
    rmid.exe
    rmiregistry.exe
    schemagen.exe
    serialver.exe
    servertool.exe
    tnameserv.exe
    unpack200.exe
    wsgen.exe
    wsimport.exe答案就在这里面找