Java数组

系列文章目录

提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
学习日记之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数组简单学习
数组的定义 初始化 元素访问 内存分配 常见报错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值