数组(笔记九)
目錄
- 一、什么是數組
- 1、數組的特點:
- 2、數組元素的默認初始化值:
- 3、演示案例
- 4、 多維數組的使用
- 5、一維數組和二維數組的內存解析
一、什么是數組
數組(Array),是多個相同類型數據按一定順序排列的集合,并使用一個名字命名,并通過編號的方式對這些數據進行統一管理。
1、數組的特點:
1)數組是有序排列的
2)數組屬于引用數據類型的變量。數組的元素,既可以是基本數據類型,也可以是引用數據類型3)創建數組對象會在內存中開辟一整塊連續的空間
4)數組的長度一旦確定,就不能修改。
數組的實例:
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];//錯誤的寫法// int[] arr1 = new int[];//×// int[5] arry2 =new int[5];//×// int[] arr3 = new int[3]{1,2,3}; //×int[] arr4 = new int[]{1,2,3}; //√//總結:數組一旦初始化完成,其長度就確定了。//2.如何調用數組的指定位置的元素:通過角標的方式調用。//數組的角標(或索引)從0開始的,到數組的長度-1結束、names[0] = "王寶軍";names[1] = "王軍";names[2] = "王鐵軍";names[3] = "王寶";names[4] = "寶軍";//3.如何獲取數組的長度//屬性lengthSystem.out.println("names的長度是:"+names.length);System.out.println("arr4的長度是:"+arr4.length);//如何遍歷數組System.out.println("菜鳥級遍歷數組:");System.out.println(names[0]);System.out.println(names[2]);System.out.println(names[3]);System.out.println("for循環遍歷:");for(int i=0 ;i<names.length;i++){ //for循環遍歷System.out.println(names[i]);}System.out.println("foreach遍歷數組:");for (String name:names ) {//foreach遍歷數組System.out.println(name);}} }2、數組元素的默認初始化值:
public class ArrayTest1 {public static void main(String[] args) {//5.數組元素的默認初始化System.out.println("int類型數組的默認值");int[] arr1 =new int[2];for (int i:arr1) {System.out.println(i);}System.out.println("String類型數組的默認值");String[] arr2 =new String[2];for (String i:arr2) {System.out.println(i);}System.out.println("double類型數組的默認值");double[] arr3 =new double[2];for (double i:arr3) {System.out.println(i);}System.out.println("char類型數組的默認值");char[] arr4 =new char[2];for (char i:arr4) {System.out.println(i);}System.out.println("long類型數組的默認值");long[] arr5 =new long[2];for (long i:arr5) {System.out.println(i);}System.out.println("float類型數組的默認值");float[] arr6 =new float[2];for (float i:arr6) {System.out.println(i);}System.out.println("short類型數組的默認值");short[] arr7 =new short[2];for (short i:arr7) {System.out.println(i);}System.out.println("boolean類型數組的默認值");boolean[] arr8 =new boolean[2];for (boolean i:arr8) {System.out.println(i);}} }結果:
int類型數組的默認值 0 0 String類型數組的默認值 null null double類型數組的默認值 0.0 0.0 char類型數組的默認值long類型數組的默認值 0 0 float類型數組的默認值 0.0 0.0 short類型數組的默認值 0 0 boolean類型數組的默認值 false false得出結論:
3、演示案例
demo1:
結果:
請輸入學生人數: 4 請輸入4學生姓名: 張三 李四 王五 黃六 請輸入4個學生成績: 90 98 89 79 學生最高分為:98 學生張三成績為90等級為A 學生李四成績為98等級為A 學生王五成績為89等級為A 學生黃六成績為79等級為B**demo2:**獲取電話號碼
public class ArrayTest2 {public static void main(String[] args) {// int[] arr = new int[]{7,2,1,3,6,9,4,8};int[] arr = new int[]{7,2,1,3,6,9,4,5};int[] index = new int[]{2,0,3,0,4,3,5,2,7,6,1};String tel ="";for (int i =0;i<index.length;i++){tel+= arr[index[i]];}System.out.println("聯系方式:"+tel);} } 聯系方式:173763915424、 多維數組的使用
二維數組的使用
1.理解:
對于二維數組的理解,我們可以看成是一維數組array1又作為另一個一維數組array2的元素而存在。其實,從數組底層的運行機制來看,其實沒有多維數組。
二維數組初始化及其查詢遍歷:
public class ArrayTest3 {public static void main(String[] args) {//1.二維數組的聲明和初始化int[]arr = new int[]{1,2,3};//一維數組// 靜態初始化(標準寫法)int[][]arr1 = new int[][]{{1,2,3},{4,5},{6,7,8}};//動態初始化1String[][] arr2 = new String[3][2];//動態初始化2String[][] arr3 = new String[3][];//錯誤的情況/* String[][] arr4 = new String[][4];String[4][3] arr4 = new String[][];*///不標準又正確的寫法int[] arr5[] = new int[][]{{1,2,3},{4,5},{6,7,8}};int[][] arr6= new int[][]{{1,2,3},{4,5},{6,7,8}};//2.如何調用數組的指定位置的元素System.out.println(arr1[0][1]);//2System.out.println(arr1[1][1]);//5arr3[1]=new String[4];System.out.println(arr3[1][0]);//null//3.獲取數組的長度System.out.println(arr1.length);//3System.out.println(arr1[1].length);//2//4.如何遍歷二維數組System.out.println("遍歷二維數組:");for (int i =0;i<arr1.length;i++){for (int j =0;j<arr1[i].length;j++){System.out.print(arr1[i][j]+" ");}System.out.println();}} }結果:
2 5 null 3 2 遍歷二維數組: 1 2 3 4 5 6 7 8二維數組元素默認初始化:
查看二維數組初始化的默認值
public class ArrayTest4 {public static void main(String[] args) {System.out.println("--------int--------");int[][] arr = new int[4][3];System.out.println(arr[0]); //輸出地址值[I@1b6d3586 “[”表示是一維數組System.out.println(arr[0][0]);//0System.out.println(arr); //輸出[[I@4554617c “[[”表示是二維數組System.out.println("--------float--------");float[][] arr1 = new float[4][3];System.out.println(arr1[0]); //輸出地址值[I@1b6d3586 “[”表示是一維數組System.out.println(arr1[0][0]);//0.0System.out.println(arr1); //輸出[[I@4554617c “[[”表示是二維數組System.out.println("--------String--------");String[][] arr2 = new String[4][3];System.out.println(arr2[1]); //輸出地址值[Ljava.lang.String;@677327b6 “[”表示是一維數組System.out.println(arr2[1][1]);//nullSystem.out.println(arr2); //輸出[[Ljava.lang.String;@14ae5a5 “[[”表示是二維數組System.out.println("--------double--------");double[][]arr3 = new double[4][];System.out.println(arr3[1]);//nullSystem.out.println( arr3[1][0]);//報錯|} }輸出結果:
--------int-------- [I@1b6d3586 0 [[I@4554617c --------float-------- [F@74a14482 0.0 [[F@1540e19d --------String-------- [Ljava.lang.String;@677327b6 null [[Ljava.lang.String;@14ae5a5 --------double-------- null Exception in thread "main" java.lang.NullPointerExceptionat com.cn.ArrayTest.ArrayTest4.main(ArrayTest4.java:31)5、一維數組和二維數組的內存解析
擴展練習:
測試:
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Scanner;public class TestStudent {public static Map<String,List<Student>> map = new HashMap<String,List<Student>>();public static void saveData() {List<Student> list_401 = new ArrayList<Student>();List<Student> list_402 = new ArrayList<Student>();list_401.add(new Student(16160401,"小明", 1616040101,'A', 20));list_401.add(new Student(16160401,"小紅", 1616040102, 'B', 20));list_402.add(new Student(16160402,"校長", 1616040201, 'C', 20));list_402.add(new Student(16160402,"柯南", 1616040202, 'D', 20));map.put("16160401", list_401);map.put("16160402", list_402);}public static List<Student> queryStudentByClassName(String className) {if(map.isEmpty()) {saveData();}List<Student> students = map.get(className);return students; //exit}public static void main(String[] args) {System.out.println("請在控制臺中輸入要查找在班級名稱");while(true) {Scanner sc = new Scanner(System.in);String className = sc.next();if("exit".equals(className)) {System.out.println("歡迎下次繼續使用");break;}List<Student> list = queryStudentByClassName(className);if(list!=null) {list.forEach((student)->{System.out.println(student.toString());});}else {System.out.println("未找到");}}} }總結
- 上一篇: 阿里云服务平台,分布式架构云平台解决方案
- 下一篇: 算法仿真----分治法找假币