下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第4章 數(shù)組和方法,本章主要介紹Java語(yǔ)言的數(shù)組和方法。通過(guò)學(xué)習(xí)讀者可以掌握方法及其參數(shù)的使用、方法調(diào)用方法、數(shù)組的使用和排序,以及方法、數(shù)組與循環(huán)語(yǔ)句的綜合應(yīng)用。 本章要點(diǎn) 4.1 數(shù)組 4.2 方法 思考與練習(xí)4,本章邏輯結(jié)構(gòu),4.1 數(shù)組 4.1.1 什么是數(shù)組 4.1.2 數(shù)組的使用 實(shí)例27 投票選佳麗 4.1.3 二維數(shù)組 實(shí)例28 求兩個(gè)矩陣的和 實(shí)例29 矩陣的行列互換 4.1.4 什么是排序 實(shí)例30 插入排序法 實(shí)例31 選擇排序法 實(shí)例32 冒泡排序法,本章邏輯結(jié)構(gòu),4.2 方法 4.2.1 方法 實(shí)例33 求最大公因數(shù)和最小公倍數(shù)之二 4.2.2 遞歸 實(shí)例34 費(fèi)波
2、納契數(shù)列 實(shí)例35 插入排序法之二 實(shí)例36 哥德巴赫猜想,4.1 數(shù)組,4.1.1 什么是數(shù)組 在實(shí)際應(yīng)用中,經(jīng)常需要處理一批相互有聯(lián)系、有一定順序、同一類型和具有相同性質(zhì)的數(shù)據(jù)。例如,50個(gè)學(xué)生的期末總成績(jī),一個(gè)矩陣中的所有數(shù)據(jù)等等。Java語(yǔ)句提供了數(shù)組來(lái)保存和處理這類數(shù)據(jù)。數(shù)組是指一組類型相同的數(shù)據(jù),每個(gè)數(shù)據(jù)稱為一個(gè)數(shù)組元素。例如:如果上述50個(gè)學(xué)生的期末總成績(jī)構(gòu)成一個(gè)數(shù)組,則每個(gè)學(xué)生的成績(jī)叫數(shù)組元素;如果某個(gè)矩陣中的數(shù)據(jù)構(gòu)成一個(gè)數(shù)組,則其中的每個(gè)數(shù)字叫數(shù)組元素。 有了數(shù)組,就可以用同一個(gè)變量名來(lái)表示一系列的數(shù)據(jù),并用下標(biāo)來(lái)表示同一數(shù)組中的不同數(shù)組元素。每個(gè)元素都具有一個(gè)下標(biāo)值,也就是
3、該元素在數(shù)組中的位置。在Java語(yǔ)言中數(shù)組元素可以是簡(jiǎn)單數(shù)據(jù)類型,也可以是對(duì)象數(shù)據(jù)類型。數(shù)組的主要特點(diǎn)有5個(gè)。,4.1 數(shù)組,4.1.1 什么是數(shù)組 (1)數(shù)組是相同數(shù)據(jù)類型元素的集合。 (2)數(shù)組中的各個(gè)元素在內(nèi)存中按照先后順序連續(xù)存放在一起。 (3)每個(gè)數(shù)組元素用其所在數(shù)組的名字和其在數(shù)組中的順序位置表示。例如base0代表變量名為base的數(shù)組中的第一個(gè)元素,base1代表數(shù)組base的第二個(gè)元素,依此類推,basen代表數(shù)組base的第n+1個(gè)元素。 (4)數(shù)組的下標(biāo)值是從0開(kāi)始的,其可以是int類型的數(shù)據(jù)、變量和算術(shù)表達(dá)式。例如,base a 、s 5*10 都是合法的下標(biāo)值。 (5
4、)每個(gè)數(shù)組都有長(zhǎng)度,也就是其所能含有元素的個(gè)數(shù)。,4.1 數(shù)組,4.1.2 數(shù)組的使用 1使用數(shù)組的步驟 使用數(shù)組一共有3個(gè)步驟,分別介紹如下。 (1)定義數(shù)組。在使用數(shù)組之前必須先定義數(shù)組。定義數(shù)組主要是定義數(shù)組的名稱和數(shù)組中元素的數(shù)據(jù)類型,其形式有兩種: 數(shù)組元素類型 數(shù)組名稱; 數(shù)組元素類型 數(shù)組名稱; 其中的數(shù)組名稱必須符合Java語(yǔ)言標(biāo)識(shí)符規(guī)則,例如,以下定義語(yǔ)句都是合法的。 int results; boolean info; double tips_01; String abc; 定義數(shù)組的目的只是告訴系統(tǒng)一個(gè)新的數(shù)組的名稱和類型,數(shù)組本身不能存放任何數(shù)組元素,現(xiàn)階段的數(shù)組值為n
5、ull。,4.1 數(shù)組,4.1.2 數(shù)組的使用 1使用數(shù)組的步驟 (2)創(chuàng)建數(shù)組。指定數(shù)組的長(zhǎng)度,并分配相應(yīng)的內(nèi)存空間。創(chuàng)建數(shù)組使用關(guān)鍵字new,例如,results = new int50;表示給數(shù)組results分配內(nèi)存空間,用來(lái)保存50個(gè)int類型的數(shù)字。定義數(shù)組和創(chuàng)建數(shù)組也可以合并為一條語(yǔ)句,例如, int results = new int50; String abc = new String100; 在創(chuàng)建數(shù)組后,數(shù)組的默認(rèn)值由其元素的類型決定,例如:整型數(shù)據(jù)的默認(rèn)值為0,實(shí)型數(shù)據(jù)的默認(rèn)值為0.0,布爾型數(shù)據(jù)的默認(rèn)值為false。,4.1 數(shù)組,4.1.2 數(shù)組的使用 1使用數(shù)組的
6、步驟 (3)數(shù)組元素 在Java語(yǔ)言中,使用下標(biāo)來(lái)標(biāo)識(shí)數(shù)組中特定位置的元素,其形式為:數(shù)組名下標(biāo)。下標(biāo)值由0開(kāi)始到數(shù)組長(zhǎng)度減1為止。以前面定義并創(chuàng)建的results數(shù)組為例:result0表示數(shù)組中的第一個(gè)元素;numbers49表示數(shù)組中的最后一個(gè)元素。數(shù)組results的結(jié)構(gòu)如圖4.1所示。 圖4.1 數(shù)組results的結(jié)構(gòu),圖4.1 數(shù)組results的結(jié)構(gòu),4.1 數(shù)組,4.1.2 數(shù)組的使用 2數(shù)組的初始化 數(shù)組的初始化是指不使用系統(tǒng)的數(shù)組默認(rèn)值,自行給數(shù)組賦初值,其方法有2種: (1)按照順序依次給每個(gè)元素賦值。例如給數(shù)組results賦值: results0 = 87; res
7、ults1 = 90; results48 = 45; results49 = 100;,4.1 數(shù)組,4.1.2 數(shù)組的使用 2數(shù)組的初始化 (2)在定義數(shù)組的同時(shí)直接給數(shù)組賦初值,初值的個(gè)數(shù)是數(shù)組的長(zhǎng)度。初值必須用大括號(hào)括起來(lái),用逗號(hào)分隔開(kāi),例如: int results = 87,90,77,55,98,37,64,100 ; String nums = one,two,three,four,five,six,seven,eight ; 在使用第2種方法時(shí),一定要注意定義和初始化要在一條語(yǔ)句中完成,也就是說(shuō)不可以定義數(shù)組后,在另一條語(yǔ)句中再給數(shù)組賦初值。例如: int numbers;
8、numbers = 1, 2, 3 ; 是語(yǔ)法錯(cuò)誤的語(yǔ)句。只可以寫(xiě)成 int numbers = 1, 2, 3 ;,4.1 數(shù)組,4.1.2 數(shù)組的使用 3數(shù)組的復(fù)制 事實(shí)上,我們創(chuàng)建的每個(gè)數(shù)組都是Array類中的一個(gè)對(duì)象,所以在復(fù)制數(shù)組時(shí)有兩種情況。 (1)兩個(gè)數(shù)組指向同一個(gè)元素空間。也就是說(shuō)我們定義并創(chuàng)建了一個(gè)數(shù)組,其在內(nèi)存中具有一定的空間,然后又定義了一個(gè)數(shù)組,讓其同樣表示該內(nèi)存空間中的數(shù)組元素。例如: int num_1 = 1, 2, 3, 4, 5, 6; int num_2; num_2 = num_1; 其中,num_2 = num_1;語(yǔ)句表示數(shù)組num_2與數(shù)組num_1
9、具有同樣的元素,其關(guān)系如圖4.2所示。,4.1 數(shù)組,4.1.2 數(shù)組的使用 3數(shù)組的復(fù)制,圖4.2 數(shù)組num_1與num_2的關(guān)系,4.1 數(shù)組,4.1.2 數(shù)組的使用 3數(shù)組的復(fù)制 如果改變一個(gè)數(shù)組中某個(gè)元素的值,則另一個(gè)數(shù)組中相應(yīng)位置的元素值也隨之改變。例如:讓num_28 = 60,則num_18中的值也隨之變?yōu)?0。這是因?yàn)閚um_1和num_2指向的是同一個(gè)數(shù)組,num_18和num_28保存的是同一個(gè)數(shù)值。 (2)兩個(gè)數(shù)組指向內(nèi)容相同的兩個(gè)元素空間。如果要真正復(fù)制一個(gè)數(shù)組,使得我們?cè)谛薷膹?fù)制數(shù)組的值時(shí),不會(huì)影響到源數(shù)組的話,則需要定義一個(gè)和源數(shù)組長(zhǎng)度相同的數(shù)組,然后再把源數(shù)組中
10、的元素一一復(fù)制給新的數(shù)組。 求任何數(shù)組的長(zhǎng)度都可以使用: 數(shù)組名.length 數(shù)組num_1和num_2的關(guān)系如圖4.3所示。,4.1 數(shù)組,4.1.2 數(shù)組的使用 3數(shù)組的復(fù)制,圖4.3 數(shù)組num_1與num_2的關(guān)系,4.1 數(shù)組,4.1.3 二維數(shù)組 1定義二維數(shù)組 與定義一維數(shù)組類似,定義二維數(shù)組也有兩種形式: (1)數(shù)組元素類型 數(shù)組名稱; 例如: int results; char c; (2)數(shù)組元素類型 數(shù)組名稱; 例如: String abc; double company_01;,4.1 數(shù)組,4.1.3 二維數(shù)組 2創(chuàng)建二維數(shù)組 二維數(shù)組可以看作一個(gè)按照行和列存儲(chǔ)數(shù)據(jù)
11、的內(nèi)存空間。我們可以按照所需確定數(shù)組每行和每列的長(zhǎng)度,有兩種創(chuàng)建方法。 (1)數(shù)組每行、每列之間長(zhǎng)度相同。 例如,int results = new int23;語(yǔ)句表示創(chuàng)建一個(gè)2行3列的二維數(shù)組,其結(jié)構(gòu)如圖4.5所示。該數(shù)組共有result00、result01、result02、result10、result11和result12六個(gè)數(shù)組元素。,圖4.5 二維數(shù)組results,4.1 數(shù)組,4.1.3 二維數(shù)組 2創(chuàng)建二維數(shù)組 (2)數(shù)組每行、每列之間長(zhǎng)度不相同。 例如: results = new int2;/語(yǔ)句表示創(chuàng)建一個(gè)2行的二維數(shù)組。 results0 = new int3;/
12、語(yǔ)句表示該數(shù)組的第一行有3列,也就是3個(gè)元素。 results1 = new int5;/語(yǔ)句表示該數(shù)組的第二行有5列,也就是5個(gè)元素。 數(shù)組results的結(jié)構(gòu)如圖4.6所示。,圖4.6 二維數(shù)組results,4.1 數(shù)組,4.1.3 二維數(shù)組 3初始化二維數(shù)組 與初始化一維數(shù)組類似,初始化二維數(shù)組也有兩種方法。 (1)按照順序依次給每個(gè)元素賦值。 例如給數(shù)組results賦值: int results; results = new int23; results00 = 67; results01 = 97; results02 = 100; results10 = 89; results
13、11 = 73; results12 = 65; (2)在定義數(shù)組的同時(shí)直接給數(shù)組賦初值。 整個(gè)初值數(shù)據(jù)用大括號(hào)括起來(lái),其中的每一行初值也必須用大括號(hào)括起來(lái),用逗號(hào)分隔開(kāi)。內(nèi)層大括號(hào)內(nèi)的數(shù)值也要用逗號(hào)分隔開(kāi)。例如: int results = 84,77,100 , 98,63,65 ;,4.1 數(shù)組,4.1.3 二維數(shù)組 4二維數(shù)組的長(zhǎng)度 二維數(shù)組的長(zhǎng)度是指行數(shù)的個(gè)數(shù),二維數(shù)組每行的長(zhǎng)度是指每行的元素個(gè)數(shù)。例如:results.length表示二維數(shù)組results的長(zhǎng)度,也就是行數(shù);results i.length表示二維數(shù)組results第i行的長(zhǎng)度,也就是元素個(gè)數(shù)。,4.1 數(shù)組,4.
14、1.4 什么是排序 所謂排序是指將一組無(wú)序的數(shù)據(jù)元素調(diào)整為一個(gè)從小到大或者從大到小排列的有序序列。排序是計(jì)算機(jī)程序設(shè)計(jì)中的一類重要運(yùn)算。 在實(shí)際工作中,我們經(jīng)常要將數(shù)據(jù)進(jìn)行比較、排序,以便對(duì)已排序的數(shù)據(jù)進(jìn)行檢索。例如:學(xué)生的高考成績(jī)需要排序后,才能進(jìn)行錄取工作。 排序是計(jì)算機(jī)語(yǔ)言編程的一個(gè)經(jīng)典問(wèn)題,到目前為止最常用排序方法有插入排序法、選擇排序法和冒泡排序法等排序法。不論使用哪種排序方法編寫(xiě)Java程序,其最根本的操作就是變量的數(shù)值交換。下面我們將通過(guò)實(shí)例來(lái)介紹3種常用排序法。,4.2 方法,4.2.1 方法 1定義方法 定義方法的形式有多種,這里介紹最基本的形式。 方法類型 方法名稱( 參數(shù)
15、1,參數(shù)2,參數(shù)n ) 方法體 其中,方法類型也就是返回值的類型,它要與方法中的return語(yǔ)句內(nèi)的返回?cái)?shù)值類型保持一致。如果方法沒(méi)有返回值,則方法類型為void。例如,Java Application中的main()方法的類型就是void,表示該方法沒(méi)有返回值。方法的返回值類型可以是普通數(shù)據(jù)類型、數(shù)組和類。 方法名稱后面的小括號(hào)中,可以有方法參數(shù),也可以沒(méi)有參數(shù)。當(dāng)參數(shù)為多個(gè)時(shí),要用逗號(hào)隔開(kāi)。每個(gè)參數(shù)都必須定義類型和名稱,類型可以是普通變量、數(shù)組和類的對(duì)象,名稱要符合Java標(biāo)識(shí)符的規(guī)則。 方法體是在一對(duì)大括號(hào)內(nèi)的一個(gè)或者多個(gè)語(yǔ)句。這些語(yǔ)句用來(lái)處理方法參數(shù)、類的全局變量和方法本身的局部變量中
16、的數(shù)據(jù),最后將結(jié)果通過(guò)return語(yǔ)句返回?;蛘?,不返回任何值,只是完成指定的工作。,4.2 方法,4.2.1 方法 2變量作用范圍 上面我們提到了全局變量(Global Variable)和局部變量(Local Variable),它們是根據(jù)變量被定義的位置不同而劃分的。 (1)全局變量:是在類中但不在任何方法內(nèi)定義的變量。全局變量可以在整個(gè)類中,包括類的所有方法中使用。 (2)局部變量:是在類中的某個(gè)方法內(nèi)定義的變量。局部變量只可以在其定義的方法內(nèi)使用。如果要在其他方法內(nèi)或類中使用,則會(huì)產(chǎn)生錯(cuò)誤。 3調(diào)用方法 定義方法后,必須調(diào)用方法才能執(zhí)行其中的語(yǔ)句,實(shí)現(xiàn)其功能。根據(jù)方法類型的不同,有兩
17、種調(diào)用形式。 (1)void類型的方法。把方法調(diào)用作為一條語(yǔ)句。例如,print(); (2)其他類型的方法。把方法調(diào)用作為一個(gè)表達(dá)式或者表達(dá)式中的一部分。例如,sum = numbers( n );語(yǔ)句中方法調(diào)用numbers( n )作為賦值語(yǔ)句的一部分。,4.2 方法,4.2.1 方法 4return語(yǔ)句 return語(yǔ)句是在方法中使用。它的作用是終止當(dāng)前方法的執(zhí)行,返回到調(diào)用該方法的語(yǔ)句處,并繼續(xù)向下執(zhí)行語(yǔ)句。return語(yǔ)句有兩種形式。 (1)return 表達(dá)式; 計(jì)算表達(dá)式的值,然后將該值返回到調(diào)用該方法的語(yǔ)句中。Java語(yǔ)言要求返回值(也就是表達(dá)式的值)必須與方法聲明中的返回值
18、類型一致。 (2)return; 當(dāng)方法的類型為void,不需要返回值時(shí),可以使用這種格式終止方法的執(zhí)行,并返回,繼續(xù)執(zhí)行下面的語(yǔ)句。這種格式一般用于if語(yǔ)句或者switch語(yǔ)句等選擇結(jié)構(gòu)形式。 如果忽略該種格式,則在執(zhí)行完方法中的所有語(yǔ)句后,自動(dòng)返回并繼續(xù)執(zhí)行下面的語(yǔ)句。,4.2 方法,4.2.1 方法 5方法的參數(shù) 方法參數(shù)是在調(diào)用方法的同時(shí),傳遞給方法的數(shù)據(jù),用于方法體語(yǔ)句中。調(diào)用方法時(shí)所傳遞的參數(shù)類型、參數(shù)順序和參數(shù)個(gè)數(shù)必須與方法中的參數(shù)類型、參數(shù)順序和參數(shù)個(gè)數(shù)一致。例如,如果調(diào)用a()方法的語(yǔ)句為int i = a( 100,滿分,A ),則a()方法中的參數(shù)必須為a( int i,
19、String s, char c ),其中,作為參數(shù)的變量名稱可以自行確定,但參數(shù)類型和參數(shù)順序必須相同。,4.2 方法,4.2.2 遞歸 1遞歸 遞歸(Recursion)方式可以把一個(gè)大型復(fù)雜的問(wèn)題層層轉(zhuǎn)化,最終變成一個(gè)與原問(wèn)題類似的簡(jiǎn)單問(wèn)題。這樣只需要少量的操作就可以解決一個(gè)復(fù)雜的計(jì)算,大大地減少了程序的語(yǔ)句數(shù)量。遞歸最主要的兩個(gè)部分是: (1)遞歸出口。遞歸出口是遞歸結(jié)束的條件,也就是最終變成的簡(jiǎn)單問(wèn)題。這個(gè)簡(jiǎn)單問(wèn)題的解決方法必須已經(jīng)知道,或者已經(jīng)給出計(jì)算結(jié)果。例如,在求費(fèi)波納契數(shù)列時(shí),其遞歸出口為第一和第二個(gè)數(shù)的值為1。 (2)遞歸表達(dá)式。從遞歸出口到最終復(fù)雜問(wèn)題的轉(zhuǎn)化規(guī)律。例如,在求費(fèi)波納契數(shù)列時(shí),其遞歸表達(dá)式為一個(gè)數(shù)是其前兩個(gè)數(shù)字
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 康復(fù)樂(lè)園規(guī)范管理制度
- 超市食品小作坊制度規(guī)范
- 傳染病規(guī)范制度及流程
- 值日時(shí)間排班制度規(guī)范
- 第三方倉(cāng)儲(chǔ)規(guī)范管理制度
- 醫(yī)務(wù)人員語(yǔ)言規(guī)范制度
- 電梯維保單保管制度規(guī)范
- 黨政機(jī)關(guān)規(guī)范會(huì)議制度
- 2026年湖南省中南銻鎢工業(yè)貿(mào)易有限公司招聘?jìng)淇碱}庫(kù)含答案詳解
- 單位水電使用制度規(guī)范
- 高一物理(人教版)試題 必修二 階段質(zhì)量檢測(cè)(一) 拋體運(yùn)動(dòng)
- 2026瑞眾保險(xiǎn)全國(guó)校園招聘參考筆試題庫(kù)及答案解析
- 2025年山東省棗莊市檢察院書(shū)記員考試題(附答案)
- 醫(yī)藥連鎖年終總結(jié)
- 2025-2026學(xué)年人教版七年級(jí)生物上冊(cè)知識(shí)點(diǎn)梳理總結(jié)
- 工業(yè)設(shè)計(jì)工作流程及標(biāo)準(zhǔn)教程
- 《好睡新的睡眠科學(xué)與醫(yī)學(xué)》閱讀筆記
- 寒假安全教育課件模板
- GB 20101-2025涂裝有機(jī)廢氣凈化裝置安全技術(shù)要求
- 熔鋁爐施工方案及流程
- 折彎工技能等級(jí)評(píng)定標(biāo)準(zhǔn)
評(píng)論
0/150
提交評(píng)論