Java中数组的复制的问题
2017-10-28 11:52
232 查看
在Java中,数组的比较有点麻烦,两个数组使用“==”和equals有什么不同呢?下面通过代码来进行说明。
首先创建一个数组a,对a赋值,然后创建数组b,直接令b=a,那么a==b的结果是否为true呢?答案是肯定的。
如下:
public class Test01 {
public static void main(String[] args) {
int[] a= {1,2,3};
int[] b = a;
System.out.println("a==b的结果为:"+(a == b));
}
}
a==b的结果为:true
为什么呢?这里我们尝试着打印一下a和b的地址,也就是分别调用hashCode()方法,代码如下:
a==b的结果为:true
a的地址:366712642
b的地址:366712642
---------------------------------------------------
由上可知,这里数组的复制是深复制,即a和b指向的是同一个地址,那么当a改变的时候b也会改变,b改变的时候a也会跟着改变,代码测试:
这是运行结果:
[1, 2, 3]
[1, 2, 3]
[1, 10, 3]
[1, 10, 3]
[1, 50, 3]
[1, 50, 3]
说明每一次改变都会引起对应的数组的改变
首先创建一个数组a,对a赋值,然后创建数组b,直接令b=a,那么a==b的结果是否为true呢?答案是肯定的。
如下:
public class Test01 {
public static void main(String[] args) {
int[] a= {1,2,3};
int[] b = a;
System.out.println("a==b的结果为:"+(a == b));
}
}
a==b的结果为:true
为什么呢?这里我们尝试着打印一下a和b的地址,也就是分别调用hashCode()方法,代码如下:
public class Test01 { public static void main(String[] args) { int[] a= {1,2,3}; int[] b = a; System.out.println("a==b的结果为:"+(a == b)); System.out.println("a的地址:"+a.hashCode()); System.out.println("b的地址:"+b.hashCode()); } }
a==b的结果为:true
a的地址:366712642
b的地址:366712642
---------------------------------------------------
由上可知,这里数组的复制是深复制,即a和b指向的是同一个地址,那么当a改变的时候b也会改变,b改变的时候a也会跟着改变,代码测试:
public class Test01 { public static void main(String[] args) { int[] a = { 1, 2, 3 }; int[] b = a; System.out.println(Arrays.toString(a)); System.out.println(Arrays.toString(b)); // 改变a的元素 a[1] = 10; System.out.println(Arrays.toString(a)); System.out.println(Arrays.toString(b)); // 改变b的元素 b[1] = 50; System.out.println(Arrays.toString(a)); System.out.println(Arrays.toString(b)); } }
这是运行结果:
[1, 2, 3]
[1, 2, 3]
[1, 10, 3]
[1, 10, 3]
[1, 50, 3]
[1, 50, 3]
说明每一次改变都会引起对应的数组的改变
相关文章推荐
- java数组复制的4种方式,java数组拷贝问题
- java数组复制问题
- Java对象数组初始化与NullPointerException问题
- 【原创】Java中数组的合并问题
- 有关JAVA数组初始化的问题和加入JAR包的问题
- java数组的复制
- JAVA里面关于byte数组和String之间的转换问题
- JAVA Object[]数组转化问题
- 本地方法处理java数组/引用问题/缓存jfieldID/jmethodID
- (java 必备知识之一) java 数组复制 System方法 arrayCopy 深入解析
- java 数组复制
- [Java] arraycopy 数组复制
- [Java] arraycopy 数组复制
- 第2章 Java编程基础——FAQ2.26 如何实现数组的复制?
- 读取纯真IP数据库QQwry.dat的java版程序报数组越界异常问题
- java中复制数组的方法
- 数组实现的约瑟夫问题(Java)
- Java对象数组初始化与NullPointerException问题
- 在Myeclipse中复制一个没有语法错误及其其他错误项目后再粘贴项目到工作区出现的语法报错问题 关键字:java & web project
- JAVA里面关于byte数组和String之间的转换问题