发布网友 发布时间:2022-04-20 10:11
共5个回答
热心网友 时间:2023-07-01 07:10
int[] b;
int[] a ={1,2,3,4};
b=a;
答:可以这样对数组进行赋值。
但是这种方式对数组进行赋值, 实际上是一种浅层复制.
也就是说,b实际上就是a,它们的内存地址值都是一样的, 当a发生改变,那么b也会跟着改变 。
为了真正意义上实现赋值,那么我们应该对数组进行深层复制。
深层复制后,无论a怎么改变,都不会影响到b。
具体代码如下
package core.com;控制台输出
[1, 2, 3, 4]
热心网友 时间:2023-07-01 07:10
int[] a在定义时,必须写成
int[] a = new int[]{};或者
int[] a = new int[0];或者
int[] a = null;也就是必须给a进行初始化,才能进行b = a;。
另外你为什么要b=a呢,那样两个不是都没有值了吗?应该a=b吧,如果a=b的话,就不需要对a初始化了,直接int[] a;就行
追问有时候一开始不知道数组长度,你的第二条int[] a=new int[0],定好长度就不好改了热心网友 时间:2023-07-01 07:11
还是用例子来说话吧:
比如
A a[];//声明一个数组引用,它指向的数组的元素必须是A型或者A的子类型。
a=new A[10];//创建一个A类型数组,并且让引用a指向这个数组。
A=new B[100];//创建一个B类型数组,并且让引用a指向这个数组,这个时候B必须是A的子类,否则编译不通过。
从上面看到,长度是在数组被创建时才指定的。数据引用本身只知道自己指向的是什么类型的数组。
实际上,java的数组和对象有着许多相似的地方,完全可以把数组当作对象来看。长度length不过是数组的一个属性,不同的数组对象此属性可相同也可以不同。
对象的引用之间,只要类型相同,就可以相互赋值,数组也是这样的。
2楼的真是肤浅,如果数组没用的话,java还保留它干嘛。在读取文件时还不是要经常用到数组来缓冲吗?
热心网友 时间:2023-07-01 07:11
可以 a的地址赋给b ;当然只是类型相同的才行。
热心网友 时间:2023-07-01 07:12
当然不行,类型不同。。。。。。。。。。。。。。。。。。