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

关于数组赋值问题,为什么数组A赋值给数组B后,数组B改变,A也跟着改变

关于数组赋值问题,为什么数组A赋值给数组B后,数组B改变,A也跟着改变

t峰01 2016-03-03 15:22:46
如题,代码如下:package hello;public class haha{ public static void main(String args[]){ int[] a1 = { 1, 2, 3, 4, 5 };   int[] a2;         a2 = a1;        for(int i = 0; i < a2.length; i++)   a2[i]++; for(int i = 0; i < a1.length; i++)          System.out.println( "a1[" + i + "] = " + a1[i]);      }}输出a1[0] = 2a1[1] = 3a1[2] = 4a1[3] = 5a1[4] = 6
查看完整描述

4 回答

已采纳
?
计量赵子龙

TA贡献9条经验 获得超14个赞

a2 = a1;该语句实则是把a1的地址给了a2,所以给a2赋值相当于对a1也操作了;java中取消了指针的概念,但是在内存中归根结底,两个数组的地址相同了。如果你想赋值单数还不改变量的话,可以创建一个临时数组。如有疑问可追问,如满意望采纳,谢谢。

查看完整回答
2 反对 回复 2016-03-03
  • t峰01
    t峰01
    你好,我想把a1数组的元素搬到 a2中去,但是又不会影响到a1(无论a2如何改变) a1赋值给 临时数组 再赋值给a2?这样行不通啊,具体如何操作啊 谢谢
  • skyward
    skyward
    重新new一片内存空间,比如int[] a = new int[5]; 然后用一个for循环将要复制的数组中每个元素值赋值给新建的数组,也可以调用Arrays.copyOf方法复制
  • 计量赵子龙
    计量赵子龙
    java中定义数组的标准格式是 数据类型[] 数组名 = new 数据类型[数组大小];例如: int[] a = new int[5]; 使用这种方法可以避免好多问题,不足之处就是需要逐个初始化
?
相忘于江湖494

TA贡献19条经验 获得超10个赞

打个比方数值就是苹果,你只是把苹果地址给了B,而不是给B有创造了苹果,所以只要苹果动了,所以A和B都会改变

查看完整回答
2 反对 回复 2016-03-03
?
一条小咸鱼

TA贡献457条经验 获得超255个赞

import java.util.Arrays;

public class HelloWorld {
    public static void main(String[] args) {

        int[] arry1 = { 1, 2, 3 };
        int[] arry2 = arry1.clone();
        arry2[2] = 1;
        System.out.println(Arrays.toString(arry1));
        System.out.println(Arrays.toString(arry2));
    }
}


查看完整回答
反对 回复 2016-03-03
?
赵志广

TA贡献53条经验 获得超17个赞

只是把引用给了B,他们对应的还是一个数组

查看完整回答
反对 回复 2016-03-03
  • 4 回答
  • 0 关注
  • 2930 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信