day05-Java數組詳解

05.01_Java語言基礎(數組概述和定義格式說明)(了解)

  • A:為什么要有數組(容器)

    • 為了存儲同種數據類型的多個值
  • B:數組概念

    • 數組是存儲同一種數據類型多個元素的集合。也可以看成是一個容器。
    • 數組既可以存儲基本數據類型,也可以存儲引用數據類型。
  • C:數組定義格式
    數據類型[] 數組名 = new 數據類型[數組的長度];

05.02_Java語言基礎(數組的初始化動態初始化)(掌握)

  • A:什么是數組的初始化
    • 就是為數組開辟連續的內存空間,并為每個數組元素賦予值
  • B:如何對數組進行初始化
    • a:動態初始化 只指定長度,由系統給出初始化值
      • int[] arr = new int[5];
    • b:靜態初始化 給出初始化值,由系統決定長度
  • C:動態初始化的格式:
    • 數據類型[] 數組名 = new 數據類型[數組長度];
整數類型:byte,short,int,long默認初始化都是0
浮點類型:float,double默認初始化都是0.0
布爾類型:boolean默認初始化false
字符類型:char默認初始化 '\u0000'
// 上面'\u0000'意思是 把0000以Unicode碼轉義存儲了,char在內存占2個字節,是16個二進制,
// \u每一個0其實代表的是16進制的0,那么4個0就代表16個二進制單位

int[] array = new int[6];
System.out.println(array);  // 結果是  [I@7852e922

[ 代表一維數組    I代表int  @代表地址引用  7852e922地址十六進制

05.03_Java語言基礎(Java中的內存分配以及棧和堆的區別)

  • A:棧(掌握)
    • 存儲局部變量 :定義在方法上和方法中的變量
  • B:堆(掌握)
    • 存儲new出來的數組或對象
  • C:方法區
    • 面向對象部分講解 (自己寫的代碼)
  • D:本地方法區
    • 和系統相關
  • E:寄存器
    • 給CPU使用

05.04_Java語言基礎(數組的內存圖解1一個數組)(掌握)

Paste_Image.png

05.07_Java語言基礎(數組的初始化靜態初始化及內存圖)(掌握)

  • A:靜態初始化的格式:
    • 格式:數據類型[] 數組名 = new 數據類型[]{元素1,元素2,…};
    • 簡化格式:
      • 數據類型[] 數組名 = {元素1,元素2,…};
  • B:案例演示
    • 對數組的解釋
    • 輸出數組名稱和數組元素
// 靜態創建數組一(聲明和賦值可以分開)
int[] xxoo = new int[]{1,2,3,5,6};

// 靜態創建數組二(聲明和賦值需要在同一行)
int[] xxo2 = {5,6,1,4,7,1};

05.08_Java語言基礎(數組操作的兩個常見小問題越界和空指針)(掌握)

  • A:案例演示
    • a:ArrayIndexOutOfBoundsException:數組索引越界異常
      • 原因:你訪問了不存在的索引。
    • b:NullPointerException:空指針異常
      • 原因:數組已經不在指向堆內存了。而你還用數組名去訪問元素。
      • int[] arr = {1,2,3};
      • arr = null;
      • System.out.println(arr[0]);

05.09_Java語言基礎(數組的操作1遍歷)(掌握)

  • A:案例演示
    • 數組遍歷:就是依次輸出數組中的每一個元素。

    • 數組的屬性:arr.length數組的長度

    • 數組的最大索引:arr.length - 1;

        public static void print(int[] arr) {
            for (int i = 0;i < arr.length ;i++ ) {
                System.out.print(arr[i] + " ");
            }
        }
      

05.10_Java語言基礎(數組的操作2獲取最值)(掌握)

  • A:案例演示
    • 數組獲取最值(獲取數組中的最大值最小值)
int[] arr = {4,5,7,1,2,6,0};
  int max = arr[0];
  //從數組的第二個元素開始遍歷
  for (int i = 1;i < arr.length ;i++ ) {            
      max = max > arr[i] ? max : arr[i];
  }
  System.out.println(max);

05.11_Java語言基礎(數組的操作3反轉)(掌握)

  • A:案例演示
    • 數組元素反轉(就是把元素對調)

        public static void reverseArray(int[] arr) {
            for (int i = 0;i < arr.length / 2 ; i++) {
                //arr[0]和arr[arr.length-1-0]交換
                //arr[1]和arr[arr.length-1-1]交換
                //arr[2]和arr[arr.lentth-1-2]
                //...(整數情況下,可以不使用中間值交換,想想怎么做)
      
                int temp = arr[i];
                arr[i] = arr[arr.length-1-i];
                arr[arr.length-1-i] = temp;
            }
        }
      

05.12_Java語言基礎(數組的操作4查表法)(掌握)

  • A:案例演示
    • 數組查表法(根據鍵盤錄入索引,查找對應星期)
public static char getWeek(int week) 
{
    char[] arr = {' ','一','二','三','四','五','六','日'};     
     if (weak < 0 || weak >= arr.length) {
        return arr[0];
    }
    return arr[week];                                           
}

05.13_Java語言基礎(數組的操作5基本查找)(掌握)

  • A:案例演示
    • 數組元素查找(查找指定元素第一次在數組中出現的索引)
public static int getIndex(int[] arr,int value)
{
    if (arr.length == 0) return -1 ;
    for (int i = 0;i < arr.length ;i++ ) {
        if (arr[i] == value) return i;
    }
    return -1;
} 

05.14_Java語言基礎(二維數組概述和格式1的講解)(了解)

  • A:二維數組概述
  • B:二維數組格式1
    • int[][] arr = new int[3][2];
  • C:二維數組格式1的解釋
  • D:注意事項
    • a:以下格式也可以表示二維數組
      • 1:數據類型 數組名[][] = new 數據類型[m][n];
      • 2:數據類型[] 數組名[] = new 數據類型[m][n];
    • B:注意下面定義的區別
    •   int x;
        int y;
        int x,y;
        
        int[] x;
        int[] y[];
        
        int[] x,y[];    x是一維數組,y是二維數組
      
  • E:案例演示
    • 定義二維數組,輸出二維數組名稱,一維數組名稱,一個元素
二維數組內存圖3.png

05.16_Java語言基礎(二維數組格式2的講解及其內存圖解)(了解)

  • A:二維數組格式2
    • int[][] arr = new int[3][];
  • B:二維數組格式2的解釋
int[][] arr = new int[3][2];
// 等同于{{1,2},{1,2},{1,2}}
System.out.println(arr.length); //3
System.err.println(arr[0]); // [I@7852e922

int[][] arr2 = new int[3][];
System.out.println(arr2.length); //3
System.err.println(arr2[0]); // null

int[][] arr3 = {{},{},{}};
System.out.println(arr3.length); //3
System.err.println(arr3[0]); // [I@4e25154f

05.17_Java語言基礎(二維數組格式3的講解及其內存圖解)(了解)

  • A:二維數組格式3
    • int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};

