Integer i1= new Integer(123);
Integer i2;System.out.println(i1);i2=i1;System.out.println(i2);输出:
123
123我想知道如何改变i2的值得时候i1的值也跟着改变?

解决方案 »

  1.   

    Integer i1= new Integer(123); 
    Integer i2; System.out.println(i1); i2=i1; 
    i2=3;
    System.out.println(i2); 之后输出i1就是3
      

  2.   


    public class Test {
    public static void main(String[] args) {
    Dog a = new Dog();
    Dog b;

    System.out.println(a.a);

    b = a;

    b.a = 5;

    System.out.println(a.a);
    System.out.println(b.a);
    }
    }class Dog {
    public int a = 3;
    }
    这样却可以
      

  3.   

    当你i2=3的时候,已经指向另外一个对象了。此时你并没有改变它的值,Java autoboxing 特性
      

  4.   

    你怎么对i2重新赋值的,
    如果是i2 = new Integer(3);是肯定不行的
      

  5.   

    没有找到Integer类有改变对象值的方法,即Integer对象一旦创建则无法再更改代表的值。
    所以楼主那样的效果肯定是不能实现了。
    要改变i1的值只能在new一个Integer对象
      

  6.   

    还是有办法的import java.lang.reflect.Field;public class Test {    public static void main(String[] args) throws NoSuchFieldException, IllegalArgumentException, IllegalAccessException {
            Integer i = 5;
            Field field = i.getClass().getDeclaredField("value");
            field.setAccessible(true);
            field.setInt(i, 6);
            System.out.println(i);
        }
    }
      

  7.   

    不太可能,i2指向i1地址,而i才指向值    ,所以不可能的,只能clone
      

  8.   

    基本类型的封装类和String类都是final的
    都拥有不可变性
      

  9.   

    用数组吧,应该可以
    Integer[] i1= {123}; 
    Integer[] i2; System.out.println(i1); i2=i1; System.out.println(i2); 输出: 
    123 
    123 
      

  10.   

         Integer[] i1= {123}; 
         Integer[] i2;      System.out.println(i1);      i2=i1; 
        
         System.out.println(i1[0]); 
         System.out.println(i2[0]); 
        
         i2[0] = 5;
        
         System.out.println(i1[0]); 
         System.out.println(i2[0]); 
    [Ljava.lang.Integer;@5224ee
    123
    123
    5
    5
    数组来解决楼主的问题确实可以
    可以这样说:
    就是说基本数据类型被创建,与非基本数据类型不同的就是传值是值传递??