1. 一维数组
(1) 数组的声明
两种方式:数据类型[] 数组名;(例:int[] arr;)
数据类型 数组名[];(例:int arr[];)
(2) 数组的创建
先声明后创建:数据类型[]数组名;
数组名 = new 数据类型[数组长度];
声明的同时创建:
数据类型[] 数组名= new 数据类型[数组长度];
注意:数组长度必须指定,且具有默认值
(3) 数组的初始化
声明数组的同时给数组赋值
例:Int[] arr ={1,2,3,4,5,6,7,8,9};
(4) 数组元素的引用
格式:数组名[下标]; //下标从0开始
(5) 数组长度:属性length表示数组的长度
如:a.length
练习:
//声明int型一个数组
int[] myint;
//声明一个double型数组
doublemydouble[];
//创建数组
myint = newint[5];
mydouble = newdouble[10];
//声明的同时创建数组
float[] myfloat = newfloat[8];
//数组初始化
int[] arr = {1,2,3,4,5,6,7,8,9,10};
//输出数组arr中的第二个数字
System.out.println("数组arr中的第二个数字为:"+arr[1]);
//输出数组arr的长度
System.out.println("数组arr的长度为:"+arr.length);
//为数组myint赋值
for(inti=0;i<myint.length;i++) {
myint[i]=i+1;
}
//打印输出数组myint内的数字
System.out.print("数组中的数字为:");
for(inti=0;i<myint.length;i++) {
System.out.print(myint[i]+" ");
}
例:数组的累加求和
//创建一个数组
int[] a = newint[10];
Scanner sc = new Scanner(System.in);
for(inti=0;i<a.length;i++) {
System.out.println("请输入一个数字:");
a[i]=sc.nextInt();
}
//数组求和
intsum = 0;
for(inti=0;i<a.length;i++) {
sum = sum+a[i];
}
System.out.println("数组中的元素之和为:"+sum);
例:求数组的最大值
//创建数组
int[] a = newint[5];
//为数组赋值
for(inti=0;i<a.length;i++) {
Scannersc= newScanner(System.in);
System.out.println("请输入数字:");
a[i]=sc.nextInt();
}
//求最大值
intmax=a[0];
for(inti=1;i<a.length;i++) {
if(a[i]>max) {
max=a[i];
}
}
System.out.println("最大值为:"+max);
例:冒泡排序
//定义数组
int[] a = newint[7];
//为数组赋值
Scannersc= newScanner(System.in);
for(inti=0;i<a.length;i++) {
System.out.println("请输入数字:");
a[i] = sc.nextInt();
}
//打印输出原数组的值
System.out.print("原数组的值为:");
for(inti=0;i<a.length;i++) {
System.out.print(a[i]+" ");
}
System.out.println();
//排序
intnum;
for(inti=0;i<a.length-1;i++) {
for(intj=0;j<a.length-i-1;j++) {
if(a[j]>a[j+1]) {
num=a[j+1];
a[j+1]=a[j];
a[j]=num;
}
}
}
//输出排序后的数组
System.out.print("排序后数组的值为:");
for(inti=0;i<a.length;i++) {
System.out.print(a[i]+" ");
}
2. 二维数组
(1) 声明
三种方法:数据类型[][] 数组名; (例:int[][] arr;)
数据类型 数组名[][] ; (例:intarr[][];)
数据类型[] 数组名[] ; (例:int[]arr[];)
(2) 创建
数据类型[][] 数组名 = new 数据类型[行数] [列元素个数];
注意:行数必须给出,列元素个数可先不给出
例:int[][] arr = new int[3][3];
或:int[][] arr = new int[3][];
arr[0]=new int[2]; //第一行有两列
arr[1] =new int[4]; //第二行有四列
arr[2] = new int[3]; //第三行有三列
(3) 初始化二维数组
例:int[][] arr = {{1,2},{2,3,4,5},{7,8,9}};
(4) 增强for循环(又叫foreach循环)
例:int arr = {1,2,3,4};
for(int n : arr){
System.out.println(n);
}
例:int[][] a ={{1,2,3},{4,5,6},{7,8,9}};
System.out.print("数组元素有:");
inti=0; //外层循环计数器变量
for(intx[]:a) {
i++;
intj=0; //内层循环计数器变量
for(intn:x) {
j++;
if(i==a.length&&j==x.length) {
//判断是否为二维数组的最后一个元素
System.out.print(n);
}else {
System.out.print(n+"、");
}
}
}
例:import java.util.Scanner;
publicclassGetArr7 {
publicstaticvoid main(String[] args) {
//在一个二维数组中存放了三个学生的语文和数学成绩,从键盘输入三名
//学生的成绩存储到二维数组中分别求语文、数学的总成绩和平均分并输出
int[][] a = newint[3][2]; //定义一个int型二维数组
char [][] sub = {{'语','文'},{'数','学'}};
//从键盘输入3个学生的语文和数学成绩
for(inti=0;i<a.length;i++) {
for(intj=0;j<a[i].length;j++) {
Scannersc= newScanner(System.in);
System.out.print("第"+(i+1)+"名学生的"+sub[j][0]+sub[j][1]+"成绩为:");
a[i][j] = sc.nextInt();
}
}
//输出
int[] sum = newint[2];
for(intj=0;j<a[j].length;j++) {
for(inti=0;i<a.length;i++) {
sum[j]=sum[j]+a[i][j]; //单科求和
}
System.out.print(sub[j]);
System.out.println("总成绩为:"+sum[j]);
System.out.print(sub[j]);
System.out.println("平均分为:"+sum[j]/3);
}
}
}