【JavaSe,Day06,Note】
ArrayTest
/*
- 一、数组的概述
- 1.数组的理解:数组(Array),是多个相同类型数据按照一定顺序类型的集合,并使用一个名字命名,
- 并通过编号的方式对这些数据进行统一管理。
- 2.数组相关的概念:
-
数组名
-
元素
-
角标、下标、索引
-
数组的长度:元素的个数
- 3.数组的特点:
- 1)数组是有序排列的
- 2)数组属于引用数据类型的变量。数组的元素既可以是基本数据类型,也可以是引用数据类型。
- 3)创建数组对象会在内存中开辟一整块连续的空间
- 4)数组的长度一旦确定,就不能修改
- 4.数组的分类:
- ①按照维数:一维数组、二维数组、…
- ②按照数组元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
- 5.一维数组的使用
- ①一维数组的声明和初始化
- ②如何调用数组的指定位置的元素
- ③如何获取数组的长度
- ④如何遍历数组
- ⑤数组元素的默认初始化值:见ArrayTest1.java
- ⑥数组的内存解析
*/
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];//1.3类型推断:也是正确的写法:int[] arr4 = {1,2,3,4,5};System.out.println(arr4);//[I@45fe3ee3//错误的写法:
// int[] arr1 = new int[];
// int[5] arr1 = new int[5];
// int[] arr3 = new int[3] {1,2,3};//总结:数组一旦初始化完成,其长度就确定了//2.如何调用数组的指定位置的元素:通过角标的方式调用。//数组的角标(或索引)从0开始的,到数组的长度-1结束。names[0] = "王明";names[1] = "王鹤";names[2] = "张学良";names[3] = "孙巨龙";names[4] = "王宏志";//charAt(0)
// names[5] = "周扬";//3.如何获取数组的长度。//属性:lengthSystem.out.println(names.length);//5System.out.println(ids.length);//4.如何遍历数组
// System.out.println(names[0]);for(int i = 0;i < names.length;i++){System.out.println(names[i]);}}}
ArrayTest1
/*
- ⑤数组元素的默认初始化值
-
数组元素是整型(byte short int long):0
-
数组元素是浮点型(float double):0.0
-
数组元素是char型:0或’\u0000’,而非’0’
-
数组元素是Boolean型:false
-
数组元素是引用数据类型: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]);}System.out.println("*************");double[] arr1 = new double[5];for(int i = 0;i < arr1.length;i++) {System.out.println(arr1[i]);}System.out.println("*************");char[] arr2 = new char[5];for(int i = 0;i < arr2.length;i++) {System.out.println(arr2[i]);}System.out.println("*************");boolean[] arr3 = new boolean[5];for(int i = 0;i < arr3.length;i++) {System.out.println(arr3[i]);}System.out.println("*************");String[] arr4 = new String[5];for(int i = 0;i < arr4.length;i++) {System.out.println(arr4[i]);}}
}
ArrayTest2
/*
- 二维数组的使用
- 1.理解:
- 对于二位数组的理解,我们可以看成是一维数组array1又作为另一个一维数组array2的元素而存在。
- 其实,从数组底层的运行机制来看,没有多维数组。
- 2.二维数组的使用:
- ①二维数组的声明和初始化
- ②如何调用数组的指定位置的元素
- ③如何获取数组的长度
- ④如何遍历数组
- ⑤数组元素的默认初始化值:见ArrayTest3.java
- ⑥数组的内存解析:见ArrayTest3.java
*/
public class ArrayTest2 {public static void main(String[] args) {//1.二维数组的声明和初始化int[] arr = new int[]{1,2,3};//一维数组:静态初始化String[] arr2 = new String[3];//一维数组:动态初始化//静态初始化int[][] arr3 = new int[][]{{1,2,3},{4,5,9,10},{6,7,8}};//动态初始化1String[][] arr4 = new String[3][2];//动态初始化2String[][] arr5 = new String[3][];//类型推断:也是正确的写法int[][] arr6 = {{1,1,1},{2,2,2},{3,3,3},{4,4,4}};int[] arr7[] = new int[2][3];//错误的情况
// String[][] arr6 = new String[][4];
// String[4][3] arr7 = new String[][];
// int[][] arr8 = new int[4][3] {{1,1,1},{2,2,2},{3,3,3},{4,4,4}};//2.如何调用数组的指定位置的元素System.out.println(arr3[0][1]);//2System.out.println(arr4[1][1]);//nullarr5[1] = new String[4];System.out.println(arr5[1][0]);//3.获取数组的长度System.out.println(arr3.length);//3System.out.println(arr3[0].length);//3System.out.println(arr3[1].length);//4//4.如何遍历二维数组for(int i = 0;i < arr3.length;i++) {for(int j = 0;j < arr3[i].length;j++) {System.out.print(arr3[i][j] + " ");}System.out.println();}}
}
ArrayTest3
/*
- 二维数组的使用:
- 规定:二维数组分为外层数组的元素,内层数组的元素
-
int[][] arr = new int[4][3];
-
外层元素:arr[0],arr[1]等
-
内层元素:arr[0][0],arr[1][2]等
- ⑤数组元素的默认初始化值
- 针对于初始化方式一:比如:int[][] arr = new int[4][3];
-
外层元素的初始化值为:地址值
-
内层元素的初始化值为:与一维数组初始化情况相同
- 针对于初始化方式二:比如:int[][] arr = new int[4][];
-
外层元素的初始化值为:null
-
内层元素的初始化值为:报错(空指针异常)
- ⑥数组的内存解析
*/
public class ArrayTest3 {public static void main(String[] args) {int[][] arr = new int[4][3];System.out.println(arr[0]);//[I@45fe3ee3System.out.println(arr[0][0]);//0System.out.println(arr);//[[I@4cdf35a9System.out.println("****************");float[][] arr1 = new float[4][3];System.out.println(arr1[0]);//[F@4c98385cSystem.out.println(arr1[0][0]);//0.0System.out.println("****************");String[][] arr2 = new String[4][3];System.out.println(arr2[0]);//[Ljava.lang.String;@3f8f9dd6System.out.println(arr2[0][0]);//nullSystem.out.println("****************");double[][] arr3 = new double[4][];System.out.println(arr3[0]);//null
// System.out.println(arr3[0][0]);//报错:空指针异常}
}
Exer
ArrayDemo
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}
}
ArrayDemo1
import java.util.Scanner;
public class ArrayDemo1 {public static void main(String[] args) {Scanner scan = new Scanner(System.in);System.out.print("请输入学生人数:");int peopleNumber = scan.nextInt();int[] scores = new int[peopleNumber];System.out.println("请输入" + peopleNumber + "个成绩:");int maxScore = 0;for(int i = 0;i < scores.length;i++) {scores[i] = scan.nextInt();if(maxScore < scores[i]){maxScore = scores[i];}}
// int maxScore = 0;
// for(int i = 0;i < scores.length;i++) {
// if(maxScore < scores[i]){
// maxScore = scores[i];
// }
// }System.out.println("最高分是:" + maxScore);
// char[] grades = new char[peopleNumber];char grade;for(int i = 0;i < scores.length;i++) {if(scores[i] >= maxScore - 10) {grade = 'A';}else if(scores[i] >= maxScore - 20) {grade = 'B';}else if(scores[i] >= maxScore - 30) {grade = 'C';}else {grade = 'D';}System.out.println("student " + i + " score is " + scores[i] + " grade is " + grade );}
// for(int i = 0;i < scores.length;i++) {
// System.out.println("student " + i + " score is " + scores[i] + " grade is " + grades[i] );
// }}
}