一 数组的定义和初始化
定义数组
数据类型[] 数组名;例 int[] arr;
数据类型 数组名[];例 int arr[];
数组初始化
数据类型[] 数组名 =new 数据类型[] {值};例 int[] arr =new int[] {1,2,3};
(简化形式)数据类型[] 数组名 ={值};
二 数组的地址值和元素访问
System.out.println(数组名); 可以获得数组的地址
System.out.println(数组名[索引值]);可以获取数组内对应元素
数组名[索引值] = 值; 可以为数组内元素赋值
三 数组的遍历
<数组长度 arr.length>
练习1:定义一个数组存储1~10,统计数组内有多少个可以被3整除的数字
public class HelloWorld {public static void main(String[] args) {int[] arr =new int[]{1,2,3,4,5,6,7,8,9,10};int count =0;for (int i = 0; i < arr.length; i++) {if (a[i]%3 ==0){count++;}}System.out.println(count);}
}
练习2:定义一个数组,存储1~10的数字,遍历数组,如果是奇数,将该数字扩大两倍,如果是偶数,则缩小一半
public class HelloWorld {public static void main(String[] args) {int[] arr =new int[]{1,2,3,4,5,6,7,8,9,10};for (int i = 0; i < arr.length; i++) {if (arr[i] %2 == 0 ){arr[i] = (int)0.5*arr[i];}else {arr[i] = 2*arr[i];}System.out.println(arr[i]);}}
}
四 数组的动态初始化
数据类型[] 数组名 =new 数据类型[数组长度];例 int[] arr =new int[3] ;
默认初始化值:int型-0;double型-0.0;Char型-空格;boolon型-false;引用类型-null
五 数组常见问题:数组越界
练习1:求最值
public class HelloWorld {public static void main(String[] args) {// 求最大值int[] arr =new int[]{35,5322,534,2355,6654,744};// int temp = 0;int temp = arr[0];// temp的初值不能为0,因为数组中元素可能为负数for (int i = 0; i < arr.length; i++) { // 循环开始条件可以改为i=1;提高程序运行效率if (temp <arr[i]){temp = arr[i];}}System.out.println(temp);}
}
练习2:遍历数组求和
生成10个1~100之间的随机数存入数组,求出数组数字的和和平均数,并统计有多少个数据小于平均数
import java.util.Random;
public class HelloWorld {public static void main(String[] args) {// 生成10个1~100之间的随机数存入数组,求出数组数字的和和平均数,并统计有多少个数据小于平均数Random r = new Random();int[] arr = new int[10];for (int i = 0; i < arr.length; i++) {arr[i] = r.nextInt(100) +1;System.out.print(arr[i] +"");}int sum = 0;double avg = 0;int count = 0;for (int i = 0; i < arr.length; i++) {sum += arr[i];}// avg = sum/arr.length;avg = sum/10.0;for (int i = 0; i < arr.length; i++) {if (arr[i]<avg){count++;}}System.out.println("和是:"+sum);System.out.println("平均数:"+avg);System.out.println("小于平均数的数字个数:"+count);}
}
练习3:交换数组中的数据
定义一个数组,存入数据1,2,3,4,5。要求交换数组间索引首位对应元素位置,使得数组变为5,4,3,2,1
public class HelloWorld {public static void main(String[] args) {// 定义数组int[] arr = new int[]{1,2,3,4,5,6};// 利用循环交换数组for (int i =0,j=arr.length-1;i<j;i++,j--){// 交换变量i 和变量j指向的元素int temp = arr[i];arr[i] = arr[j];arr[j]= temp;// 一轮交换完成,进行下一轮交换}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+"");}}
}
练习4:打乱数组中数据
定义一个数组,要求打乱数组中所有数据顺序
import java.util.Random;
public class HelloWorld {public static void main(String[] args) {// 定义数组int[] arr = new int[]{1,2,3,4,5,6};// 实现方法:定义随机索引,遍历数组,将数组中的值与随机索引指向的位置进行调换Random r =new Random();// 遍历数组for (int i = 0; i < arr.length; i++) {// 获取随机索引int r_index = r.nextInt(arr.length);// 用随机索引指向的元素与i指向的元素交换int temp =arr[i];arr[i] = arr[r_index];arr[r_index] = temp;}for (int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
}