一.数组定义
- 同一种类型数据的集合。其实数组就是一个容器。
二.数组格式
- 格式一 :数据类型[] 数组名 = new 数据类型[数组长度];
- 格式二 :数据类型[] 数组名 = new 数据类型[]{数据1,数据2,数据3};
- 格式三 :数据类型[] 数组名 = {数据1,数据2,数据3};
public class GArray {
public static void main(String []args){
//格式一:
//1.定义数组
int[] scores = new int[5];
//2.填充数组
scores[0] = 10;
scores[1] = 20;
scores[2] = 30;
scores[3] = 40;
scores[4] = 50;
//3.打印数组
for(int i = 0;i<scores.length;i++){
System.out.println("第"+i+"个数组元素为:" +scores[i]);
}
//格式二:
int[] arr = new int[]{25,35,10,95,46,80};
for(int i = 0;i < arr.length; i++){
System.out.println("arr["+i+"]="+arr[i]);
}
//格式三
int[] arr3 = {25,10,23,65,85,12,97};
for(int i = 0;i < arr3.length; i++){
System.out.println(arr3[i]);
}
}
}
三.数组操作常见问题
- ArrayIndexOutOfBoundsException 数组脚标越界异常
int[] arr = new int[2];
System.out.println(arr[3]);
访问到了数组中的不存在的脚标时发生。 - NullPointerException 空指针异常
int[] arr = null;
System.out.println(arr[0]);
arr引用没有指向实体,却在操作实体中的元素时。
四.数组常用操作
- 获取数组中的最值(最大值、最小值)
package world;
public class GArray {
public static void main(String []args){
//查找数组中的最大(小)值
int[] array = {25,45,450,128,2546,245,157,30,254,10};
int max = array[0];//假设第一个元素是最大值
int min = array[0];//假设第一个元素是最小值
for(int i = 0; i<array.length;i++){
max = max > array[i] ? max : array[i];//max大于array[i]?是 max=max 不是 max = array[i]
min = min < array[i] ? min : array[i];//min小于array[i]?是 min=min 不是 min = array[i]
}
System.out.println("数组中的最大值是:"+max);
System.out.println("数组中的最小值是:"+min);
}
}
- 在一个数组中找到一个值所对应的索引
package world;
public class GArray {
public static void main(String []args){
int[] array = {25,45,450,128,2546,245,157,30,254,10};
//查找一个数在数组中的索引位置
int num = 1;
for(int i = 0;i < array.length;i++){
if(array[i] == num){
System.out.println("数字"+num+"在数组中的位置:"+i);
break;//找到结果即跳出循环
}
}
/*
* 改进:
* 如果所查找的数字在数组中不存在,则不会打印,增加提示
*/
boolean flag = false;
for(int i = 0; i<array.length; i++){
if(array[i] == num){
System.out.println("数字"+num+"在数组中的位置:"+i);
flag = true;
break;
}
}
if(!flag){
System.out.println("不存在");
}
/*
*将其改为方法
*/
int num1 = 128;
int index = getIndex(array, num1);
if(index == -1){
System.out.println("数字"+num1+"在数组不存在:");
}else{
System.out.println("数字"+num1+"在数组中的位置:"+index);
}
}
public static int getIndex(int[] array,int num){
int index = -1;
for(int i = 0;i < array.length;i++){
if(array[i] == num){
index = i;
}
}
return index;
}
}
五.二维数组
- 格式一:数据类型[][] 数组名 = new 数据类型[第一维长度][第二位长度];
- 格式二:数据类型[][] 数组名 = new 数据类型[第一维长度][];
- 格式三:数据类型[][] 数组名 ={ {值1,值2,值3} , {值4,值5} , {值6} };
package world;
/**
* 二维数组的练习
* @author lenovo
*
*/
public class GArrayDemo2 {
public static void main(String[] args){
//格式一:数据类型[][] 数组名 = new 数据类型[第一维长度][第二位长度];
int[][] array = new int[3][2];
System.out.println("array = "+array); // [[I@67a9b034
System.out.println("array[0] = "+array[0]); // [I@356f5b17
System.out.println("array[1] = "+array[1]); // [I@21c55e69
System.out.println("array[2] = "+array[2]); // [I@24b950d1
array[0][0] = 10;
array[0][1] = 20;
array[1][0] = 30;
array[1][1] = 40;
array[2][0] = 50;
array[2][1] = 60;
//遍历二维数组
for(int row = 0 ;row < array.length; row++){
for(int col = 0;col < array[row].length;col++){
System.out.println("array["+row+"]["+col+"]="+array[row][col]);
}
}
//格式二:数据类型[][] 数组名 = new 数据类型[第一维长度][];
int[][] arr = new int[4][];
arr[0] = new int[2];
arr[1] = new int[3];
arr[2] = new int[2];
arr[3] = new int[5];
arr[0][0] = 10;
arr[0][1] = 20;
arr[1][0] = 30;
arr[1][1] = 40;
arr[1][2] = 50;
arr[2][0] = 60;
arr[2][1] = 70;
arr[3][0] = 80;
arr[3][1] = 90;
arr[3][2] = 100;
arr[3][3] = 110;
arr[3][4] = 120;
for(int i = 0;i<arr.length ; i++){
for(int j= 0; j<arr[i].length;j++){
System.out.println("arr["+i+"]["+j+"]="+arr[i][j]);
}
}
//格式三:数据类型[][] 数组名 ={ {值1,值2,值3} , {值4,值5} , {值6} };
int[][] ar = { {10,20,30},{40,50},{60} };
for(int i = 0;i<ar.length;i++){
for(int j = 0; j<ar[i].length;j++){
System.out.println("ar["+i+"]["+j+"]="+ar[i][j]);
}
}
}
}