Java数组的赋值机制
数组的两种赋值的方式
引用传递,赋的是地址
- 数组的值是放在JVM的堆里,当定义一个数组时会在JVM里的栈中,放置堆的地址,来指向JVM对应的 堆 。
- 在对数组进行赋值的时候,默认情况下是引用传递,即把堆的地址给新的数组,让新数组指向该堆,其实使用的内存空间地址都是同于一个。
- 在对其中任何一个数组做修改的时候,另一个数组的值也会改变。
- 可以类比基本数据类型的赋值方式。
一维数组内存 存在形式
二维数组内存存在形式
值传递
数组的传递就需要按数组下标进行赋值,并创建一个新的数组空间
//数组 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 的值了。
数组的添加/扩容
看一下这个代码,可以对数组有跟进一步的了解。
- 原始数组使用静态分配 int[] arr = {1,2,3}
- 增加的元素 4,直接放在数组的最后 arr = {1,2,3,4}
- 用户可以通过如下方法来决定是否继续添加,添加成功,是否继续?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.首先来举个例子说明一下变量赋值的机制,其实就是简单地值拷贝. public class arraytest {p ...
- Java数组变量赋值
一.问题:Java数组变量赋值是值传递还是址传递? 1.1 结论:java变量赋值是址传递 1.2 验证过程: public class Test {public static void main ...
- java数组初始化赋值_数组初始化与赋值
数组初始化与赋值 2009-09-17 如果有几个object,他们的类型是相同的.创建它们的时候,它们可能在堆里的各个散落位置产生,这样的话,存取效率就会不高.既然它们的类型是相同的,那么我们可以用 ...
- java 数组批量赋值_JAVA中数组赋值问题
好久没有编程了,今天突然想写点程序,谁知道这个数组的赋值问题给难住了,忘了以前老师说过的,测试程序调用处理类时候,在主程序运行的空间之外又开辟了一块空间,等处理类处理完了后,在返回到主程序的运行空间. ...
- java 数组a赋值给数组b_java编程将a,b数组中不同的数字保存到一个新的数组中
import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; public class NumDemo { ...
- java数组如何赋值_java数组如何赋值
Java 语言中数组必须先初始化,然后才可以使用.所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素赋初始值. 初始化数组有以下 3 种方式: 1)使用 new 指定数组大小后进行初始化 ...
- java数组遍历赋值,最终入职阿里
Part 1消息队列 介绍消息队列技术的背景,包括使用场景和消息队列的功能特点,并设计了一个简单的消息队列. 1.1 系统间通信技术介绍 1.2 为何要用消息队列 1.3 消息队列的功能特点 1.4 ...
- java数组初始化赋值_Java数组的三种初始化方式
Java语言中数组必须先初始化,然后才可以使用.所谓初始化就是为数组的数组元素分配内存空间,并为每个数组元素附初始值. 注意:数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值: 基本数 ...
- java 数组 未赋值 输出_java数组输出问题
代码如下:publicclassStudent{privatedoublestudentnumber;privateStringname;privatedoubleage;privateStrings ...
最新文章
- 几种在Linux下查询外网IP的办法
- 对齐方式有那些_字节对齐不慎引发的挂死问题
- HEU 2036 Paths on a Grid
- matplotlib.pyplot.subplot
- idea 配置java版本号_IDEA-Maven项目的jdk版本设置方法
- OracleERP-采购管理
- golang 数组随机排序
- 关于机器学习模型的评估方法
- 第十一章:项目风险管理 - (11.6 实施风险应对)
- 《浊酒一杯忆往昔, 似水流年探追忆》
- Zotero 5.0 + 坚果云同步盘 + papership 配置教程
- 教你微信对接图灵机器人
- python 最新版本(V3.8.8_32bit)安装教程
- python视觉识别线条_简单车道线识别
- 1.MySQL,JDBC
- 移动端测试=== adb 无线连接手机
- Unity3D 内存 释放
- qemu学习之添加一个新machine
- c语言日期计算器程序代码,旧计算器(C语言代码)
- 作团队感悟(9)----该对谁负责