package day4_array;
/*
1.数组:
数组是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,通过编号的方式对执行数据进行统一管理
2.数组的常见概念
>数组名:
>下标或索引:从0开始
>元素:
>数组长度:
3.数组的特点:
1)数组是有序排列的
2)数组属于引用数据类型的变量,里面的元素可以是基本数据类型也可以是引用数据类型(比如String)
3)数组创建的对象会在内存中开辟一块连续的空间
4)数组的长度一旦确定,就不能修改
4.数组的分类:
1)按照维数:一维数组、二维数组
2)按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
5.一维数组的使用:
1)一维数组的声明和初始化
2)如何调用数组的指定位置的元素
3)如何遍历数组
4)如何获取数组的长度
5)数组元素的默认初始化值
6)数组的内存解析
*/
import java.util.Scanner;
public class ArrayTest {
public static void main(String[] args) {
int[] ids; //声明
//静态初始化:数组的初始化和数组元素的赋值操作同时进行
ids=new int[] {1001,1002,1003,1004};
//动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names=new String[5];
//无论动态还是静态初始化,初始化完成后,数组长度就已经确定了
//通过索引调用数组元素
names[0]="小明";
names[1]="张学良";
names[2]="王赫";
names[3]="孙巨龙";
names[4]="王宏志";
//获取数组长度length方法
System.out.println(names.length);
System.out.println(ids.length);
//遍历数组
for(int i=0;i<names.length;i++) {
System.out.println(names[i]);
}
//数组元素的默认初始化值
//整型 byte chart int long默认为0;
int[] arr=new int[4];
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);
}
//浮点型float double默认为0.0
float[] arr1=new float[4];
for(int i=0;i<arr1.length;i++) {
System.out.println(arr1[i]);
}
//char默认为ASCII码为0的字符,效果类似空格但不是空格
char[] arr2=new char[2];
System.out.println("----"+arr2[0]+"----");
//布尔型默认初始值为false
boolean[] arr3=new boolean[4];
for(int i=0;i<arr3.length;i++) {
System.out.println(arr3[i]);
}
//数组元素是引用数据类型时,例如String,默认值为null.
String[] arr4=new String[4];
System.out.println(arr4[0]);
//数组内存解析JVM
/*
* 栈(stack):存放局部变量(放在方法中的变量都是局部变量)
上述所有数组的数组名变量都存放在栈上,存放内容为该数组第一个元素的地址
* 堆(heap):存放new出来的结果-->对象和数组
上述所有数组的元素都保存在堆上,同一数组的元素的内存空间是连续的.
* 方法区,由常量池、静态域等组成
*/
//练习题
/*
水井坊单间出租4个月,5550元/月,空调卫生间厨房齐全,屋内均是IT人士,喜欢安静。
联系方法如程序所示
*/
int[] arr0=new int[] {8,2,1,0,3};
int[] index=new int[] {2,0,3,2,4,0,1,3,2,3,3};
String tel="";
for(int i=0;i<index.length;i++) {
tel+=arr0[index[i]];
}System.out.println("联系方式:"+tel);
//输出结果:18013820100
/*
从键盘读入学生成绩,找出最高分,并输出学生成绩等级
成绩>=最高分-10,A
成绩>=最高分-20,B
成绩>=最高分-30,C
其他 D
提示:先读入学生人数,根据人数创建int数组
*/
Scanner scan=new Scanner(System.in);
System.out.println("请输入学生人数:");
int count=scan.nextInt();
int [] scores=new int[count];
int scoreMax=0;
for(int i=0;i<count;i++) {
System.out.println("请输入学生成绩:");
scores[i]=scan.nextInt();
scoreMax=(scoreMax>scores[i])?scoreMax:scores[i];
}System.out.println("最高分是:"+scoreMax);
for(int i=0;i<count;i++) {
if(scores[i]>=scoreMax-10) {
System.out.println("student "+i+" score is "+scores[i]+",and grade is A");
}else if(scores[i]>=scoreMax-20) {
System.out.println("student "+i+" score is "+scores[i]+",and grade is B");
}else if(scores[i]>=scoreMax-30) {
System.out.println("student "+i+" score is "+scores[i]+",and grade is C");
}else {
System.out.println("student "+i+" score is "+scores[i]+",and grade is D");
}
}
}
}