其实你的问题,主要是两个概念没有弄清楚。
1.关于局部变量和成员变量。
你在构造方法里面又从新创建了一个"局部变量i",这个“局部变量i”跟“成员变量i”不冲突,如果方法里面有了相同的变量,那么就不会去成员里面找变量了,也就是说,你无论在构造方法里面怎么操作i,都不会改变"成员变量i"
2.基本数据类型和引用数据类型。
①引用数据类型的变量存放的是这个对象的地址,举个例子
ArrayList<String> a=new ArrayList();
ArrayList<String> b=a;
b.add("abc");
System.out.println(a.get(0));
System.out.println(b.get(0));
两个的输出都会是abc
因为a,b两个变量存放的都是地址,而且a,b指向的是同一地址,所以尽管改动了a,但是b也会改动
②而基本数据类型存放的就是个数值,不是地址,
int c=6;
int d=c;
d=5;
System.out.println(c);//输出5
System.out.println(d);//输出6
当d=c时,其实是把c的值6给了d,d跟c以后再无瓜葛,无论d做怎样的改变,c永远都是6。 |