为了账号安全,请及时绑定邮箱和手机立即绑定

定义并赋值了二维数组就不用给这个数组分配空间了吗

int [][] num={{1,2,3},{4,5,6}};

num=new int[2][3];  //这句应不应该有 为什么呢?

正在回答

2 回答

你这样写,num已经变成下面那个新的空的数组了!内存里 有上面两个数组,而num从指向上面一个,变成指向下面一个!能明白吗?

1 回复 有任何疑惑可以回复我~
#1

素漪芊贳 提问者

非常感谢!
2015-09-16 回复 有任何疑惑可以回复我~
#2

素漪芊贳 提问者

上面的那种写法 不用new吗 new是给数组声明并分配空间的不是吗
2015-09-16 回复 有任何疑惑可以回复我~
#3

无动于衷 回复 素漪芊贳 提问者

是这样的,但num只是一个引用!num不代表一个实实在在的数组, int [][] num={{1,2,3},{4,5,6}};内存(堆)中开辟了部分内存,存了这个数组;而num只是这个数组取的一个名字,并且这个名字指向了这个数组。当你使用时,int a = num[1][1];会根据名字去找堆中的这个数组,然后找到数据。 你定义的两个数组都是存在的,但num指向第二个数组。第一个数组你已经拿不到了,你也无法使用,java之后会回收这部分内存。
2015-09-17 回复 有任何疑惑可以回复我~
#4

无动于衷 回复 素漪芊贳 提问者

其实我也是个新手,可能说的不是很清楚,但差不多是这个意思。
2015-09-17 回复 有任何疑惑可以回复我~
查看1条回复

上面那个是一个数组,下面是一个新的空的数组

2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

定义并赋值了二维数组就不用给这个数组分配空间了吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信