# Java中怎么声明和创建数组 ## 目录 1. [数组的基本概念](#数组的基本概念) 2. [一维数组的声明与创建](#一维数组的声明与创建) - [声明数组](#声明数组) - [创建数组](#创建数组) - [声明与创建合并](#声明与创建合并) 3. [多维数组的声明与创建](#多维数组的声明与创建) - [二维数组](#二维数组) - [不规则数组](#不规则数组) 4. [数组初始化](#数组初始化) - [静态初始化](#静态初始化) - [动态初始化](#动态初始化) 5. [数组的默认值](#数组的默认值) 6. [数组的常见操作](#数组的常见操作) - [访问元素](#访问元素) - [修改元素](#修改元素) - [获取数组长度](#获取数组长度) 7. [数组的注意事项](#数组的注意事项) 8. [总结](#总结) ## 数组的基本概念 数组是Java中最基本的数据结构之一,它用于存储**固定大小的同类型元素**的集合。数组中的每个元素可以通过索引(从0开始)来访问。数组在内存中是**连续存储**的,这使得数组的访问速度非常快。 ### 数组的特点 - **固定长度**:一旦创建,长度不可变 - **类型一致**:所有元素必须是相同数据类型 - **索引访问**:通过下标(从0开始)访问元素 - **效率高**:随机访问时间复杂度为O(1) ## 一维数组的声明与创建 ### 声明数组 在Java中声明数组有两种语法形式: ```java // 方式1:数据类型[] 数组名; int[] numbers; // 方式2:数据类型 数组名[]; String names[];
最佳实践:推荐使用第一种方式(
int[] numbers
),因为它更清楚地表明这是一个数组类型。
声明数组后,需要使用new
关键字创建数组并指定大小:
// 创建一个可以存储5个int值的数组 numbers = new int[5]; // 创建一个可以存储10个String对象的数组 names = new String[10];
数组创建后,JVM会: 1. 在堆内存中分配连续空间 2. 根据数组类型设置默认值(如int为0,对象为null)
可以在一行代码中完成声明和创建:
// 合并声明与创建 double[] prices = new double[20]; char[] letters = new char[26];
二维数组可以看作”数组的数组”,声明和创建方式如下:
// 声明二维数组 int[][] matrix; // 创建3行4列的二维数组 matrix = new int[3][4]; // 声明与创建合并 String[][] names = new String[2][3];
Java支持不规则数组(每行长度不同):
// 创建不规则数组 int[][] irregularArray = new int[3][]; irregularArray[0] = new int[2]; // 第一行2列 irregularArray[1] = new int[5]; // 第二行5列 irregularArray[2] = new int[3]; // 第三行3列
在声明数组时直接指定元素值:
// 一维数组静态初始化 int[] primes = {2, 3, 5, 7, 11}; // 二维数组静态初始化 int[][] magicSquare = { {16, 3, 2, 13}, {5, 10, 11, 8}, {9, 6, 7, 12} };
先创建数组,然后逐个赋值:
// 创建长度为5的数组 int[] squares = new int[5]; // 动态赋值 for (int i = 0; i < squares.length; i++) { squares[i] = (i + 1) * (i + 1); }
当数组创建后未初始化时,Java会根据元素类型设置默认值:
数据类型 | 默认值 |
---|---|
byte, short, int, long | 0 |
float, double | 0.0 |
char | ’\u0000’ |
boolean | false |
引用类型 | null |
示例:
boolean[] flags = new boolean[3]; System.out.println(flags[0]); // 输出false String[] words = new String[2]; System.out.println(words[1]); // 输出null
通过索引访问数组元素(注意:索引从0开始):
int[] nums = {10, 20, 30, 40}; System.out.println(nums[2]); // 输出30
通过索引修改数组元素:
String[] colors = {"Red", "Green", "Blue"}; colors[1] = "Yellow"; // 修改第二个元素
使用length
属性获取数组长度:
double[] temperatures = new double[365]; System.out.println(temperatures.length); // 输出365
数组越界:访问不存在的索引会抛出ArrayIndexOutOfBoundsException
int[] arr = new int[3]; System.out.println(arr[3]); // 运行时错误
空指针异常:未初始化的数组变量为null
int[] data; System.out.println(data[0]); // 编译错误
长度不可变:创建后不能改变数组大小
int[] fixed = new int[5]; fixed.length = 10; // 编译错误
性能考虑:
ArrayList
Java数组是基础且重要的数据结构,掌握其声明、创建和操作是Java开发的必备技能。关键点总结:
数据类型[] 变量名
声明数组new
关键字创建数组并指定大小{}
,动态初始化使用循环实际开发中,应根据需求选择合适的数据结构。对于需要动态调整大小的场景,建议使用Java集合框架中的ArrayList
等类。
附录:数组与ArrayList比较
特性 | 数组 | ArrayList |
---|---|---|
大小 | 固定 | 动态增长 |
性能 | 更快(直接内存访问) | 稍慢(需要方法调用) |
功能 | 基本操作 | 丰富的方法(add/remove等) |
泛型支持 | 有限 | 完全支持 |
存储类型 | 基本类型和对象 | 只能存储对象 |
”`
注:本文约1500字,要达到4650字需要进一步扩展每个章节的内容,添加更多示例、应用场景、性能分析、底层实现原理等内容。如需完整长文,建议: 1. 增加”数组的内存模型”章节 2. 添加”数组的常见算法”(排序、查找等) 3. 扩展”数组工具类Arrays的使用” 4. 增加”数组在实际项目中的应用案例”
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。