1:数组的定义及相关概念
2:数组的特点
数组的元素是按照一定顺序排列的
创建数组对象在内存中开辟一整块的连续空间
数组长度一旦确定,就不能更改
数组是引用数据类型,数组元素可以是任何数据类型
3:数组的分类
按照维度可以分为一维、二维、多维
按照类型可以分为引用数据类型、基本数据类型
4:一维数组
①数组的声明、初始化
静态初始化:数组初始化和数组元素的赋值操作同时进行
int[] ids = new int[] {1001,1002,1003,1004};
动态初始化:数组初始化和数组元素的赋值操作不同时进行
String[] names = new String[5];
②调用指定位置的元素:通过下标的方式调用
names[0] = "a";
names[1] = "b";
names[2] = "c";
names[3] = "d";
names[4] = "e";
③获取数组的长度:属性length
System.out.println(names.length);
④遍历数组:通过循环结构
for(int i = 0;i<names.length;i++) {
System.out.println(names[i]);
}
⑤一维数组的内存解析
⑥:例题:学生成绩的存取,最高分,以及等级
package com.atguigu.java;
import java.util.Scanner;
public class ArrayTest {
public static void main(String[] args) {
// 1:使用Scanner读取学生的个数
System.out.println("请输入学生的个数是 :");
Scanner in = new Scanner(System.in);
int number = in.nextInt();
// 2:创建数组,存取成绩(动态初始化)
int[] score = new int[number];
// 3:给数组元素赋值
System.out.println("请输入这" + number + "个学生的成绩");
for (int i = 0; i < score.length; i++) {
score[i] = in.nextInt();
}
// 4:获得成绩中的最高分
int maxScore = 0;
for (int i = 0; i < score.length; i++) {
if (maxScore < score[i]) {
maxScore = score[i];
}
}
// 5:根据 成绩差值,获得成绩等级
char level;
for (int i = 0; i < score.length; i++) {
if (maxScore - score[i] <= 10) {
level = 'A';
} else if (maxScore - score[i] <= 20) {
level = 'B';
} else if (maxScore - score[i] <= 30) {
level = 'C';
} else {
level = 'D';
}
System.out.println("student" + (i+1) + " score is " +
score[i] + " and grade is " + level);
}
}
}
5:二维数组
①数组的声明、初始化
静态初始化:数组初始化和数组元素的赋值操作同时进行
int[][] arr1 = new int[][] {{12,1},{1,1}};
动态初始化:数组初始化和数组元素的赋值操作不同时进行
int[][] arr2 = new int[3][];
②调用指定位置的元素:通过下标的方式调用
System.out.println(arr1[0][1]);
③获取数组的长度:属性length
System.out.println(arr1.length);
System.out.println(arr1[0].length);
④遍历数组:通过循环结构
for(int i = 0;i < arr1.length;i++) {
for(int j =0;j < arr1[i].length;j++) {
System.out.print(arr1[i][j] + " ");
}
System.out.println();
}
⑤二维数组的内存解析
⑥例题:杨辉三角
package com.atguigu.java;
import javax.sound.midi.Soundbank;
public class YangHuiTest {
public static void main(String[] args) {
// 1:声明并初始化二维数组
int[][] yangHui = new int[10][];
// 2:给数组元素赋值
for (int i = 0; i < yangHui.length; i++) {
yangHui[i] = new int[i + 1];
// 2.1:给首末元素赋值
yangHui[i][0] = yangHui[i][i] = 1;
// 2.2:给非首末元素赋值
for (int j = 1; j < yangHui[i].length - 1; j++) {
yangHui[i][j] = yangHui[i - 1][j] + yangHui[i - 1][j - 1];
}
}
// 3:遍历二维数组
for (int i = 0; i < yangHui.length; i++) {
for (int j = 0; j < yangHui[i].length; j++) {
System.out.print(yangHui[i][j] + " ");
}
System.out.println();
}
}
}