Java基礎(chǔ)數(shù)組

一:目標

1.數(shù)組的定義和特點
2.數(shù)組的操作(存數(shù)據(jù),取數(shù)據(jù),遍歷數(shù)據(jù))
3.二維數(shù)組(定義,取,存,遍歷)

二:知識點

1.數(shù)組

1.數(shù)組概述:是一個容器,數(shù)組本身屬于引用數(shù)據(jù)類型
2.作用:一次存儲多個數(shù)據(jù)
3.特點:
  a.既可以存儲基本類型的數(shù)據(jù),還能存儲引用類型的數(shù)據(jù)
  b.定長(定義數(shù)組時長度為多長,最多就能存多少個數(shù)據(jù)) 
4.定義:
  a.動態(tài)初始化:
    數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[長度]
    數(shù)據(jù)類型 數(shù)組名[] = new 數(shù)據(jù)類型[長度]    
    
    各部分解釋:
      等號左邊的數(shù)據(jù)類型:規(guī)定了數(shù)組中只能存儲什么類型的元素
      []:代表的是數(shù)組,一個[]代表一維數(shù)組,兩個[][]代表二維數(shù)組    
      數(shù)組名:自己取的名字,遵循小駝峰
      new:代表的是創(chuàng)建數(shù)組
      等號右邊的數(shù)據(jù)類型:要和等號左邊的數(shù)據(jù)類型一致
      [長度]:指定數(shù)組長度,規(guī)定了數(shù)組最多能存多少個數(shù)據(jù)    
          
  b.靜態(tài)初始化
    數(shù)據(jù)類型[] 數(shù)組名 = new 數(shù)據(jù)類型[]{元素1,元素2...}  -> 不推薦使用 
    數(shù)據(jù)類型 數(shù)組名[] = new 數(shù)據(jù)類型[]{元素1,元素2...}  -> 不推薦使用    

  c.簡化的靜態(tài)初始化:
    數(shù)據(jù)類型[] 數(shù)組名 = {元素1,元素2...}-> 推薦使用
        
        
5.區(qū)別:
  a.動態(tài)初始化:定義的時候只指定了長度,沒有存具體的數(shù)據(jù)
     當只知道長度,但不知道具體存啥數(shù)據(jù)時可以使用動態(tài)初始化
      
  
  b.靜態(tài)初始化:定義的時候就直接知道存啥了

定義

 //動態(tài)初始化
    int[] intArr = new int[5];
    String[] strArr = new String[20];

    //靜態(tài)初始化
    String[] strings = new String[]{"第一個","第二個","第三個","第四個"};
    System.out.println("strings = " + Arrays.toString(strings));

    //簡化靜態(tài)初始化 ---- > 推薦
    String[] strings1 = {"aaa","bbb","ccc","ddd","eee"};
    System.out.println("strings1 = " + Arrays.toString(strings1));

獲取數(shù)組長度

 System.out.println("intArr.length = " + intArr.length);
    System.out.println("strArr.length = " + strArr.length);
    System.out.println("strings.length = " + strings.length);
    System.out.println("strings1.length = " + strings1.length);

存取值以及遍歷

strings[0] = "ppp";
//遍歷數(shù)組
    for (int i = 0; i < strings.length; i++) {
      System.out.println("strings["+i+"] = " + strings[i]);
    }

注意

注意:
       a.直接輸出數(shù)組名,會直接輸出數(shù)組在內(nèi)存中的地址值
       b.如果數(shù)組中沒有存元素,那么直接獲取索引上對應的元素也是有值的,只不過不是我們存儲的數(shù)據(jù),而是數(shù)組中的元素默認值
       元素的默認值:
        整數(shù): 0
        小數(shù): 0.0
        字符: '\u0000' -> 空白字符 -> 對應的int值是0
        布爾: false
        引用: null

2.內(nèi)存

2.分為哪5大塊
  棧(重點)(Stack)
    主要運行方法,方法的運行都會去棧內(nèi)存中運行,運行完畢之后,需要"彈棧",騰空間
    
  堆(重點):(Heap)
    每new一次,都會在堆內(nèi)存中開辟空間,并為此空間自動分配一個地址值
    堆中的數(shù)據(jù)都是有默認值的
    整數(shù):0
    小數(shù):0.0
    字符: '\u0000'
    布爾:false
    引用:null    
        
  方法區(qū)(重點)(Method Area)
    代碼的"預備區(qū)",記錄了類的信息以及方法的信息

  本地方法棧(了解):專門運行native方法(本地方法)
    本地方法可以理解為對java功能的擴充 
    有很多功能java語言實現(xiàn)不了,所以就需要依靠本地方法完成
        
  寄存器(了解) -> 跟CPU有關(guān)
注意:
1.我們創(chuàng)建了兩個數(shù)組,在堆內(nèi)存中開辟了兩個不同的空間,此時修改一個數(shù)組中的元素不會影響到另外一個數(shù)組中的數(shù)據(jù)
2.arr2不是new出來的,是arr1直接賦值的,arr1在內(nèi)存中保存的是地址值,給了arr2,那么arr2的地址值和arr1就是一樣的
所以此時arr1和arr2指向了堆內(nèi)存中的同一片空間(同一個地址值,同一個數(shù)組),此時改變一個數(shù)組中的元素會影響到另外一個數(shù)組

3.二維數(shù)組

//二維數(shù)組  初始化
        //動態(tài)初始化
        int [][] intArray = new int[3][3];
        String [][] stringArray = new String[3][3];

        //靜態(tài)初始化
        int[][]  intArray2 = {{1,2,3},{4,5,6},{7,8,9}};
        String [][] stringArray2 = {{"a","b"},{"c","d"}};
        System.out.println("intArray2 = " + Arrays.deepToString(intArray2));
        System.out.println("stringArray2 = " + Arrays.deepToString(stringArray2));

        //獲取數(shù)組長度 length
        System.out.println("intArray2.length = " + intArray2.length);
        System.out.println("intArray2[0].length = " + intArray2[0].length);

        System.out.println("stringArray2.length = " + stringArray2.length);
        System.out.println("stringArray2[0].length = " + stringArray2[0].length);

        for (int[] temp : intArray2) {
            for (int i : temp) {
                System.out.print(i + " ");
            }
        }

        for (String[] strings : stringArray2) {
            for (String string : strings) {
                System.out.print(string + " ");
            }
        }

        //二維數(shù)組存數(shù)據(jù)
        stringArray2[0][1] = "哈哈哈";
        intArray2[2][0] = 999;

        //取數(shù)據(jù)
        System.out.println("stringArray2[0][1] = " + stringArray2[0][1]);
        System.out.println("intArray2[2][0] = " + intArray2[2][0]);


        //遍歷數(shù)組
        for (int i = 0; i < stringArray2.length; i++) {
            String[] temp = stringArray2[i];
            for (int j = 0; j < temp.length; j++) {
                System.out.println("temp[j] = " + temp[j]);
            }
        }

        int[][] arr1 = new int[3][];

        arr1[1] = new int[]{1,2,3};

        arr1[2] = new int[3];

        arr1[2][1] = 100;

//        System.out.println("arr1[0].length = " + arr1[0].length);  null //數(shù)組引用數(shù)據(jù)類型 默認值為null
        System.out.println("arr1[1].length = " + arr1[1].length);
        System.out.println("arr1[2].length = " + arr1[2].length);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容