int a = 500;
Object b;
b = a;
Object c;
c = b;
c = 900;
System.out.println(a);
System.out.println(b);
System.out.println(c);
输出结果是好多。。求解释、。

解决方案 »

  1.   

    我试过了只输出3个数。如下:
    500
    500
    900
    public static void main(String[] args) {
    int a = 500;
    Object b;
    b = a;
    Object c;
    c = b;
    c = 900;
    System.out.println(a);
    System.out.println(b);
    System.out.println(c); }
      

  2.   

    自动装箱,
     Object b;
     b = a;
     Object c;
     c = b;
    1.b和c都是a自动装箱后对象的引用,
    c = 900;
    2.Integer对象是final修饰的,所以c = 900;会将900自动装箱。
    因此最后打印的结果为500,500,900
    这是我的理解[
      

  3.   


    能解释一下吗?
    类型为Object的变量指向任意类型的对象.
    a:你初始赋值为500;
    b:引用了a ,值为500;
    c:虽引用了b后为500,但被其后赋值的900覆盖。
    然后就输出:
    500
    500
    900
      

  4.   

    public class Test {
    public static void main(String[] args) {
    int a = 500;
    Object b;
    b = a;//父类的引用引用了一个子类的对象,编译器优化了
          //将会创建一个Integer对象其值为500,b指向这个对象
    System.out.println(b.getClass().getName());//java.lang.Integer
    Object c;
    c = b;//c指向b指向的对象
    System.out.println(c.getClass().getName());//java.lang.Integer
    c = 900;//编译器优化,创建一个Integer对象其值为900,c指向这个对象
    System.out.println(c.getClass().getName());//java.lang.Integer
    System.out.println(a);
    System.out.println(b);
    System.out.println(c);
    }
    }