Java数组的赋值机制

数组的两种赋值的方式

引用传递,赋的是地址

  1. 数组的值是放在JVM的堆里,当定义一个数组时会在JVM里的栈中,放置堆的地址,来指向JVM对应的 堆 。
  2. 在对数组进行赋值的时候,默认情况下是引用传递,即把堆的地址给新的数组,让新数组指向该堆,其实使用的内存空间地址都是同于一个。
  3. 在对其中任何一个数组做修改的时候,另一个数组的值也会改变。
  4. 可以类比基本数据类型的赋值方式。
    一维数组内存 存在形式浅画一下
    二维数组内存存在形式
    在这里插入图片描述

值传递

数组的传递就需要按数组下标进行赋值,并创建一个新的数组空间

//数组 arr1
int[] arr1 = {1,2,3};
//数组arr2
int[] arr2 = new int[arr1.length];
//遍历 arr1 ,把每个元素拷贝到 arr2 对应的元素位置
for (int i = 0 ; i < arr1.length ; i ++){
	arr2[i] = arr1[i]; 
}

这样对数组 arr2 进行修改就不会影响 arr1 的值了。

数组的添加/扩容

看一下这个代码,可以对数组有跟进一步的了解。

  1. 原始数组使用静态分配 int[] arr = {1,2,3}
  2. 增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}
  3. 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?y/n

    public static void main(String[] args) {
        int[] arr = {1, 2, 3};
       do {
			//每次都创建一个新的数组空间,长度是之前数组长+1
           int[] arrNew = new int[arr.length + 1] ;
           
           System.out.println("请输入要添加的整数");
           Scanner scanner = new Scanner(System.in);
           int add = scanner.nextInt();
           arrNew[arrNew.length -1] = add ;
           //把原数组赋值给新数组
           for (int i = 0 ; i < arr.length ; i ++){
               arrNew[i] = arr[i] ;
           }
           //把新数组的地址给原数组,这里是引用传递
           arr = arrNew ;
           System.out.println("新数组的元素是");
           for (int i = 0 ; i < arr.length ; i ++){
               System.out.print( arr[i]);
           }
           System.out.println('\n');
           System.out.println("是否继续添加 'y/n' ");
           String next = scanner.next();
           if (next.charAt(0) == 'n')
               break;

       } while (2>1) ;

    }

感谢观看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值