
java 数组的创建与分析
发布日期:2021-05-14 00:01:39
浏览次数:22
分类:精选文章
本文共 1817 字,大约阅读时间需要 6 分钟。
Java数组的创建与引用传递
一、数组的创建
数组在Java中是一个非常基础的数据结构,常见于存储一系列的
相同类型的值。数组的创建方式可以分为静态初始化和动态初始化两种。1. 静态初始化
静态初始化是指在定义数组的同时为其分配内存并赋值。这种方式最为直接且简便。常用的写法有以下两种:
int[] arr = new int[]{3, 9, 8}; // 或者int[] arr = {3, 9, 8};
在这里,new int[] {3, 9, 8} 这部分表示先分配一个长度为3的整数数组内存,并将数组元素初始化为3、9、8。而使用大括号 {3, 9, 8} 的方法也是一个更简洁的写法。
2. 动态初始化
动态初始化则是在声明数组之后,通过新建操作符 new 分配内存, Url{但是这一动作再加上手动赋值数组元素的步骤。具体方式有以下两个:
int[] arr2 = new int[]{1, 2, 3}; // 静态初始化的另一种写法int[] arr3 = new int[3]; // 动态初始化第一种方式arr3[0] = 1;arr3[1] = 2;arr3[2] = 3;
需要注意的是,在Java中 declarations like int a[5];
是不允许的,因为默认数组长度无法指定。这一点与Java语言规范一致。
2. 数组的引用传递
当涉及到数组的引用传递时,我们需要理解其内存空间的开辟情况。
1. 内存空间的开辟
使用以下程序可以直观地观察到这一点:
public class ArrayDemo { public static void main(String args[]) { int data[] = null; // 引用类型初始化为null data = new int[3]; // 分配长度为3的整数数组 data[0] = 10; // 赋值第一个元素 data[1] = 20; // 赋值第二个元素 data[2] = 30; // 赋值第三个元素 }}
在程序运行时,可以看到int data[]
首先指向一个null引用。然后调用data = new int[3];
,这会在堆内分配一个可容纳3个整数的数组。随后,通过data[0] = 10;
等语句对数组中的每个元素进行赋值。
2. 引用传递的图解
以下程序展示了数组引用传递的实际效果:
public class ArrayDemo { public static void main(String args[]) { int data[] = null; // 声明一个int数组引用 data = new int[3]; // 分配一个长度为3的int数组 data[0] = 10; // 给数组的第一个位置赋值 data[1] = 20; // 给数组的第二个位置赋值 data[2] = 30; // 给数组的第三个位置赋值 int temp[] = null; // 声称一个新的int数组引用 temp = data; // 将temp引用指向data数组 temp[0] = 99; // 修改temp数组的第一个位置 for (int i = 0; i < temp.length; i++) { System.out.println(data[i]); // 依然打印data数组的内容 } }}
在这个程序中,temp
引用被赋值为data
数组的引用。由于数组在内存中存储的实际上是数据的值,因此,对temp
[0]进行赋值会反映到data
数组中。最终,数据在data
数组和temp
数组中是相同的。
注意事项
根据Java语言规范,数组在Java中不能以长度声明(如int a[5];这样的写法是不合法的)。
如果需要进一步学习数组的使用,可以参考以下文章中的详细解释:
发表评论
最新留言
不错!
[***.144.177.141]2025年05月07日 16时03分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
live和on的区别
2025-04-11
li下的ul----多级列表
2025-04-11
LLM;超越记忆《第 2 部分 》
2025-04-11
LLVM 简介-ChatGPT4o作答
2025-04-11
localhost:5000在MacOS V12(蒙特利)中不可用
2025-04-11
localStorage使用总结
2025-04-11
Lock 锁底层实现
2025-04-11
Lock和synchronized区别(以及Lock的使用)
2025-04-11
Log4j2 中format增加自定义的参数
2025-04-11
log4j补充
2025-04-11
Log4j输出到控制台成功,写入文件失败 - Log4j和commons log的整合
2025-04-11
logback.xml 配置详解(1)
2025-04-11
logback配置文件详解
2025-04-11
logging.config报错FileNotFoundError
2025-04-11
Logstash input jdbc连接数据库
2025-04-11
logstash mysql 准实时同步到 elasticsearch
2025-04-11
Logstash是什么,干什么用的?带你详细认识
2025-04-11
Logstash简介和部署---ElasticStack(ELK)工作笔记019
2025-04-11
logstash设置开机自启动
2025-04-11
logstash详解
2025-04-11