java和简单的问题。。。。。。。急!!!在先等!!!!
int a[]={100,200,300};
int b[]={10,11,12,13,14,15,16};
b=a;
System.out.println("数组a:"+a[0]+","+a[1]+","+a[2]);
b[0]=123456;
System.out.println("数组a:"+a[0]+","+a[1]+","+a[2]);
System.out.println("数组b:"+b[0]+","+b[1]+","+b[2]);
System.out.println("数组b的长度:"+b.length);
int d=10;
int e=20;
e=d;
e=30;
System.out.println(d);
System.out.println(e);
数组a:100,200,300
数组a:123456,200,300
数组b:123456,200,300
数组b的长度:3
d=10
e=30
为什么把b[0]=123456;a[0]的值也发生了变化?
数组有这种情况,非数组却没有变化呢?
------解决方案--------------------1. b=a,使得b和a指向的是同一个数组引用.
2. 要想改b时不改a,建议使用b=a.clone()
------解决方案--------------------
------解决方案--------------------Integer是int的包装类喵~~`
基本类型和基本类型的包装类是有特殊处理的,其实包装类这么做,也是为了兼容基本类型的语法.
不然哪儿还叫"包装"啊喵~~`
------解决方案--------------------int a[]={100,200,300};
int b[]={10,11,12,13,14,15,16};
b=a; //让B对象也指向A对象所指向的数组
System.out.println("数组a:"+a[0]+","+a[1]+","+a[2]);
b[0]=123456;
System.out.println("数组a:"+a[0]+","+a[1]+","+a[2]);
System.out.println("数组b:"+b[0]+","+b[1]+","+b[2]);
System.out.println("数组b的长度:"+b.length);
a----->a数组
b----->B数组
b=a;
即:
a----->a数组
b----->a数组
b[0]=123456;
所以A对象所指向的数组也会变的
int是分配在栈空间里
内存布局
int d=10; -------d:10
int e=20; -----e:20
e=d; ------d:10
e=30; ----e:30
他们是互不干预的