数组(Array):多个相同类型数据按一定顺序排列的集合,用一个名字命名,编号方式数据管理。
有关概念
数组名
下标(索引)
元素
数组长度:元素的个数
一 : 一维数组
package Array1;
public class array1 {
public static void main(String[] args) {
//静态初始化:数组的初始化和数组元素的赋值操作同时进行
int[]ids=new int[]{100,101,102,103};
//动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[]names=new String[6];
//如何调用数组的指定位置的元素:通过角标的方式调用
//数组的角标(索引)从0开始的,到数组的长度-1结束
names[0]="胡学好";
names[1]="左长洲";
names[2]="王子阳";
names[3]="龙玉磊";
names[4]="高运泽";
names[5]="王宏";
//如何获取数组的长度
//属性:length
System.out.println(names.length);
System.out.println(ids.length);
//如何遍历数组
for(int i=0;i<names.length;i++) {
System.out.println(names[i]);
}
//数组元素的默认初始化值
//数组元素是整形:0
//数组元素是浮点型:0.0
//数组元素是char型:0或'\u0000',而非'0'
//数组元素是boolean型:false
//数组元素是引用数据类型:null
int[]arr=new int[4];
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
String[] arr1=new String[5];
System.out.println(arr1[0]);
}
}
``
/*键盘读入成绩,找出最高分,并输出成绩等级
* 成绩>=最高分-10 等级为'A'
* 成绩>=最高分-20 等级为'B'
* 成绩>=最高分-30 等级为'C'
* 其余 等级为'D'
* 输出: student score is grade is
*/
package Array1;
import java.util.Scanner;
public class arry2 {
public static void main(String[] args) {
//使用scanner读取学生个数
Scanner scanner=new Scanner(System.in);
System.out.println("请输入学生人数");
int number=scanner.nextInt();
//创建数组,存储学生成绩,动态初始化
int[]scores=new int[number];
//给数组元素赋值
System.out.println("请输入"+number+"个学生成绩:");
int maxScore=0;
for(int i=0;i<scores.length;i++) {
scores[i]=scanner.nextInt();
//获取数组最大值即最高分
if(maxScore<scores[i]) {
maxScore=scores[i];
}
}
//根据每个学生成绩与最高分的差值,得到每个学生等级,并输出等级和成绩
char level;
for(int i=0;i<scores.length;i++) {
if(maxScore-scores[i]<=10) {
level='A';
}else if(maxScore-scores[i]<=20) {
level='B';
}else if(maxScore-scores[i]<=30) {
level='C';
}else {
level='D';
}
System.out.println("student"+i+"score is"+scores[i]+",grade is"+level);
}
}
}
//数组的内存解析:
/*内存的简化结构
*栈:局部变量(放在方法中的变量)
*堆:new出来的结构:对象 .数组
*方法区:
* 常量池
* 静态域
*/
二 : 二维数组
package Array1;
public class array2 {
public static void main(String[] args) {
//二维数组的声明和初始化
//静态初始化
int[][]arr={{1,2,3},{4,5},{6,7,8}};
//动态初始化1
String[][]arr1=new String[3][2];//三行两列
//动态初始化2
String[][]arr2=new String[3][];
//如何调用数组的指定位置元素
System.out.println(arr[1][0]);
arr2[1]=new String[4];//在堆中重新new一个含四个元素的数组指向arr2中的第二行
System.out.println(arr2[1][0]);
//获取数组的长度
System.out.println(arr.length);
System.out.println(arr[0].length);
//如何遍历二维数组
for(int i=0;i<arr.length;i++) {
for(int j=0;j<arr[i].length;j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
//二维数组分外层数组元素,内存数组元素
/*二维数组的默认初始化值
* 方式1:int[][]arr=new int[4][3];
* 外层元素的初始化值为:地址值
* 内层元素的初始化值:与一维数组初始化情况相同
* 方式2;int[][]arr=new int[4][];
* 外层元素的初始化值为:null
* 内层元素的初始化值:不能调用,报错
*/
int[][]arr3=new int[4][3];
System.out.println(arr3[0]);//地址值
System.out.println(arr3[0][0]);//0
System.out.println(arr3);//地址值
}
}