public class C {
private int[] arr=new int[4];

public static void main(String[] args) {
new C().run();
} public void setArr(int[] arr) {
this.arr = arr;
}
public void getArr() {
for(int i=0;i<4;i++){
System.out.println(arr[i]);
}
}
public void run() {
int[] a= {1,2,3,4};
new C().setArr(a);
new C().getArr(); }}为什么输出都是0?????

解决方案 »

  1.   

    new C().setArr(a);
    new C().getArr();
    你 getArr是新new出来的,不是上面那个,上面那个赋值没用的!
    你要么改成private static int[] arr = new int[4];
    要么改成
    C c = new C();
    c.setArr(a);;
    c.getArr();
      

  2.   


    new C().setArr(a);
    new C().getArr();上面创建了两个不同的对象,你改变的只是第一个对象的arr属性的值,然后打印的是第二个对象的arr数组里面的值,改成下面试试:setArr(a);
    getArr();
      

  3.   

    new C()
    new两次,已经是两个不同对象了。好比你盖了一个房子,在这个房子里放了点家具。然后你又盖了个房子,想在这个房子里找刚才放的家具
      

  4.   

    两个new 访问的都不是一个对象啊亲。。