05.18_Java語言基礎(二維數組練習1遍歷)(掌握)

  • A:案例演示
    • 需求:二維數組遍歷

    • 外循環控制的是二維數組的長度,其實就是一維數組的個數。

    • 內循環控制的是一維數組的長度。

        int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
      
        for (int i = 0;i < arr.length ;i++ ) {          //獲取到每個二維數組中的一維數組
            for (int j = 0;j < arr[i].length ;j++ ) {   //獲取每個一維數組中的元素
                System.out.print(arr[i][j] + " ");
            }
      
            System.out.println();
        }
      

05.19_Java語言基礎(二維數組練習2求和)(掌握)

  • A:案例演示
  •   需求:公司年銷售額求和
      某公司按照季度和月份統計的數據如下:單位(萬元)
      第一季度:22,66,44
      第二季度:77,33,88
      第三季度:25,45,65
      第四季度:11,66,99
      
      int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
    
      int sum = 0;                                    //定義變量,記錄每次相加的結果
      for (int i = 0;i < arr.length ;i++ ) {          //獲取每一個一維數組
          for (int j = 0;j < arr[i].length ;j++ ) {   //獲取每一個一維數組中的元素
              sum = sum + arr[i][j];                  //累加
          }
      }
    
      System.out.println(sum);
    

05.20_Java語言基礎(思考題Java中的參數傳遞問題及圖解)(掌握)

  • A:案例演示
  •   看程序寫結果,并畫內存圖解釋
      public static void main(String[] args) {
          int a = 10;
          int b = 20;
          System.out.println("a:"+a+",b:"+b);
          change(a,b);
          System.out.println("a:"+a+",b:"+b);
    
          int[] arr = {1,2,3,4,5};
          change(arr);
          System.out.println(arr[1]);
      }
    
      public static void change(int a,int b) {
          System.out.println("a:"+a+",b:"+b);
          a = b;
          b = a + b;
          System.out.println("a:"+a+",b:"+b);
      }
    
      public static void change(int[] arr) {
          for(int x=0; x<arr.length; x++) {
              if(arr[x]%2==0) {
                  arr[x]*=2;
              }
          }
      }
    

END。
我是小侯爺。
在魔都艱苦奮斗,白天是上班族,晚上是知識服務工作者。
如果讀完覺得有收獲的話,記得關注和點贊哦。
非要打賞的話,我也是不會拒絕的。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容

  • Win7下如何打開DOS控制臺? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,610評論 4 12
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,764評論 0 33
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,737評論 18 399
  • Java經典問題算法大全 /*【程序1】 題目:古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子...
    趙宇_阿特奇閱讀 1,894評論 0 2
  • 05.01_Java語言基礎(數組概述和定義格式說明)(了解) A:為什么要有數組(容器)為了存儲同種數據類型的多...
    樹深時見鹿丶閱讀 232評論 0 0