Java之数组篇
1,数据结构数组的概念:
数组是为了存储同一种数据多个元素的集合,也可以看成是一个容器,数组既可以存储基本数据类型,也可以存储引用数据类型,数组是为了存储同种数据类型的多个值。
1.1,一维数组的定义(两种定义方式)
数据类型[] 数组名 = new 数据类型[数组的长度];
数组类型 数组名[]=new 数组类型[数组长度];
1.2,基本类型的数组的初始值
数组元素属性 | 默认值 |
---|---|
float、double | 0.0 |
byte、short、int、long | 0 |
char | '\u0000' |
boolean | false |
引用数据类型 | ull |
1.3,什么是数组初始化?
数组初始化就是为数组开辟连续的内存空间,并为每个数组元素赋予值,(数组初始化分为动态初始化以及静态初始化)
A.动态初始化 只指定长度,由系统给出初始化值
格式: 数据类型[] 数组名 = new 数据类型[数组长度];
代码: int[] arr = new int[10];
B.静态初始化 给出初始化值,由系统决定长度
格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
代码: int[] arr = new int[]{1,2,3,4,5,6};
简化格式:数据类型[] 数组名 = {元素1,元素2,…};
简化代码: int[] arr = {1,2,3,4,5};
1.4,数组遍历:
数组遍历案例演示
* 数组遍历:就是依次输出数组中的每一个元素。
* 数组的属性:arr.length数组的长度
* 数组的最大索引:arr.length - 1;
//定义数组
int[] arr = {10,30,20,40};
//对数组进行for循环
for (int i = 0; i < arr.length-1; i++) {
//打印数组信息并且输出
System.out.println(arr[i]);
}
1.5,初始化二维数组:
格式1: 动态初始化
数据类型 数组名 [][] = new 数据类型[m][n]
数据类型 [][] 数组名 = new 数据类型[m][n]
数据类型 [] 数组名 [] = new 数据类型[m][n]
代码:int[][] arr = new int[6][5];
格式2: 静态初始化
数据类型 [][] 数组名 = {{元素1,元素2...},{元素1,元素2...},{元素1,元素2...}....};
int score[][]={{90,32,43,43,23},{42,32,44},{67}};
需要强调的是,虽然从语法上看,Java支持多维数组,但从内存分配原理的角度讲,Java中只有一维数组,没有多维数组。或者说,表面上是多维数组,实质上都是一维数组。
1.6,二维数组遍历:
//定义二维数组
int [][] arr={{10,52,13,61},{10,52,13,61},{10,52,13,61},{10,52,13,61},{10,52,13,61}};
//外for循环每个数组
for (int i = 0; i < arr.length; i++) {
//内for循环每个数组中的数
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
1.7,数组常见异常:
ArrayIndexOutOfBoundsException:数组索引越界异常
原因:你访问了不存在的索引。
NullPointerException:空指针异常
原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
int[] arr = {1,2,3};
arr = null;
System.out.println(arr[0]);
1.8,Arrays类及其常用方法:
JDK中提供了一个专门用于操作数组的工具类,即Arrays类,位于java.util包中。该类提供了一系列方法来操作数组,如排列、复制、比较、填充等,用户直接调用这些方法即可,不需要自己编写实现,降低了开发难度。
Arrays类常用方法(想详细了解看方法源码):
返回类型 | 方法 | 说明 |
---|---|---|
boolean | equals(array1,array2) | 比较两个数组是否相等 |
void | shrt(array) | 对数组array的元素进行升序排列 |
String | toString() | 将一个数组array转换成一个字符串 |
void | fill(array,val) | 把数组array的所有元素都赋值为val |
与array数组类型一致 | copyOf(array,length) | 把数组array复制成一个长度为length的新数组 |
int | binarySearch(array,val) | 查询元素值val在数组array中的下标 |
1.9,总结:
- 数组是可以再内存中连续存储多个元素的结构。数组中的所有元素必须属于相同的数据类型。
- 数组中的元素通过数组下标进行访问,数组下标从0开始。
- 二维数组实际上是一个一维数组,它的每个元素又是一个一维数组。
- 使用Array类提供的方法可以方便地对数组中的元素进行排序、查询等操作。
- JDK1.5之后提供了增强for循环,可以用来实现对数组和集合中数据的访问。
作者: 屢敗屢戰
出处: https://www.cnblogs.com/joeyJss/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接;
如有问题可咨询邮箱: 1824293259@qq.com