数组的定义:用来储存一组相同类型的数据的数组结构.
数据类型 [] 数组名 = new 数据类型 [数组长度];
数据类型 数组名 [] = new 数据类型 [数组长度];
初始化完成后在内存中分配一段连续的空间,其在内存中开辟的空间也随之固定,此时数组的长度 不能随之发生变化。即使数组中没有任何数据,数组所占的空间任然存在。
由于定义数组时分配的是连续空间,所以数组元素在数组里顺序排列编号。
数组的初始化:
数组初始化就是在定义数组时同时一并完成赋值操作。
数据类型 [] 数组名 ={值1,值2,值3}
数据类型 [] 数组名 = new 数据类型 [] {值1,值2 ,值3}
数组的遍历:循环输入数组
public static void main(String[] args){
int score[] = new int [5];
Scanner input = new Scanner(System.in);
for(int i = 0;i <score.length;i++){
score[i] = input.nextInt();
}
}
增强for循环:
for(元素类型 变量名 :要循环的数组或集合名){
}
public static void main(String[] args){
int score [] = {45,45,45,667,67};
for(int i : score){
System.out.println("数组元素值依次为:"+i);
}
}
数组添加:
String[] student = new String[5];
Scanner input = new Scanner(System.in);
System.out.println("输入5句话:");
for (int i=0;i<student.length;i++){
System.out.println("第"+(i+1)+"句话:");
student[i]=input.next();
}
System.out.println("逆序");
for (int i=4;i>=0;i--){
System.out.println(student[i]);
}
数组修改:
int indexNew=-1;
String[]phone = {"iphone3经典","iphone4革新","iphone4s变化不大","iphone5"};
for ( int i=0;i<phone.length;i++){
if (phone[i].equals("iphone5")){
indexNew=i;
break;
}
}
if (indexNew!=1){
phone[indexNew]="iphone5掉漆";
for (int i=0;i<phone.length;i++){
System.out.println(phone[i]);
}
}else {
System.out.println("不存在iphone5");
}
常见问题:
数组下标从零开始!!!
掌握二维数组及其使用:
二维数组实际上是一个一维数组,它的每个元素又是一个一维数组。
二维数组的定义:
数据类型 [][] 数组名;
数据类型 数组名[][];
分配内存空间:
int [][] score;
score=new int[5][50];
定义一个数组并分配内存空间:
int [][] score = new int[5][50];
初始化二维数组:
int [][] score = new int {{90,44,34,34,334},{23,34,34},{34,34}}
//或者
int score [][]= {{89,45,45},{455,45}{45}}
代码示例:
public static void main(String[] args) {
int [][] array = new int[][]{{80,60},{70,54,98},{77,59}};
int total;
for (int i=0;i<array.length;i++){
String str =(i+1)+"班";
total=0;
for (int j=0;j<array[i].length;j++){
total+=array[i][j];
}
System.out.println(str+"总成绩:"+total);
}
}
Array类:
专门用于操作数组的工具类,位于Java.util包中。
1、比较两个数组是否相等
equals()方法用来比较两个数组是否相等,对应位置的元素也一一相等时,返回true,否则返回false。
public static void main(String[] args){
int[] arr1={10,200,30,40};
int[] arr2={10,200,30,40};
int[] arr3={60,40,54};
System.out.println(Arrays.equals(arr1,arr2));
System.out.println(Arrays.equals(arr1,arr3));
}
2、对数组中的元素进行升序排列:sort()方法对数组中的元素进行升序排列,即从小到大排列。
public static void main(String[] args) {
int [][]array=new int[][]{{80,60},{70,54,98},{77,59}};
for (int i=0;i<array.length;i++){
String str =(i+1)+"班";
Arrays.sort(array[i]);
System.out.println(str+"成绩排序后");
for (int j=0;j<array[i].length;j++){
System.out.println(array[i][j]);
}
}
}
3、将数组转换为字符串:toString()方法用于将数组转换为一个字符串。
public static void main(String[] args){
int []arr={10,50,40,30};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
}
4、将数组中所哟元素赋值为相同的值:
fill(arrry,val)方法用于把数组中所有元素赋值为val。
public static void main(String[] args) {
int [] arr={45,23,46,56};
Arrays.fill(arr,40);
System.out.println(Arrays.toString(arr));
}
5、将数组初始化为一个长度为设定值的新数组:
Arrays类copeOf()方法把数组复制为一个长度为设定值的新数组
public static void main(String[] args) {
int []arr1={10,20,30,40};
int []arr2=Arrays.copyOf(arr1,3);
System.out.println(Arrays.toString(arr2));
int []arr3=Arrays.copyOf(arr1,6);
System.out.println(Arrays.toString(arr3));
}
6、查询元素在数组中的下标:
数组中的元素已经按照升序排列,使用Arrays类的binarySearch()方法查询数组元素在数组中的下标。
public static void main(String[] args) {
int []arr={344,45,345,353,554};
Arrays.sort(arr);
int index=Arrays.binarySearch(arr,45);
System.out.println(index);
index=Arrays.binarySearch(arr,345);
System.out.println(index);
}