Java中的数组(Array)

1.什么是数组

数组(array)是一种用于存储多个相同类型数据的存储模型

2.数组定义格式

第一种:数据类型[] 数组名

​示例:

int[] arr;        
double[] arr;      
char[] arr;

第二种:数据类型 数组名[]

示例:

int arr[];
double arr[];
char arr[];

3.数组初始化

3.1概述:Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值

3.2动态初始化

初始化时只指定数组长度,由系统为数组分配初始值

格式:数据类型 [ ] 变量名 = new 数据类型[数组长度];

范例: int [ ] arr = new int[3];

3.3静态初始化

初始化时指定每个数组元素的初始值,由系统决定数组长度

格式:数据类型 [ ] 变量名 = new 数据类型[ ] { 数据1 ,数据2 ,数据3 ,……} ;

范例: int [ ] arr = new int[ ] { 1, 2 , 3 } ;

简化格式:数据类型 [ ] 变量名 = { 数据1 ,数据2 ,数据3 ,……} ;

范例: int [ ] arr = { 1, 2 , 3 } ;

3.4数组元素访问

什么是索引?

每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。

​这个自动编号称为数组索引(index),可以通过数组的索引访问到数组中的元素。

索引是数组中数据的编号方式

作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名

特征①:索引从0开始

特征②:索引是连续的

特征③:索引逐一增加,每次加1

访问数组元素格式:数组名[索引];

示例:

public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];//输出数组名System.out.println(arr); //[I@880ec60(地址)//输出数组中的元素System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);}
}

4.Java中的内存分配

栈内存:存储局部变量

定义在方法中的变量,例如:arr

使用完毕,立即消失

堆内存:存储new出来的内容(实体,对象)

数组在初始化时,会为存储空间添加默认值

整数:0

浮点数:0.0

布尔:false

字符:空字符

引用数据类型:null

每一个new出来的东西都有一个地址值

使用完毕,会在垃圾回收器空闲时被回收

5.数组操作的两个常见小问题

5.1索引越界异常(ArrayIndexOutOfBoundsException)

public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];System.out.println(arr[3]);}
}

数组长度为3,索引范围是0~2,但是我们却访问了一个3的索引。

程序运行后,将会抛出ArrayIndexOutOfBoundsException 数组越界异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

解决方案

将错误的索引修改为正确的索引范围即可!

5.2空指针异常(NullPointerException)

public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];//把null赋值给数组arr = null;System.out.println(arr[0]);}
}

arr = null 这行代码,意味着变量arr将不会在保存数组的内存地址,也就不允许再操作数组了,因此运行的时候会抛出 NullPointerException 空指针异常。在开发中,数组的越界异常是不能出现的,一旦出现了,就必须要修改我们编写的代码。

解决方案

给数组一个真正的堆内存空间引用即可!

6.数组的输出

  • for循环遍历输出

  • 直接以数组名输出(只有char型数组可以输出内容,其他类型的输出的是内存地址)

public static void main(String[] args) {int[] arr = new int[]{1,4,7};char[] brr = new char[]{'1','2','3'};String[] crr = new String[]{"1","2","3"};System.out.println(arr);System.out.println(brr);System.out.println(crr);}

结果图:

  • 以Arrays.toString(数组名)输出(带格式输出)

public static void main(String[] args) {int[] arr = new int[]{1,4,7};System.out.println(Arrays.toString(arr));}

结果图:

  • 如果想打印多维数组可以使用Arrays.deepToString方法

 public static void main(String[] args) {int[][][] arr = new int[3][3][3];System.out.println(Arrays.deepToString(arr));}

结果图:


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部