系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
学习日记之Java数组
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
记录对Java数组的学习。
提示:以下是本篇文章正文内容,下面案例可供参考
一、数组是什么?
数组是一次性声明大量的用来存储数据的变量。要存储的数据通常是同类型的数据。比如考试成绩。
数组(array)是一种用于存储大量相同类型数据的存储模型
二、数组的定义格式
格式一
代码如下(示例):数据类型 [] 变量名
格式二
代码如下(示例):数据类型 变量名[]
例如
格式一
int[] arr
格式二
int arr[]
两个格式使用时没有区别,读时有区别
三、数组的初始化
Java中的数组必须先初始化,然后才能使用
初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值
动态初始化:初始化时只指定长度,由系统为数组分配初始值
静态初始化:初始化指定每个数组元素的初始值,由系统决定数组长度
1.动态初始化
格式: 数据类型[] 变量名 = new 数据类型[数组长度];
int[] arr= new int[3];
代码如下(示例):
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr= new int[3];
/*
左边
int: 说明数据类型
[]: 说明为数组
arr: 为变量名称
右边
new: 为数组申请内存空间
int: 说明数组中的数据类型
[]: 说明为数组
3: 说明数组里的元素个数
*/
}
2.静态初始化
格式:数据类型[] 变量名 = new 数据类型[]{数据1,数据2,数据3,…};
int[] arr = new int[] {1,2,3};
简化格式: 数据类型[] 变量名 = {数据1,数据2,数据3,…};
int[] arr = {1,2,3};
代码如下(示例):
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义数组
int[] arr = {1,2,3};
//输出数组名
System.out.println(arr);
//输出元素
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
[I@3ac3fd8b
1
2
3
四、数组的元素访问
1.元素访问
格式:数组名[索引]
arr[1]
通过索引访问
数组名[索引]等同于变量名,是一种特殊的变量名
索引从0开始
索引连续
索引逐一递增 1
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义数组
int[] arr = {1,2,3};
//输出数组名
System.out.println(arr);
//输出元素
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
2.遍历
public static void main(String[] args) {
// TODO Auto-generated method stub
//定义数组
int[] arr = {1,2,3};
//输出数组名
System.out.println(arr);
//输出元素
for (int x = 0;x<3;x++) {
System.out.println(arr[x]);
}
}
[I@3ac3fd8b
1
2
3
五、内存分配
这部分建议观看
https://www.bilibili.com/video/BV18J411W7cE?p=64&vd_source=59925b910137d9ecd77e270d514b862b
图片是截取该视频主要是辅助我来记忆
1.单个数组内存图
左边进入栈内存
右边进入堆内存
2.多个数组内存图
3.多个数组内存指向相同内存图
六、数组常见的两个问题
1.索引越界
访问了数组中不存在的索引对应的元素,造成索引越界问题
public static void main(String[] args) {
int [] arr = new int[3];
System.out.println(arr[3]);
}
ArrayIndexOutOfBoundsException 错误
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at myarray/myarray.defaultDemo.main(defaultDemo.java:8)
2.空指针异常
访问的数组已经不再指向堆内存的数据,造成空指针异常
public static void main(String[] args) {
int [] arr = new int[3];
arr = null;
System.out.println(arr[2]);
}
NullPointerException错误
Exception in thread "main" java.lang.NullPointerException: Cannot load from int array because "arr" is null
at myarray/myarray.defaultDemo.main(defaultDemo.java:9)
总结
对Java数组简单学习
数组的定义 初始化 元素访问 内存分配 常见报错