/*
* 一.数组的概述
* 1.数组的理解:数组(Array),是多个相同类型数据按一定顺序排列的集合,
* 并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
*
* 2.数组相关的概念:
* (1)数组名
* (2)元素
* (3)角标,下标,索引
* (4)数组的长度:元素的个数
*
* 3.数组的特点:
* (1)数组是有序排列的
*
* (2)数组属于引用数据类型类型的变量。数组的元素,既可以是基本数据类型,
* 也可以是引用数据类型
*
* (3)创建数组对象会在内存中开辟一整块连续的空间
*
* (4)数组的长度一旦确定,就不能修改
*
* 4.数组的分类:
* (1)按照维数:一元数组,二元数组...
* (2)按照数组元素的类型:基本数据类型元素的数组,引用数据类型的元素
*
* 5.一维数组的使用:
* (1)一维数组的声明与初始化
* (2)如何调用数组指定位置的元素
* (3)如何获取数组的长度
* (4)如何遍历数组
* (5)数组元素的默认初始化值
* (6)数组的内存解析
*/
public class ArrayTest {
public static void main(String[] args) {
//1.一维数组的声明与初始化
int num;//声明
num=10;//初始化
int id=1001;//声明+初始化
int[] ids;//声明
//1.1静态初始化:数组的初始化和数组元素的赋值操作同时进行
ids=new int[] {1001,1002,1003,1004};
//1.2动态初始化:数组的初始化和数组元素的赋值操作分开进行
String[] names=new String[5];//长度为5
//只有数组的初始化,并无进行对数组的元素的赋值操作
//总结:数组一旦初始化完成,数组长度就确定了
//2.如何调用数组中指定位置的元素:通过角标的方式调用
//数组的角标(或索引)从0开始,到数组长度-1结束
names[0]="王明";
names[1]="李晓";
names[2]="张三";
names[3]="李四";
names[4]="王麻子"; //数组长度为5
//3.如何获取数组的长度:
//属性:length
System.out.println(names.length);
System.out.println(ids.length);
//4.如何遍历数组
/*
* System.out.println(names[0]);
* System.out.println(names[1]);
* System.out.println(names[2]);
* System.out.println(names[3]);
* System.out.println(names[4]);
*/
for(int i=0;i<names.length;i++) {
System.out.println(names[i]);
}
}
}
/*
* 数组元素的初始化值
* >数组元素是整型(int,short,byte):0
* >数组元素为浮点型:0.0
* >数组元素为char型:0,而非'0'
* >数组元素为boolean型:flase
*
* >数组元素为引用数据类型:null
*/
public class ArrayTest1 {
public static void main(String[] args){
//5.数组元素的默认初始化值
int[] arr=new int[4];
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]);//0 0 0 0
}
System.out.println("***************");
short[] arr1=new short[4];
for(int i=0;i<arr1.length;i++) {
System.out.println(arr1[i]);//0 0 0 0
}
System.out.println("***************");
float[] arr2=new float[4];
for(int i=0;i<arr2.length;i++) {
System.out.println(arr2[i]);//0.0 0.0 0.0 0.0
}
System.out.println("***************");
char[] arr3=new char[4];
for(int i=0;i<arr3.length;i++) {
System.out.println("----"+arr3[i]+"****");
}
System.out.println("***************");
/*
* ---- ****
* ---- ****
* ---- ****
* ---- ****
*/
if(arr3[0]==0) {
System.out.println("对喽");
boolean[] arr4=new boolean[5];
System.out.println(arr4[0]);
}
System.out.println("********");
String[] arr5=new String[5];
System.out.println(arr5[4]);
if(arr5[4]==null) {
System.out.println("");
}
}
}
练习一:
public class ArrayDemo {
public static void main(String[] args) {
int[] arr = 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 += arr[index[i]];
}
System.out.println("联系方式:" + tel);//18013820100
}
}
练习二:
从键盘读入学生成绩,找出最高分, 并输出学生成绩等级。 成绩>=最高分-10 等级为’A’ 成绩>=最高分-20 等级为’B’ 成绩>=最高分-30 等级为’C’ 其余 等级为’D’
import java.util.Scanner;
public class ArrayDemo {
public static void main(String[] args) {
//1.使用Scanner,读取学生个数
Scanner scanner=new Scanner(System.in);
System.out.println("请输入学生人数");
int number=scanner.nextInt();
//2.创建数组,存储学生成绩,动态初始化
int[] scores=new int[number];
//3.给数组中的元素赋值
System.out.println("请输入"+number+"个学生的成绩");
for(int i=0;i<scores.length;i++) {
scores[i]=scanner.nextInt();
}
//4.获取数组中元素的最大值:最高分
int maxScore=0;
for(int i=0;i<scores.length;i++) {
if(maxScore<scores[i]) {
maxScore=scores[i];
}
}
//5.根据每个学生成绩与最高分的差值,得到每个学生的登记,并输出等级和成绩
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);
}
}
}