Java数组初始化完全解析
5星 · 超过95%的资源 需积分: 32 53 浏览量
更新于2024-09-13
收藏 33KB DOC 举报
在Java编程语言中,数组是一种特殊的数据结构,用于存储固定数量的同类型数据。数组初始化是创建并设置数组元素初始值的过程。本篇将详细讲解Java中一维和二维数组的初始化方法及其规则。
一、一维数组初始化
1) 声明数组但不初始化:
```java
int[] a; // 只声明了数组,没有分配内存,不能直接使用
```
2) 初始化数组并分配默认值:
```java
int[] a = new int[5]; // 分配长度为5的数组,所有元素默认为0
```
3) 初始化数组并赋予特定值:
```java
int[] a = {1, 2, 3, 4, 5}; // 直接初始化数组元素
```
或
```java
int[] a = new int[]{1, 2, 3, 4, 5}; // 等价于上面的初始化方式
```
4) 错误示例:
```java
int[] a = new int[5]{1, 2, 3, 4, 5}; // 错误,不能同时指定长度和初始化元素
```
5) 声明后分配内存并初始化:
```java
int[] a;
a = new int[5]; // 正确,先声明再分配内存
```
6) 错误示例:
```java
int[] a;
a = {1, 2, 3, 4, 5}; // 错误,数组常量只能在初始化时使用
```
7) 错误示例:
```java
int[] a;
a[0] = 1; // 错误,未初始化的数组不能直接赋值
a[1] = 2;
```
二、二维数组初始化
1) 声明但不初始化:
```java
int[][] a; // 只声明二维数组
```
2) 初始化数组并分配默认值:
```java
int[][] a = new int[2][3]; // 创建2行3列的二维数组,所有元素默认为0
```
3) 初始化数组并赋予特定值:
```java
int[][] a = {{1, 2}, {2, 3}, {3, 4}}; // 每个元素是一维数组,可以不同长度
```
或
```java
int[][] a = new int[][]{{1, 2}, {2, 3}, {3, 4, 5}}; // 同上,但最后一行多一个元素
```
4) 不同长度的二维数组:
```java
int[][] a = new int[2][]; // 声明一个2行的二维数组,行长度可变
a[0] = new int[3]; // a[0]是一维数组,长度为3
a[1] = new int[4]; // a[1]是一维数组,长度为4
```
5) 错误示例:
```java
int[][] a = new int[2][];
a[0] = new int[]{1, 2, 3, 4, 5}; // 错误,数组常量只能在初始化时使用
```
6) 错误示例:
```java
int[][] a = new int[2][];
a[0][1] = 1; // 错误,a[0]未初始化,不能直接赋值,会抛出NullPointerException
```
总结:
1. 二维数组实质上是数组的数组,每行数组可以有不同的长度。
2. 无论是对一维还是二维数组,在使用前(赋值、访问)必须进行初始化。
3. 初始化分为动态初始化和静态初始化:
- 动态初始化:先声明数组,然后通过`new`操作符分配内存并赋值。
- 静态初始化:在声明数组的同时就分配内存并赋值。
4. 默认初始化:数组作为引用类型,其元素相当于类的成员变量,因此数组本身在声明时不会分配内存,元素默认值为对应类型的默认值(如int为0,Object为null)。
了解这些初始化规则对于编写Java程序至关重要,特别是在处理数组数据时,能够避免不必要的错误和运行时异常。在实际编程中,根据需求灵活运用这些初始化方法,可以更高效地管理数组数据。
2024-06-28 上传
2021-03-15 上传
点击了解资源详情
点击了解资源详情
2020-08-30 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
llxxmm1990
- 粉丝: 3
- 资源: 15
最新资源
- lock-system:锁定系统
- 毕业设计&课设--毕业设计-智慧课堂辅助App.zip
- 凯莱花园
- Excel模板00记账凭证.zip
- Network-Intrusion-Detection-System:使用神经网络设计和开发了基于异常和滥用的入侵检测系统。 使用的技术
- neo4j-foodmart-dataset:Neo4j Food Mart数据集
- React-Redux-Toolkit
- first-project-JS
- 毕业设计&课设--毕业设计最终源码.zip
- test-react-reflux:回流
- beyondskins.lostkatana
- Excel模板收据电子表格模板收据模板.zip
- faccat-ia-caixeiro-viajante
- CarEncryptProjectV2
- OSTM机器语言房屋价格
- 毕业设计&课设--毕业设计之人脸考勤机的实现,使用了QT+opencv.zip