[Java教程]14.數組,默認值

Java教程專欄:https://blog.csdn.net/qq_41806966/category_9929686.html

hello,I'm shendi

本節會認識學習數組.

如果在閱讀過程中有更好的建議等 可以在評論區留言.


目錄

 

數組

概念

 定義數組

初始化數組

使用數組

常見問題

實現可變數組(練習)

默認值


數組

概念

數組是一個很重要的東西.

什麼是數組? 所謂數組,是有序的元素序列.

可以理解爲存放指定物品的箱子(就好像放衣服的箱子裏只能放衣服(規定好的))

爲什麼需要數組?

我們有個需求,需要輸出從0到100的數字,這個時候會想到使用循環,如下

for (var i = 0;i < 100;i++) {
    System.out.println(i);
}

假如需求改變了,這100個數字不再是有序的,而是由系統隨機出來的,那麼這個時候我們怎麼實現這個需求呢?

我們只能一個個的進行隨機數,存入變量...

int random1 = (int)(Math.random() * 100);
int random2 = (int)(Math.random() * 100);
int random3 = (int)(Math.random() * 100);
...
int random100 = (int)(Math.random() * 100);

也就是我們要書寫一百次,沒有人願意傻傻的書寫這麼多次,我們應該找另一種方法.

因爲需要這麼多變量,我們第一時間想到的肯定是循環,我們不可能循環給同一個變量賦值(直接替換了).

這個時候,就需要使用數組了.

Java裏沒有指針,數組的本質其實就是指向一連串的內存地址...


 定義數組

定義數組的方式與變量一樣,不同的是需要加上 []

語法

  • 有兩種方式定義
  • 類型[] 變量名;
  • 類型 變量名[];

例如定義一個 int 類型的數組

  • int[] 變量名;
  • int 變量名[];

例如定義一個字符串類型的數組

  • String[] 變量名;
  • String 變量名[];

推薦使用第一種定義方式,和類型放在一起可以增強可讀性.


初始化數組

我們之前說到,數組其實就是用來存變量的一個容器,既然是一個容器,肯定有大小,裏面物品的位置等.

數組的大小被創建後是不能被改變的,就好像你櫃子的大小無法改變,除非你拆了重裝(也就等於一個新櫃子-新數組了).

既然大小是固定的,所以我們初始化數組的時候就要指定大小,所以初始化的語法爲

  • 初始化也可以有幾種
    • 第一種,初始化一個指定長度的空數組
      • new 類型[長度];
    • 第二種,直接將一些內容變爲一個數組(類型要相同)
      • 例如 int 類型的數組
      • int[] arr = {1,2,3,4,5,6};
      • 這樣,數組的長度爲 6 個
    • 第三種,與上面一樣
      • 例如String類型的數組
      • String[] arr = new String[]{"第一個","第二個"};
      • 這個數組長度爲2

直接賦值的使用逗號隔開.


使用數組

我們已經知道如何定義一個數組了,接下來就是使用.

在使用之前我們需要知道如何獲取數組長度

使用 數組的 length 屬性,返回數組的長度

例如

int[] arr = new int[10];
System.out.println(arr.length);

上面輸出結果就是10.

既然數組是存對應類型的變量的容器,那我們怎麼將變量從數組取出來?

很簡單,只要使用 數組變量名[下標]

下標就是我們的變量在數組中的位置

注: 下標都是從 0 開始,而不是 1

獲取到指定變量後,操作方法與變量一致.

獲取到後,變量還存在數組,並不會被刪除...(就相當於你打開衣櫃,看衣服,但沒有將衣服拿出來)

下面列舉使用方法

  • 創建 int 類型數組 arr
    • int[] arr = new int[5];
  • 我們創建的數組是一個空數組,int類型的默認值爲 0,所以裏面的數字都爲 0,我們將第二個數組改成 5
    • arr[1] = 5;//數組的下標從 0 開始,所以第二個就是 1.
  • 我們獲取到剛剛設置的
    • int one = arr[1];
  • 數組的長度是無法改變的,所以我們無法在原數組上進行刪除.刪除的話只能將值變爲默認值(int 類型默認值是 0)

在知道如何使用後,我們接下來就來完成剛開始說的需求:

系統隨機生成一百個變量,並輸出

這次我用了另一臺電腦,所以看到的會感覺有點不同.

創建一個java文件用於我們完成需求.

 

 將 main 寫好.

在裏面創建一個數組,大小爲 100,接下來就是使用循環來給數組進行賦值.我們就可以得到 100 個由系統生成的隨機數

代碼如下

編譯運行,結果如下

常見問題

在使用數組的過程中會發生一些很常見的問題

  • ArrayIndexOutOfBoundsException(數組越界)
    • 這個問題就是說,你的數組長度沒有5個,但是你要獲取第五個的內容,所以就出問題 (就像通過櫃子獲取到櫃子外的東西?)
  • NullPointerException(空指針異常)
    • 這是最常見的問題,不僅僅對於數組,這個問題的原因在於 你的數組沒有初始化.解決方法就是進行初始化(初始化內容在上面有)
  • OutOfMemoryError(超出內存)
    • 這個問題就是你數組的長度太大了.比如上億...
    • 計算一下,int類型的數組,一個int類型佔四個字節(byte),在計算機中都是 1024 進1,
      • 1024字節就是 1kb,
      • 1024kb就是1m
      • 1024m 就是1G
      • 也就是說,int類型數組爲1萬的話,也就佔 40000 字節 = 39kb
      • 十萬 = 400000 字節 = 390 kb
      • 千萬 = 4千萬 字節 = 39062 kb = 38M(兆)
      • 十億 = 4十億字節 = 3814M = 3.7G
      • 使用的是內存(RAM)

實現可變數組(練習)

對於固定長度的數組有時候不能滿足我們的需求,比如我們的員工數組,員工會增加,超過上限...

這個時候就需要一個無上限的數組,創建一個類來實現可變數組,供其他類使用.

思路: 數組的長度是固定的,但是內容是不變的,所以我們可以通過創建一個新的數組,然後將原數組的內容拷貝到新數組來實現長度增加.(後面學到的 ArrayList 也是這樣實現的)


默認值

boolean false

int

0
short 0
float 0.0
double 0.0
char \u0000
long 0
byte 0
 引用類型(對象) null

 

除了八大基本類型外,其餘的都是引用類型,默認值爲 null,所以 null 也是一個關鍵字.


下一節完成練習和,學習 時間類 的使用

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章