版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第7 7章章創(chuàng)建和使用數(shù)組創(chuàng)建和使用數(shù)組講師:李賀飛講師:李賀飛本章內(nèi)容本章內(nèi)容l 第一節(jié) 聲明和使用數(shù)組l 第二節(jié) 多維數(shù)組l 第三節(jié) 命令行參數(shù)l 第四節(jié) 可變參數(shù)第一節(jié) 聲明和使用數(shù)組 數(shù)組數(shù)組l 數(shù)組是多個相同類型數(shù)據(jù)的組合,實現(xiàn)對這些數(shù)據(jù)的統(tǒng)一管理l 數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括基本類型和引用類型l 數(shù)組屬引用類型,數(shù)組型數(shù)據(jù)是對象(object),數(shù)組中的每個元素相當(dāng)于該對象的成員變量棧:局部變量和對象的引用堆:對象(new出來的)byte bs = new byte5;bs2 = 15;bs:000000 x1230 x12301215Person persons =
2、new Person5;persons0 = new Person(張三, 18);Person p = persons0;persons:nullnullnullnullnull0 x1230 x123name:”張三”age:180 x4560 x456p: 0 x456一維數(shù)組聲明一維數(shù)組聲明l 一維數(shù)組的聲明方式聲明方式: type var 或 type var;例如: int a; int a1; double b; Mydate c; /對象數(shù)組Java語言中聲明數(shù)組時不能指定其長度(數(shù)組中元素的數(shù)), 例如: int a5; /非法一維數(shù)組一維數(shù)組初始化初始化:數(shù)組聲明且為數(shù)組元
3、素分配空間與賦值的操作分開進行int arr = new int3;arr0 = 3;arr1 = 9;arr2 = 8;:在定義數(shù)組的同時就為數(shù)組元素分配空間并賦值。int a = new int 3, 9, 8;int a = 3,9,8;MyDate dates;dates = new MyDate3;dates0 = new MyDate(22, 7, 1964);dates1 = new MyDate(1, 1, 2000);dates2 = new MyDate(22, 12, 1964);MyDate dates = new MyDate(22, 7, 1964), new My
4、Date(1, 1, 2000), new MyDate(22, 12, 1964)創(chuàng)建基本數(shù)據(jù)類型數(shù)組創(chuàng)建基本數(shù)據(jù)類型數(shù)組 (1) public class Test public static void main(String args) int s; s = new int10; for ( int i=0; i10; i+ ) si =2*i+1; System.out.println(si); l Java中使用關(guān)鍵字new創(chuàng)建數(shù)組對象l 創(chuàng)建基本數(shù)據(jù)類型一維數(shù)組對象main棧內(nèi)存s堆內(nèi)存處內(nèi)存狀態(tài)l 創(chuàng)建基本數(shù)據(jù)類型一維數(shù)組對象main棧內(nèi)存s0int對象000000000堆內(nèi)存處
5、內(nèi)存狀態(tài) public class Test public static void main(String args) int s; s = new int10; /int s=new int10; /基本數(shù)據(jù)類型數(shù)組如果沒有賦初值,基本數(shù)據(jù)類型數(shù)組如果沒有賦初值, /Java自動給他們賦默認值。自動給他們賦默認值。 for ( int i=0; i10; i+ ) si =2*i+1; System.out.println(si); 創(chuàng)建基本數(shù)據(jù)類型數(shù)組創(chuàng)建基本數(shù)據(jù)類型數(shù)組 (2)(2)main棧內(nèi)存s1int對象35791113151719堆內(nèi)存 public class Test pub
6、lic static void main(String args) int s; s = new int10; for ( int i=0; i B,0+1 - 12. 練習(xí)二1. 創(chuàng)建一個char類型的36個元素的數(shù)組,前26個元素放置A-Z, 后10個元素放置0-9。2. 使用for循環(huán)訪問所有元素并打印出來。創(chuàng)建對象數(shù)組創(chuàng)建對象數(shù)組 (1)l 創(chuàng)建元素為引用類型(對象)的數(shù)組class MyDate private int day; private int month; private int year; public MyDate(int d, int m, int y)day = d
7、; month = m; year = y; public void display()System.out.println(year + - + month + - + day); bs000000 x1230 x12310personsNullnullnullnullnull0 x23450 x2345Name:張三Age:180 x1110 x111Name:李四Age:200 x2220 x222 public class Test public static void main(String args) MyDate m; m = new MyDate10; for ( int i=
8、0; i10; i+ ) mi =new MyDate(i+1, i+1,1990+i); mi.display(); main棧內(nèi)存m堆內(nèi)存l 創(chuàng)建元素為引用類型(對象)的數(shù)組演示處內(nèi)存狀態(tài)創(chuàng)建對象數(shù)組創(chuàng)建對象數(shù)組 (2)main棧內(nèi)存mnullMyDate對象nullnullnullnullnullnullnullnullnull堆內(nèi)存處內(nèi)存狀態(tài)l 創(chuàng)建元素為引用類型(對象)的數(shù)組演示創(chuàng)建對象數(shù)組創(chuàng)建對象數(shù)組 (3) public class Test public static void main(String args) MyDate m; m = new MyDate10; for
9、( int i=0; i10; i+ ) mi =new MyDate(i+1, i+1,1990+i); mi.display(); l Java中使用關(guān)鍵字new 創(chuàng)建數(shù)組對象main棧內(nèi)存mm*MyDate對象*nullnullnullnullnullnullnull堆內(nèi)存111990221991331992for循環(huán)執(zhí)行三次后內(nèi)存狀態(tài)創(chuàng)建對象數(shù)組創(chuàng)建對象數(shù)組 (4) public class Test public static void main(String args) MyDate m; m = new MyDate10; for ( int i=0; in-1;如int a=n
10、ew int3; 可引用的數(shù)組元素為a0、a1、a2l 每個數(shù)組都有一個屬性length指明它的長度,例如:a.length 指明數(shù)組a的長度(元素個數(shù))數(shù)組一旦初始化,其長度是不可變的練練 習(xí)習(xí)1. 聲明一個intArray方法,其參數(shù)為整型數(shù)組。在main方法中創(chuàng)建20個元素的數(shù)組,并將其傳遞給intArray方法。2. intArray方法中將數(shù)組中存放2開始的20個偶數(shù)。然后使用增強型for循環(huán)訪問所有元素并打印出來。/聲明一個數(shù)組int arr = new int20;TestArray2 ta2 = new TestArray2();Array(arr);arr0 x
11、1230 x123arr0 x123ta20 x4560 x456練練 習(xí)習(xí)1. 定義類Student,包含三個屬性:學(xué)號number(int),年級state(int),成績score(int)。 創(chuàng)建20個學(xué)生對象,學(xué)號為1到20,年級和成績都由隨機數(shù)確定,打印出3年級(state值為3)的學(xué)生信息。提示:生成隨機數(shù):Math.random(),返回值類型double; 四舍五入取整:Math.round(double d),返回值類型long。1. 從鍵盤讀入學(xué)生成績,找出最高分,并輸出學(xué)生成績等級。成績=最高分-10 等級為A 成績=最高分-20 等級為B成績=最高分-30 等級為C
12、其余 等級為D提示:先讀入學(xué)生人數(shù),根據(jù)人數(shù)創(chuàng)建int數(shù)組,存放學(xué)生成績。第二節(jié) 多維數(shù)組 多維數(shù)組多維數(shù)組二維數(shù)組二維數(shù)組:數(shù)組中的數(shù)組:數(shù)組中的數(shù)組格式格式1(動態(tài)初始化)(動態(tài)初始化):int arr = new int32; 定義了名稱為arr的二維數(shù)組 二維數(shù)組中有3個一維數(shù)組 每一個一維數(shù)組中有2個元素 一維數(shù)組的名稱分別為arr0, arr1, arr2 給第一個一維數(shù)組1腳標位賦值為78寫法是:arr01 = 78;格式格式2(動態(tài)初始化)(動態(tài)初始化):int arr = new int3; 二維數(shù)組中有3個一維數(shù)組。 每個一維數(shù)組都是默認初始化值null (注意:區(qū)別于格式
13、1) 可以對這個三個一維數(shù)組分別進行初始化 arr0 = new int3; arr1 = new int1; arr2 = new int2;注:intarr = new int3; /非法非法格式格式3(靜態(tài)初始化)(靜態(tài)初始化):int arr = new int3,8,2,2,7,9,0,1,6; 定義一個名稱為arr的二維數(shù)組,二維數(shù)組中有三個一維數(shù)組 每一個一維數(shù)組中具體元素也都已初始化 第一個一維數(shù)組 arr0 = 3,8,2; 第二個一維數(shù)組 arr1 = 2,7; 第三個一維數(shù)組 arr2 = 9,0,1,6; 第三個一維數(shù)組的長度表示方式:arr2.length; 注意特殊
14、寫法情況:int x,y; x是一維數(shù)組,y是二維數(shù)組。 Java中多維數(shù)組不必都是規(guī)則矩陣形式 j ij = 0j = 1j = 2j = 3i = 0382i = 127i = 29016練習(xí)練習(xí)2:獲取arr數(shù)組中所有元素的和。使用for的嵌套循環(huán)即可。練習(xí)練習(xí)3聲明:int x,y; 以下選項允許通過編譯的是:a ) x0 = y; b) y0 = x; c) y00 = x;d) x00 = y;e) y00 = x0;f) x = y; 一一維數(shù)組:維數(shù)組:int x 或者或者int x 二維數(shù)組:二維數(shù)組:int y 或者或者 int y 或者或者 int y練習(xí)練習(xí)4使用二維數(shù)
15、組打印一個 10 行楊輝三角.11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 . 【提示】 1. 第一行有 1 個元素, 第 n 行有 n 個元素 2. 每一行的第一個元素和最后一個元素都是 1 3. 從第三行開始, 對于非第一個元素和最后一個元素的元素. yanghuiij = yanghuii-1j-1 + yanghuii-1j;數(shù)組中涉及的數(shù)組中涉及的常見常見算法算法1.求數(shù)組元素的最大值、最小值、平均數(shù)、總和等2.數(shù)組的復(fù)制、反轉(zhuǎn)3.*數(shù)組元素的排序練習(xí)練習(xí)5定義一個int型的一維數(shù)組,包含10個元素,分別賦一些隨機整數(shù),然后求出所有元素的最大值,最小值
16、,平均值,和值,并輸出出來。array10 x1230 x123array20 x123練習(xí)練習(xí) 6使用簡單數(shù)組(1)創(chuàng)建一個名為TestArray的類,在main()方法中聲明array1和array2兩個變量,他們是int類型的數(shù)組。(2)使用大括號,把array1初始化為8個素數(shù):2,3,5,7,11,13,17,19。(3)顯示array1的內(nèi)容。(4)賦值array2變量等于array1,修改array2中的偶索引元素,使其等于索引值(如array0=0,array2=2)。打印出array1。思考:思考:array1和array2是什么關(guān)系?拓展:拓展:修改題目,實現(xiàn)array2對
17、array1數(shù)組的復(fù)制array10 x1230 x123array2 0 x123數(shù)組排序數(shù)組排序l 插入排序 直接插入排序、折半插入排序、Shell排序l 交換排序 冒泡排序、快速排序(或分區(qū)交換排序)l 選擇排序 簡單選擇排序、堆排序l 歸并排序l 基數(shù)排序排序方法的選擇排序方法的選擇(1)若n較小(如n50),可采用直接插入直接插入或直接選擇排序直接選擇排序。 當(dāng)記錄規(guī)模較小時,直接插入排序較好;否則因為直接選擇移動的記錄數(shù)少于直接插入,應(yīng)選直接選擇排序為宜。(2)若文件初始狀態(tài)基本有序(指正序),則應(yīng)選用直接直接插插入入、冒泡冒泡或隨機的快速排序快速排序為宜;(3)若n較大,則應(yīng)采用
18、時間復(fù)雜度為O(nlgn)的排序方法:快速排序快速排序、堆排序堆排序或歸并排序歸并排序。冒泡排序冒泡排序排序思想:相鄰兩元素進行比較,如有需要則進行交換,每完成一次循環(huán)就將最大元素排在最后(如從小到大排序),下一次循環(huán)是將其它的數(shù)進行類似操作。數(shù)組排序數(shù)組排序l java.util.Arrays類的sort()方法提供了數(shù)組元素排序功能:import java.util.*;public class Sort public static void main(String args) int number = 5,900,1,5,77,30,64,700;Arrays.sort(number);
19、for(int i = 0; i number.length; i+)System.out.println(numberi); 操作數(shù)組的工具類:操作數(shù)組的工具類:Arraysl java.util.Arrays類包含了用來操作數(shù)組(比如排序和搜索)的各種方法。Arrays擁有一組static方法。 equals():比較兩個array是否相等。array擁有相同元素個數(shù),且所有對應(yīng)元素兩兩相等。fill():將值填入array中。 sort():用來對array進行排序。 binarySearch():在排好序的array中尋找元素。 另:System.arraycopy():array的復(fù)
20、制。 數(shù)組數(shù)組操作常見問題操作常見問題數(shù)組腳標越界異常數(shù)組腳標越界異常(ArrayIndexOutOfBoundsException)int arr = new int2;System.out.println(arr2);訪問到了數(shù)組中的不存在的腳標時發(fā)生??罩羔槷惓?罩羔槷惓?NullPointerException)int arr = null;System.out.println(arr0);arr引用沒有指向?qū)嶓w,卻在操作實體中的元素時。編譯時,不報錯編譯時,不報錯!第三節(jié) 命令行參數(shù) 理解理解main方法的語法方法的語法 由于java虛擬機需要調(diào)用類的main()方法,所以該方法的訪
21、問權(quán)限必須是public,又因為java虛擬機在執(zhí)行main()方法時不必創(chuàng)建對象,所以該方法必須是static的,該方法接收一個String類型的數(shù)組參數(shù),該數(shù)組中保存執(zhí)行java命令時傳遞給所運行的類的參數(shù)。 命令行參數(shù)用法舉例命令行參數(shù)用法舉例 public class CommandPara public static void main(String args) for ( int i = 0; i args.length; i+ ) System.out.println(args + i + = + argsi); /運行程序CommandPara.javajava CommandPara lisa bily Mr B
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)銷售個人的工作總結(jié)
- 鄉(xiāng)村醫(yī)生先進事跡500字(10篇)
- DB12T 598.17-2015 天津市建設(shè)項目用地控制指標 第17部分:墓葬項目
- 中秋節(jié)的慰問信(5篇)
- 團支部書記競選演講稿四篇
- 新學(xué)期學(xué)習(xí)計劃范本錦集8篇
- 業(yè)務(wù)員的實習(xí)報告范文4篇
- 高等數(shù)學(xué)教程 上冊 第4版 習(xí)題及答案 P177 第7章 多元微積分
- 天然氣公司股東協(xié)議書-企業(yè)管理
- 3D立體風(fēng)立體商務(wù)匯報
- 藍色簡約風(fēng)中國空軍成立75周年紀念日
- 2024年全國企業(yè)員工全面質(zhì)量管理知識競賽題庫(含答案)(共132題)
- 知識創(chuàng)業(yè)思維與方法智慧樹知到答案2024年湖南師范大學(xué)
- 無人機全行業(yè)保險
- 2023年廣東省建筑設(shè)計研究院校園招聘筆試參考題庫附帶答案詳解
- 員工人事檔案目錄
- 迅達SWE30-100K自動扶梯電路分析_圖文
- 電子工程師必備基礎(chǔ)知識
- 用戶運營基礎(chǔ)知識
- 鈑金與焊接工藝規(guī)范
- 最新X線診斷報告模板(干貨分享)
評論
0/150
提交評論