楠木軒

【JAVA學習筆記】第二章陣列與列表

由 高會雲 發佈於 科技

學習重點

一維陣列多維陣列(陣列內含有陣列,形成多層結構)列表(java.util.ArrayList類)陣列的宣告

int [] id;//宣告陣列名稱為id &資料型態為int

id = new int[3];//確保陣列能保存的內容數

也可以寫成一行

int [] id = new int[3];

也可以直接指定內容

int [] id = {1,2,3};

或是利用index值填入資料如下:

id[0] = 1;

id[1] = 2;

id[2] = 3;

在陣列的第一個位置填入1,第二個位置填入2,第三個位置填入3

用length方法調查陣列長度

int size = id.length;

此案例的size會等於3

建立Sample2_1.java練習看看

編譯後執行,可能會發現"str的長度為:"這行變成亂碼

這是因為CMD環境的編碼不一致

如果只想暫時性改變CMD環境編碼,可使用以下指令

chcp 950

※chcp = chang code page。950是繁體中文的號碼,utf-8則是65001。

此設定在關閉畫面之後就會恢復為預設值。

疑問:不知道為什麼,編譯時用utf-8編譯,CMD環境也設為utf-8,執行時中文卻還是顯示亂碼。非得設成繁體中文才行。(使用指令chcp 950)

如果想永久修改CMD環境編碼

1.Win+R,輸入regedit開啓登錄檔編輯器

2.找到HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor

3.右鍵新建一個字串值(S),取名叫Autorun,值設為@chcp 950>nul

延伸1-陣列預設值

建立Sample2_2.java

以上的代碼由於i雖然被宣告了,但裏面沒有值所以會報錯。

把以下這行註解掉再試一次

//System.out.println("i的值為:" + i);

會發現array[0]雖然沒有指定值,但是自動被預設為0了。

這是因為在new一個陣列時,會先自動填入預設值。

多維陣列

建立Sample2_3.java檔案並寫入以下內容

依照下面的步驟將java檔編譯後執行,就跟之前做的一樣。

如果怕忘記或找不到指令,可以用記事本記起來。

cd C:\Users\userXXX\Desktop\java //移動到案件資料夾

javac -encoding utf-8 Sample2_3.java //編譯(使用utf-8以避免中文亂碼)

java Sample2_3 //執行

基本上多維陣列的概念就跟windows的資料夾一樣,

每個資料夾裏面都可能還有不定數量的資料夾或檔案。

再看一個範例:

這個示例説明了創建數組時,不一定要一次把所有條件都指定好。而且每個數組的長度也可以不一樣。可以先規定好數組的大小後,一一賦值,也可以直接創立數組並賦值。本案例就用了/*和* /符號把一開始三行的代碼註釋掉。直接創立數組並賦值.

列表

JAVA利用java.util.ArrayList類實現了可變長的列表功能。

方才的陣列長度是固定不可變的,例如:

這行程式碼就確保了記憶體中,預留了3個保存int資料的空間。不能增加也不能減少。

但ArrayList類可以。

工具類

JAVA裏面有很多既有的工具類可使用,ArrayList類就是其中一種。要使用這些工具,需要先import。

像是把工具從倉庫拿到工作台來一樣。

ArrayList的使用流程如下:

import java.util.ArrayList; //載入類ArrayList array; //宣告listarray = new ArrayList(3); //確保領域,變數名= new ArrayList<資料形式>(初期大小)array.add("Tom"); //用add方法賦值String name = array.get(0); //用get方法取值可以發現這邊賦值和取值的方式和陣列不一樣,

在JAVA的工具類中,每個類都有自己的使用方法,不會用的時候就用關鍵字google吧。

基本資料類型與物件

在新增一個ArrayList時,<>內只能存放物件,不能放int,double等基本資料型態。

像下面這行程式碼因為放了int就會報錯:

為了解決這個問題,JAVA有提供一些物件來包覆基本資料型態如下表:

利用cast指定資料類型

利用get方法取出資料時,JAVA會自動檢查來源與目標的資料型態是否可以互換。

如果無法確認來源資料是什麼類型,就會在編譯時報錯。如下例:

由於無法確認array裏面會拿出什麼東西來,所以報錯,應修改成下面的樣子:

int num = (Integer)array.get(0);

利用()來指定資料型態,像是過海關一定要填申報單一樣。

省略寫法

新建ArrayList的時候,左右都要重複寫一次資料類型很麻煩,

所以在JAVA SE7版本之後,右邊的資料類型可以省略不寫。如下例:

引數的使用

在CMD畫面執行指令的時候,可以在指令後面給予引數,告訴電腦一些額外資訊。例如檔案路徑也是引數的一種。

https://imgur.com/UI0L2Vh

在執行「java」這個指令時,第一個引數會被當成要執行的路徑或檔案名稱,

第二個以後的引數則會被傳進執行的程式裏,保存在String[] args列表裏面。

我們可以在程式裏對這些引數做一些處理。處理完的結果就跟上圖一樣。

※JAVA裏的引數預設被保存為String形式,如果要轉換成數字,可以使用以下方法

int num = Integer.parseInt(args[0]);

在CMD畫面裏有許多可以直接使用的指令,這些指令常常會需要搭配引數來使用。

我們也可以自己寫指令,就如同Sample2_5一樣,自己定義指令後面的各個引數該如何被使用。

以上是第二章陣列與列表的學習紀錄

下一章會講演算子與分歧文(if)

#Java#