单个变量能存储信息
如果有批量数据需要存储,单个变量存储时间和空间上不经济和实用,而且过于麻烦,这时候需要用数组这一引用数据类型来存储。
数组:
用来存储具有相同数据类型的数据的集合,可以使用共同的名字来引用数组中存储的数据。
特点:
数组可以存储任何类型的数据,包括原始数据类型和引用数据类型,但是一旦指定了数组的类型之后,就只能用来存储指定类型的数据。
一维数组
一维数组的使用步骤:
- 声明一个数组变量来存放该数组。
- 创建一个新的数组对象并将其赋值给上一步所创建的数组变量。
- 在该数组中存储数据。
- 访问或修改此数组中存储的数据(元素)。
声明一维数组
语法:
数据类型 [] 数组名
数据类型 数组名[]
如:
String [] args;
String args[];
int [] array;
int array[];
创建一维数组对象
1.使用new运算符
String [] str = new String[5];
int [] array = new int[5];
2.直接初始化数组
String [] str = {“张三”,”李四”};
int [] array = {1,2,3,4,5};
注意:数组一旦创建,其长度就已经确定,是无法进行长度的修改的。
初创数组中有默认的初始值:
- byte short int long类型数组 初始值 0
- float double类型数组 初始值 0.0
- char型数组 初始值' '
- boolean型初始值 false
- 引用数据类型数组 的初始值 是 null
访问一维数组中的元素
- 如果需要访问数组中的元素,需要使用数组名[下标]的形式访问
- 注意数组的最大下标是:数组的长度-1;最开始的下标是:0
- 数组的长度可以通过使用数组的属性length获取,每一个数组对象都会有length属性来表示数组的长度,也即数组元素的个数。
多维数组
数组元素除了可以是原始数据类型、对象类型之外,还可以是数组,即数组的元素是数组。
Java不支持多维数组,但是可以通过声明数组的数组来实现同样的功能。元素数组还可以包含数组,依此类推,最后创建出达到需要的任意维数。
二维数组
声明二维数组
语法:
数据类型[][]数组名称
数据类型 数组名称[][]
Java中建议使用第一种数组声明方式
如:
int [][]array;
String str[][];
二维数组的创建同样有两种方式
方式一:使用new运算符
String [][]str = new String[5][5];
方式二:声明数组并且赋初始值
int [][] array = {{23,45,45},{12,11,10,56},{23,12}};
访问二维数组与访问一维数组类似,都是通过下标。
演示:
public static void main(String[] args) {
int zs = 100;
// 存储4人的年龄
int[] arr; // 声明
arr = new int[4]; // 创建
// 存储4人的年龄
int[] arr1 = new int[4];
// 存储4人的姓名
String[] nameArr = new String[4];
System.out.println(nameArr[0]);
System.out.println(arr1); //
System.out.println(nameArr);// [Ljava.lang.String;@5c647e05
//取值
int a1 = arr1[0]; // 取出arr1数组的第一个元素
int a2 = arr1[1]; // 取出arr1数组的第二个元素
int a3 = arr1[2]; // 取出arr1数组的第三个元素
int a4 = arr1[3]; // 取出arr1数组的第四个元素
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
// 赋值
arr1[0] = 18;
arr1[1] = 19;
arr1[2] = 20;
arr1[3] = 21;
// 再次取值,查看效果
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]);
System.out.println("----华丽的分割线----");
// 静态创建:直接给定元素,长度有程序自行判定
int[] arr2 = new int[] {1,2,3};
// 静态创建的简化格式
int[] arr3 = {11,22,33};
// 取值操作
int b1 = arr3[0];
System.out.println(b1);
// 赋值
arr3[1] = 200;
// 再次取值查看赋值效果
System.out.println(arr3[1]);
}
public static void main(String[] args) {
int[] arr = {1,2,3,4,5};
// 获得数组的长度(length)--调用的数组的属性length
int a = arr.length;
System.out.println(arr.length);
System.out.println(a);
// 如何得到数组的全部元素--> 遍历
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
System.out.println("------");
for(int i = 0;i < arr.length;i++) {
System.out.println(arr[i]);
}
// 取出以下数组的最大值
int[] arr2 = {15,2,40,3,1,6,8};
int max = -1;
for(int i = 0;i < arr2.length;i++) {
if(arr2[i] > max) {
max = arr2[i];
}
}
System.out.println("max = "+max);
// 最小值
int min = arr2[0];
for(int i = 0;i < arr2.length;i++) {
if(arr2[i] < min) {
min = arr2[i];
}
}
System.out.println("min = "+min);
// 从小到大排序 --> 算法
int[] arr3 = {6,5,4,3,2,1};
System.out.println("排序前 : ");
for(int i = 0;i < arr3.length;i++) {
System.out.print(arr3[i] + " ");
}
System.out.println();
// 外层循环控制比较的趟数
for(int j = 0;j < arr3.length-1;j++) {
// 内层循环比较的次数
for(int i = 0;i < arr3.length-1-j;i++) {
if(arr3[i] > arr3[i+1]) {
int tmp = arr3[i];
arr3[i] = arr3[i+1];
arr3[i+1] = tmp;
}
}
}
for(int i = 0;i < arr3.length;i++) {
System.out.print(arr3[i] + " ");
}
}