黑马程序员技术交流社区
标题:
原数组是4个元素的,现在定义为2个元素的,为什么编译器...
[打印本页]
作者:
HM张博文
时间:
2013-6-14 11:44
标题:
原数组是4个元素的,现在定义为2个元素的,为什么编译器...
下面的程序怎么解释呢?x=new int[2];这句谁能解释清楚些?感谢了
public class Test {
public static void main(String[] args) {
int[] x = {1, 2, 3, 4};
int[] y = x;
x = new int[2]; //原数组是4个元素的,现在定义为2个元素的,为什么编译器不出错呢?
for (int i = 0; i < y.length; i++)
System.out.print(y[i] + " ");
}
}
复制代码
作者:
′х.|鰉❤耔
时间:
2013-6-14 12:19
那是因为你又给数组开辟了一个新天地哇,就是内存空间,所以指针就指向这个新的数组而不是指向老的数组了,所以就不会出错了。个人理解~
作者:
王靖远
时间:
2013-6-14 12:26
x指向了一个新的数组的内存地址。
作者:
陈新
时间:
2013-6-14 12:31
数组是固定长度的。。。一旦生成就没办法改变
x = new int[2];
这句话的意思是重新生成了一个数组对象长度为2
默认值为0
原来X的数组的值还在。。只不过你指向了一个新生成的数组。
作者:
shang1jk
时间:
2013-6-14 12:37
x只是一个引用,指向一个数组,而不是含有n个数组元素。
x = new int[2]; 这句把x改为对new int[2]数组的引用了。
作者:
沐有鱼丸
时间:
2013-6-14 13:45
java 中 只要使用new就会重新开辟一个新的内存空间,x = new int[2],指向了一个新的内存空间,所以不会报错
作者:
x.love
时间:
2013-6-14 15:21
很明显啊,x=new int[2] 中x又被重新赋值了啊
作者:
peerless2012
时间:
2013-6-14 16:12
x是一个int型的数组变量,本来指向初始化的数组,x=new一个数组对象之后,就把这个地址又传递给了变量x(x内部保存的实际是数组的地址)
作者:
张承富
时间:
2013-6-14 16:26
x只是一个引用类型,你重新赋值的时候,改变的不是x,而是x的指向,所以不会报错
作者:
zhouchao
时间:
2013-6-14 17:44
x = new int[2]这是新开辟了一个内存空间 x指向新的数组
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2