数组,其实他就是一个容器,方便对数据管理和操作。
一:数组容器的特点
1:数组容器一旦初始化,长度就固定了,不能再改变
2:数组容器中既可以存储基本数据类型,也可以存储引用数据类型
3:一个数组容器中的所有元素(就是容器中装的东西)的数据类型必须是相同的
二:数组的定义格式
1:格式一:
元素的数据类型[] 数组的名字 = new元素的数据类型[元素的个数(数组的长度)]:
// 第一种数组定义格式
int[] arrOne = new int[5];
2:格式二:
元素的数据类型[] 数组的名字 = new 元素的数据类型{元素1,元素2,····};
// 第二种定义数组的格式
int[] arr_two = new int[]{12,23,43};
3:格式三:(属于格式二的简化写法)
元素的数据类型[] 数组的名字 = {元素1,元素2,···.}
// 第三种定义数组的格式
int[] arr = {12,32,54,23};
三:数组索引(存取数据)
我们存放在数组中的数据都是有编号的,我们将这个编号称之为索引。索引下标从0开始,数组长度减一结束。
那么,我们既可以通过这个索引存数据,也可以通过这个索引取数据。
下面我们来测试一下:
上面的程序演示了如何向数组中存数据
/**
* @name 主方法
* @param args
*/
public static void main(String[] args)
{
// 定义长度为3的数组
int[] arrOne = new int[3];
arrOne[0] = 1;
arrOne[1] = 2;
arrOne[2] = 3;
System.out.println("数组中的第一个元素:"+arrOne[0]);
System.out.println("数组中的第二个元素:"+arrOne[1]);
System.out.println("数组中的第三个元素:"+arrOne[2]);
// arrOne[3] = 4;
System.out.println("程序执行结束了");
}
输出:
数组中的第一个元素:1
数组中的第二个元素:2
数组中的第三个元素:3
程序执行结束了
上面的程序为我们演示了如何从数组中取数据。
四:使用for循环遍历数组
这部分内容在我们之前学习for循环的时候,就已经提前尝试过了,这里把上篇的例子再写一下:
/**
* @name 主方法
* @param args
*/
public static void main(String[] args)
{
// 定义长度为3的数组
int[] arrOne = new int[3];
arrOne[0] = 1;
arrOne[1] = 2;
arrOne[2] = 3;
// arrOne[3] = 4;
for(int i = 0; i < arrOne.length;i++)
{
System.out.println("数组中的第"+i+"个元素:"+arrOne[i]);
}
System.out.println("程序执行结束了");
}
输出:
数组中的第0个元素:1
数组中的第1个元素:2
数组中的第2个元素:3
程序执行结束了
五:数组常见错误:
1:指针越界异常:ArrayIndexOutOfBoundsException
// 定义长度为3的数组
int[] arrOne = new int[3];
arrOne[0] = 1;
arrOne[1] = 2;
arrOne[2] = 3;
arrOne[3] = 4;
上边这段代码就会报指针越界异常。
2:空指针异常:NullPointerException
arrOne = null;
System.out.println("数组中的第1元素:"+arrOne[0]);
上边这段代码就会报 空指针异常
Java中 null只能给引用数据类型赋值,数组是一个引用数据类型。
六:数组的常见操作
1 :获取最值(最大、最小)
(1):操作值
// 定义一个数组
int[] arrOne = {11,4,6,7,15,9};
// ======================================================
// 操作值
int max = 0;
for(int i = 0; i < arrOne.length;i++ )
{
if(max < arrOne[i])
{
max = arrOne[i];
}
}
System.out.println("数组的最大的元素是:"+max);
输出:数组的最大的元素是:15
(2):操作索引
// 定义一个数组
int[] arrOne = {11,4,6,7,15,9};
// ======================================================
// 操作索引
int index = 0;
for(int i = 0; i < arrOne.length;i++ )
{
if(arrOne[index] < arrOne[i])
{
index = i;
}
}
System.out.println("数组的最大的元素是:"+arrOne[index]);
输出:数组的最大的元素是:15
2 :在数组中查找对应的元素
public static void main(String[] args) {
// 基本查找
int[] arr = {11,21,32,45,89};
// 使用控制台输入输出类
Scanner sc = new Scanner(System.in);
System.out.println("请您输入一个数字:");
int num = sc.nextInt();
int index = -1;
for(int i = 0;i < arr.length;i++)
{
if(num == arr[i])
{
index = i;
break;
}
}
if(index != -1)
{
System.out.println("与"+num+"相等数字索引是:"+index);
}
else
{
System.out.println("没有找到对应的数字!");
}
}
输出:
请您输入一个数字:
32
与32相等数字索引是:2
3 :数组排序
(1):选择排序
public static void main(String[] args) {
int[] arr = {11,52,14,25,85,65,21,24,99};
// 选择排序
for(int i = 0;i < arr.length - 1;i++)
{
for(int j = i + 1; j < arr.length; j++)
{
if(arr[i] > arr[j])
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
// 输出排序之后的数组
for(int i = 0; i < arr.length;i++)
{
System.out.println(arr[i]);
}
}
输出:11
14
21
24
25
52
65
85
99
(2):冒泡排序
public static void main(String[] args) {
int[] arr = {11,52,14,25,85,65,21,24,99};
// 冒泡排序
for(int i = 0;i < arr.length - 1;i++)
{
for(int j = 0;j < arr.length - 1 - i;j++)
{
if(arr[j] > arr[j+1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 输出排序之后的数组
for(int i = 0; i < arr.length;i++)
{
System.out.println(arr[i]);
}
}
输出:
11
14
21
24
25
52
65
85
99
七:多维数组
数组元素为一维数组的数组我们称之为二维数组。
1:定义方式:
// 这个二维数组中有三个一维数组,每个一维数组中有两个元素
int[][] arrOne = new int[3][2];
// 这个二维数组中有三个一维数组,每个一维数组中有多个元素(不确定)
int[][] arrTwo = new int[3][];
// 这个直接就赋值了
int[][] arrThree = {{1,23},{52,96},{2,56,36,45}};
2:二维数组遍历
// 这个直接就赋值了
int[][] arrThree = {{1,23},{52,96},{2,56,36,45}};
for(int i = 0;i < arrThree.length;i++)
{
for(int j = 0;j < arrThree[i].length;j++)
{
System.out.println(arrThree[i][j]);
}
}
输出:
1
23
52
96
2
56
36
45
以上大概就是关于java数组的基本使用,有好的建议,请在下方输入你的评论。