数组的两种赋值的方式

引用传递,赋的是地址

  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 {//每次都创建一个新的数组空间,长度是之前数组长+1int[] 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) ;}

感谢观看

Java数组的赋值机制相关推荐

  1. 数组的赋值机制和赋值原理

    对于数组的赋值机制,很多小伙伴们弄不懂其中原理,下面我来简单说一说数组的赋值机制. 1.首先来举个例子说明一下变量赋值的机制,其实就是简单地值拷贝. public class arraytest {p ...

  2. Java数组变量赋值

    一.问题:Java数组变量赋值是值传递还是址传递? 1.1 结论:java变量赋值是址传递 1.2 验证过程: ​ public class Test {public static void main ...

  3. java数组初始化赋值_数组初始化与赋值

    数组初始化与赋值 2009-09-17 如果有几个object,他们的类型是相同的.创建它们的时候,它们可能在堆里的各个散落位置产生,这样的话,存取效率就会不高.既然它们的类型是相同的,那么我们可以用 ...

  4. java 数组批量赋值_JAVA中数组赋值问题

    好久没有编程了,今天突然想写点程序,谁知道这个数组的赋值问题给难住了,忘了以前老师说过的,测试程序调用处理类时候,在主程序运行的空间之外又开辟了一块空间,等处理类处理完了后,在返回到主程序的运行空间. ...

  5. java 数组a赋值给数组b_java编程将a,b数组中不同的数字保存到一个新的数组中

    import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; public class NumDemo { ...

  6. java数组如何赋值_java数组如何赋值

    Java 语言中数组必须先初始化,然后才可以使用.所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值. 初始化数组有以下 3 种方式: 1)使用 new 指定数组大小后进行初始化 ...

  7. java数组遍历赋值,最终入职阿里

    Part 1消息队列 介绍消息队列技术的背景,包括使用场景和消息队列的功能特点,并设计了一个简单的消息队列. 1.1 系统间通信技术介绍 1.2 为何要用消息队列 1.3 消息队列的功能特点 1.4 ...

  8. java数组初始化赋值_Java数组的三种初始化方式

    Java语言中数组必须先初始化,然后才可以使用.所谓初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值. 注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值: 基本数 ...

  9. java 数组 未赋值 输出_java数组输出问题

    代码如下:publicclassStudent{privatedoublestudentnumber;privateStringname;privatedoubleage;privateStrings ...

最新文章

  1. 几种在Linux下查询外网IP的办法
  2. 对齐方式有那些_字节对齐不慎引发的挂死问题
  3. HEU 2036 Paths on a Grid
  4. matplotlib.pyplot.subplot
  5. idea 配置java版本号_IDEA-Maven项目的jdk版本设置方法
  6. OracleERP-采购管理
  7. golang 数组随机排序
  8. 关于机器学习模型的评估方法
  9. 第十一章:项目风险管理 - (11.6 实施风险应对)
  10. 《浊酒一杯忆往昔, 似水流年探追忆》
  11. Zotero 5.0 + 坚果云同步盘 + papership 配置教程
  12. 教你微信对接图灵机器人
  13. python 最新版本(V3.8.8_32bit)安装教程
  14. python视觉识别线条_简单车道线识别
  15. 1.MySQL,JDBC
  16. 移动端测试=== adb 无线连接手机
  17. Unity3D 内存 释放
  18. qemu学习之添加一个新machine
  19. c语言日期计算器程序代码,旧计算器(C语言代码)
  20. 作团队感悟(9)----该对谁负责

热门文章

  1. 根据 基因名、bed 文件的基因位置,提取 DNA 序列 bedtools
  2. HDU 考试排名 题解 by Aze
  3. YOLOFastestv2 训练自己的数据集---辛酸仨小时
  4. 小米物联网世界第一_外媒:小米物联网智能家用产品全球销量超千万
  5. php 模拟post提交请求,调用接口
  6. mysql. 表和视图同名_MySQL基础(4) | 视图
  7. 2011暑期职业规划与领导力-微博商业计划
  8. 慕课JAVA重温---类、对象、封装、继承、多态
  9. 【2017年11月27日】CSDN博客更新周报
  10. 招聘微码开发工程师---华为三康技术有限公司