数组:引用数据类型
元素:任何数据类型(基本数据类型+引用数据类型)
内存空间连续,数组名中引用的是连续空间的首地址
长度一旦确定,不能修改
①一维数组的声明和初始化
②如何调用数组的指定位置的元素
③如何获取数组的长度
④如何遍历数组
⑤数组元素的默认初始化值
⑥数组的内存解析
内存结构规范在JVM中体现
package cn.xjtu.java;
import java.util.jar.Attributes.Name;
public class ArrayTest {
public static void main(String[] args) {
//1.一维数组的声明和初始化
int[] ids;//声明
//静态初始化:数组初始化和数组元素赋值同时进行
ids = new int[] {1001,1002,1003,1004};
//动态初始化:数组初始化和数组元素赋值分开进行
String[] names = new String[4];
//2.如何调用数组指定位置元素
names[0] = "王铭";
names[1] = "章铭";
names[2] = "张铭";//两个字符,第一个字符'张'的下标也是从0开始,charAt(0)
names[3] = "黄铭";
//names[4] = "皇上";//编译不会出错,运行会,因为运行时分配内存
//3.获取数组长度
System.out.println(names.length);
//4.遍历数组
for(int i = 0;i < names.length;i++) {
System.out.println(names[i]);
}//快捷键:ctrl+/注释掉,再次按ctrl+/解开
//5.数组元素的默认初始化值
int[] arr = new int[4];
for(int i = 0;i < arr.length;i++) {
System.out.println(arr[i]);
}
char[] arr1 = new char[4];
for(int i = 0;i < arr1.length;i++) {
System.out.println(arr1[i]);
}
if(arr1[0]==' ')
System.out.println("你好");
if(arr1[0]==0)
System.out.println("haha");
//6.数组的内存解析
}
}
放在方法中的变量都是局部变量
引用计数算法:在某个不确定的时间,会把地址0x12ab这块的内存结构回收掉,当方法结束后,方法里的局部变量陆续出栈,然后堆里的一些内存结构没有指针指向,紧接着也会被回收掉
快捷键:Ctrl shift f
(导包 ctrl shift o)(回车,按住shift点回车,无论光标在哪都可以去下一行)
scanner.nextInt();(ctrl 1创建数组)
package cn.xjtu.java;
import java.util.Scanner;
public class ScoreTest {
public static void main(String[] args) {
//1.读取学生个数
Scanner scan = new Scanner(System.in);
System.out.print("请输入学生人数:");
int num = scan.nextInt();
//2.创建学生数组为存储学生成绩
int[] student = new int[num];
System.out.println("请输入学生成绩:");
//3.输入学生成绩4.找出学生成绩最大值
int max = 0;
for(int i = 0;i < student.length;i++) {
student[i] = scan.nextInt();
if(student[i]>max) {
max = student[i];
}
}
//5.判断等级
for(int i = 0;i < student.length;i++) {
int diff = max - student[i];
char level;
if(diff>30) {
level = 'D';
}else if(diff>20) {
level = 'C';
}else if(diff>10) {
level = 'B';
}else {
level = 'A';
}
System.out.println("第"+(i+1)+"个学生成绩等级为"+level);
}
}
}



