数组介绍
数组是一组相同数据类型元素的集合,在Java中数组属于引用类型,即数组是一个对象。数组中可以存放八大基本数据类型,还包含引用数据类型。
格式: 引用类型[] 数组名 = new 引用类型
示例:int[] ages = new int[3];// 定义了一个长度为 3 的 int 类型数组
数组的初始化
// 格式:数组类型[] 数组变量名 = new 数组类型[长度];
int[] ages = new int[3];// 定义了一个长度为 3 的 int 类型数组
// 格式:数组类型[] 数组变量名 = new 数组类型[]{数据1, 数据2, 数据3,...}
int[] ages2 = new int[]{18, 20, 30};// 创建了一个长度为 3 的 int 类型数组
// 格式:数组类型[] 数组变量名 = {数据1, 数据2, 数据3,...}
int[] ages3 = {18, 20, 30};// 创建了一个长度为 3 的 int 类型数组
元素默认值
如果创建数组时没有进行赋值,数组就会按照创建类型的元素默认值存储
数据类型 | 默认初始化值 |
---|---|
byte/short/int/long | 0 |
float/double | 0.0 |
char | 一个空字符(空格),即'u0000' |
boolean | false |
引用数据类型 | null,表示变量不引用任何对象 |
获取数组中的数据
格式:数组变量名[下标/角标/索引]
数组中的索引是从0开始,所以数组的第一位数据是ages[0]
第二位数据是ages[1]
第三位数据是ages[2]
//打印下数组中各个位置的值,看是否和创建数组是的赋值一样
System.out.println(ages[0]);
System.out.println(ages[1]);
System.out.println(ages[2]);
数组的赋值
数组的赋值和变量的赋值一样,等号左侧为数组的索引位置,右侧为赋值的数值
ages[0] = 1;
ages[1] = 2;
ages[2] = 3;
数组的遍历
在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来通过一个案例来学习如何使用for循环来遍历数组,如下所示。
其中用到了数组的属性arr.length
表示该数组的长度
通过length属性访问数组中元素的个数
for 循环
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组
// 使用for循环遍历数组的元素
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 通过索引访问元素
}
}
}
for each 循环
打印数组 a 的每一个元素,一个元素占一行
for (int element : a)
System.out.println(element):
数组中常见的问题
数组在编写程序时应用非常广泛,灵活地使用数组对实际开发很重要。接下来,本节将针对数组的常见操作进行详细地讲解,如数组的遍历、最值的获取、数组的排序等。
数组的最值
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义一个数组
int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值
// 下面通过一个for循环遍历数组中的元素
for (int x = 1; x < arr.length; x++) {
if (arr[x] > max) { // 比较 arr[x]的值是否大于max
max = arr[x]; // 条件成立,将arr[x]的值赋给max
}
}
System.out.println("max=" + max); // 打印最大值
}
}
数组的越界异常
每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程 序会报错
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = new int[4]; // 定义一个长度为4的数组
System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
at com.test.Day04.ArrayDemo06.main(ArrayDemo06.java:6)
上图运行结果中所提示的错误信息是数组越界异常ArrayIndexOutOfBoundsException,出现这个异常的 原因是数组的长度为4,其索引范围为0~3,而上述代码中的第4行代码使用索引4来访问元素时超出了数组 的索引范围
二维数组
二维数组的定义有很多方式,接下来针对几种常见的方式进行详细地讲解,具体如下:
第一种方式:
int[][] arr = new int[3][4];
上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一 个长度为4的数组
第二种方式
int[][] arr = new int[3][];
第二种方式和第一种类似,只是数组中每个元素的长度不确定
第三种方式:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
二维数组元素遍历与数组元素累加
class ArrayDemo09 {
public static void main(String[] args){
//一维数组的求累加和并遍历
int[] arr = {10,20,30,40,50};
int sum = 0;
for (int i=0; i<arr.length; i++) {
//System.out.println(arr[i]);
sum += arr[i];
}
System.out.println("sum= " + sum);
System.out.println("---------------------");
//二维数组的求累加和并遍历
int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };
int sum2 = 0;
for (int i=0; i<arr2.length; i++) {
for (int j=0; j<arr2[i].length; j++) {
//System.out.println(arr2[i][j])
sum2 += arr2[i][j];
}
}
System.out.println("sum2= "+ sum2);
}
}
数组工具类
其中导入了util类包
讲述了几种常用的数组工具类
import java.util.Arrays;
/**
* Java 作者数组工具类
*/
public class ArrayDemo07 {
public static void main(String[] args) {
int[] arrNum = {3, 7, 6, 9, 2, 1, 8};
// sort 排序 从小到大
Arrays.sort(arrNum);
// 将数据中的数据返回字符串
System.out.println(Arrays.toString(arrNum));
// 替换全部
Arrays.fill(arrNum, 50);
System.out.println(Arrays.toString(arrNum));
// 替换区间
Arrays.fill(arrNum, 2, 4, 100);// 左闭右开
System.out.println(Arrays.toString(arrNum));
// 拷贝数组指定拷贝的索引从0开始到newLength结束
int[] result = Arrays.copyOf(arrNum, 5);
System.out.println(Arrays.toString(result));
//拷贝数组指定拷贝的索引从 to 到 from 左闭右开区间
result = Arrays.copyOfRange(arrNum, 2, 5);
System.out.println(Arrays.toString(result));
}
}
------------恢复内容开始------------
数组介绍
数组是一组相同数据类型元素的集合,在Java中数组属于引用类型,即数组是一个对象。数组中可以存放八大基本数据类型,还包含引用数据类型。
格式: 引用类型[] 数组名 = new 引用类型
示例:int[] ages = new int[3];// 定义了一个长度为 3 的 int 类型数组
数组的初始化
// 格式:数组类型[] 数组变量名 = new 数组类型[长度];
int[] ages = new int[3];// 定义了一个长度为 3 的 int 类型数组
// 格式:数组类型[] 数组变量名 = new 数组类型[]{数据1, 数据2, 数据3,...}
int[] ages2 = new int[]{18, 20, 30};// 创建了一个长度为 3 的 int 类型数组
// 格式:数组类型[] 数组变量名 = {数据1, 数据2, 数据3,...}
int[] ages3 = {18, 20, 30};// 创建了一个长度为 3 的 int 类型数组
元素默认值
如果创建数组时没有进行赋值,数组就会按照创建类型的元素默认值存储
数据类型 | 默认初始化值 |
---|---|
byte/short/int/long | 0 |
float/double | 0.0 |
char | 一个空字符(空格),即'u0000' |
boolean | false |
引用数据类型 | null,表示变量不引用任何对象 |
获取数组中的数据
格式:数组变量名[下标/角标/索引]
数组中的索引是从0开始,所以数组的第一位数据是ages[0]
第二位数据是ages[1]
第三位数据是ages[2]
//打印下数组中各个位置的值,看是否和创建数组是的赋值一样
System.out.println(ages[0]);
System.out.println(ages[1]);
System.out.println(ages[2]);
数组的赋值
数组的赋值和变量的赋值一样,等号左侧为数组的索引位置,右侧为赋值的数值
ages[0] = 1;
ages[1] = 2;
ages[2] = 3;
数组的遍历
在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。接下来通过一个案例来学习如何使用for循环来遍历数组,如下所示。
其中用到了数组的属性arr.length
表示该数组的长度
通过length属性访问数组中元素的个数
for 循环
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 }; // 定义数组
// 使用for循环遍历数组的元素
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); // 通过索引访问元素
}
}
}
for each 循环
打印数组 a 的每一个元素,一个元素占一行
for (int element : a)
System.out.println(element):
数组中常见的问题
数组在编写程序时应用非常广泛,灵活地使用数组对实际开发很重要。接下来,本节将针对数组的常见操作进行详细地讲解,如数组的遍历、最值的获取、数组的排序等。
数组的最值
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = { 4, 1, 6, 3, 9, 8 }; // 定义一个数组
int max = arr[0]; // 定义变量max用于记住最大数,首先假设第一个元素为最大值
// 下面通过一个for循环遍历数组中的元素
for (int x = 1; x < arr.length; x++) {
if (arr[x] > max) { // 比较 arr[x]的值是否大于max
max = arr[x]; // 条件成立,将arr[x]的值赋给max
}
}
System.out.println("max=" + max); // 打印最大值
}
}
数组的越界异常
每个数组的索引都有一个范围,即0~length-1。在访问数组的元素时,索引不能超出这个范围,否则程 序会报错
public class ArrayDemo06 {
public static void main(String[] args) {
int[] arr = new int[4]; // 定义一个长度为4的数组
System.out.println("arr[0]=" + arr[4]); // 通过角标4访问数组元素
}
}
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 4 out of bounds for length 4
at com.test.Day04.ArrayDemo06.main(ArrayDemo06.java:6)
上图运行结果中所提示的错误信息是数组越界异常ArrayIndexOutOfBoundsException,出现这个异常的 原因是数组的长度为4,其索引范围为0~3,而上述代码中的第4行代码使用索引4来访问元素时超出了数组 的索引范围
二维数组
二维数组的定义有很多方式,接下来针对几种常见的方式进行详细地讲解,具体如下:
第一种方式:
int[][] arr = new int[3][4];
上面的代码相当于定义了一个3*4的二维数组,即二维数组的长度为3,二维数组中的每个元素又是一 个长度为4的数组
第二种方式
int[][] arr = new int[3][];
第二种方式和第一种类似,只是数组中每个元素的长度不确定
第三种方式:
int[][] arr = {{1,2},{3,4,5,6},{7,8,9}};
二维数组元素遍历与数组元素累加
class ArrayDemo09 {
public static void main(String[] args){
//一维数组的求累加和并遍历
int[] arr = {10,20,30,40,50};
int sum = 0;
for (int i=0; i<arr.length; i++) {
//System.out.println(arr[i]);
sum += arr[i];
}
System.out.println("sum= " + sum);
System.out.println("---------------------");
//二维数组的求累加和并遍历
int[][] arr2 = { {1,2},{3,4,5},{6,7,8,9,10} };
int sum2 = 0;
for (int i=0; i<arr2.length; i++) {
for (int j=0; j<arr2[i].length; j++) {
//System.out.println(arr2[i][j])
sum2 += arr2[i][j];
}
}
System.out.println("sum2= "+ sum2);
}
}
数组工具类
其中导入了util类包
讲述了几种常用的数组工具类
import java.util.Arrays;
/**
* Java 作者数组工具类
*/
public class ArrayDemo07 {
public static void main(String[] args) {
int[] arrNum = {3, 7, 6, 9, 2, 1, 8};
// sort 排序 从小到大
Arrays.sort(arrNum);
// 将数据中的数据返回字符串
System.out.println(Arrays.toString(arrNum));
// 替换全部
Arrays.fill(arrNum, 50);
System.out.println(Arrays.toString(arrNum));
// 替换区间
Arrays.fill(arrNum, 2, 4, 100);// 左闭右开
System.out.println(Arrays.toString(arrNum));
// 拷贝数组指定拷贝的索引从0开始到newLength结束
int[] result = Arrays.copyOf(arrNum, 5);
System.out.println(Arrays.toString(result));
//拷贝数组指定拷贝的索引从 to 到 from 左闭右开区间
result = Arrays.copyOfRange(arrNum, 2, 5);
System.out.println(Arrays.toString(result));
}
}
------------恢复内容结束------------