版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第2章Java語言基礎(chǔ)2.1標(biāo)識符與關(guān)鍵字2.2數(shù)據(jù)類型2.3變量、操作符與表達(dá)式2.4程序流控制2.5數(shù)組與多維數(shù)組第2章Java語言基礎(chǔ)2.1標(biāo)識符與關(guān)鍵字2.1標(biāo)識符與關(guān)鍵字
Java語言的輸入元素包含空白、注釋和記號(token)三大類,而記號又分為標(biāo)識符、關(guān)鍵字、常量、分隔符和操作符五類。記號實(shí)際上是Java語法的最小單元。2.1標(biāo)識符與關(guān)鍵字
Java語
1.Unicode字符集
Java源程序是使用Unicode國際標(biāo)準(zhǔn)字符集中的字符編寫的,這不同于C語言所使用的傳統(tǒng)ASCII字符集。Unicode字符集中的字符最初都是用等寬的16bit編碼的,后來改為支持需要多于16bit才能表示的字符。目前Unicode支持的字符編碼范圍為0x0000~0x10FFFF,其中從0xFFFF往后的字符稱為增補(bǔ)字符。增補(bǔ)字符無法用一個(gè)16bit編碼表示。1.Unicode字符集
Java源程序是使用Un第-2-章---Java語言基礎(chǔ)課件
2.標(biāo)識符
標(biāo)識符的定義還應(yīng)遵循以下規(guī)則。
(1)標(biāo)識符中的字母不僅限于A~Z、a~z,還可以取自Unicode字符集中大于等于0x00c0的、在所有國際語言中相當(dāng)于一個(gè)字母的任何Unicode字符。因此Java支持程序員用其本國語言進(jìn)行標(biāo)識符命名。
(2)標(biāo)識符不能是Java關(guān)鍵字、布爾常量(true/false)或null常量。
(3)標(biāo)識符大小寫敏感。
(4)標(biāo)識符不能包含空白。2.標(biāo)識符
標(biāo)識符的定義還應(yīng)遵循以下規(guī)則。
(在標(biāo)識符命名方面,除了要考慮合法性之外,還需要考慮命名是否易于理解。因此,除上述規(guī)則之外,還存在一系列非強(qiáng)制性的風(fēng)格約定,例如:
(1)不使用“_”、“$”作為標(biāo)識符的第一個(gè)字符。
(2)類名、接口名的所有單詞首字母大寫,其余字母小寫,如類名HelloWorld。
(3)變量名、方法名首單詞小寫,其余單詞的首字母大寫,如變量名someVariable。
在標(biāo)識符命名方面,除了要考慮合法性之外,還需要考慮命名是(4)常量名完全大寫,由“_”分隔,如常量名CONST_POOL
_NUM。
(5)方法名使用動(dòng)詞,類名和接口名使用名詞,變量名盡量有含義。
(6)在定義類名時(shí)不要使用“$”,否則該類的.class文件可能與編譯器生成的內(nèi)部類.class文件沖突。(4)常量名完全大寫,由“_”分隔,如常量名CON
3.關(guān)鍵字
關(guān)鍵字(keyword)是程序語言中預(yù)先定義的有特殊意義的標(biāo)識符。表2-2中由ASCII字符組成的字符序列被保留為Java的關(guān)鍵字。3.關(guān)鍵字
關(guān)鍵字(keyword)是程序語言中預(yù)第-2-章---Java語言基礎(chǔ)課件
4.注釋
Java中注釋的表示方式分三種:
(1)/*傳統(tǒng)注釋*/;
(2)//單行注釋;
(3)/**文檔注釋,可以使用javadoc工具生成HTML格式的文檔*/。
4.注釋
Java中注釋的表示方式分三種:
(使用注釋時(shí)需要注意以下兩點(diǎn):
(1)注釋不支持嵌套,即在開始于“//”的注釋中,“/*”和“*/”沒有特殊的意義,而在開始于“/*”或“/**”的注釋中,“//”沒有特殊的意義。
(2)Java語法規(guī)則要求注釋不能出現(xiàn)在字符常量和字符串常量之中。使用注釋時(shí)需要注意以下兩點(diǎn):
(1)注釋不支持嵌套
5.空白與分隔符
Java中的空白包括ASCII空格、水平制表符、換頁符以及行終止符等。它可以由六種Unicode字符或字符串表示:
(1)空格\u0020,對應(yīng)于ASCII字符SP;
(2)水平制表符\u0009,對應(yīng)于ASCII字符HT;
(3)換頁符\u000C,對應(yīng)于ASCII字符FF;
(4)換行符\u000A,對應(yīng)于ASCII字符LF;
(5)回車符\u000D,對應(yīng)于ASCII字符CR;
(6)字符串\u000D\u000A,對應(yīng)于ASCII字符串CRLF。5.空白與分隔符
Java中的空白包括ASCII空第-2-章---Java語言基礎(chǔ)課件2.2數(shù)據(jù)類型
數(shù)據(jù)類型廣泛存在于Java語言的常量、變量、表達(dá)式、方法和類屬性中。Java是一種強(qiáng)類型的語言,因而Java的每個(gè)變量和表達(dá)式均有一個(gè)編譯時(shí)可知的確定類型。Java虛擬機(jī)希望盡可能多的類型檢查能夠在程序運(yùn)行之前完成。類型的意義在于,限定變量和表達(dá)式的取值范圍、限定在特定值上能夠執(zhí)行的操作、確定操作符的意義等。2.2數(shù)據(jù)類型
數(shù)據(jù)類型廣泛存在
1.布爾型
布爾型表示一個(gè)邏輯量,布爾型對應(yīng)的關(guān)鍵字為boolean。boolean類型的數(shù)據(jù)有兩種可能的取值,分別由布爾常量true和false表示。boolean類型的變量如果有默認(rèn)初始值,則默認(rèn)初始值為false。與C語言不同,Java中布爾值與整型值之間不能相互轉(zhuǎn)換。boolean類型的值可以通過關(guān)系操作符、邏輯操作符等進(jìn)行運(yùn)算,可以作為多種復(fù)雜程序流程的分支判定條件。1.布爾型
布爾型表示一個(gè)邏輯量,布爾型對應(yīng)的關(guān)鍵
2.整型
Java中的整形包含byte、short、int、long、char五種。它們的長度與取值范圍如表2-4所示。2.整型
Java中的整形包含byte、short第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件
例2-1CharConst.java:字符常量的表示方法。例2-1CharConst.java:字符常量的表示
3.浮點(diǎn)型
浮點(diǎn)型用于表示有小數(shù)部分的數(shù)值。Java中的浮點(diǎn)型包括float和double兩種,分別用來表示《IEEEStandardforBinaryFloatingPointArithmetic》(ANSI/IEEEStd.7541985)標(biāo)準(zhǔn)(即通常所說的IEEE754標(biāo)準(zhǔn))定義的單精度浮點(diǎn)型和雙精度浮點(diǎn)型。它們的長度與取值范圍如表2-6所示。float類型的最小正非零值約為1.40E-45F,而double類型的最小正非零值約為4.9E-324。3.浮點(diǎn)型
浮點(diǎn)型用于表示有小數(shù)部分的數(shù)值。J第-2-章---Java語言基礎(chǔ)課件
例2-2PrimitiveConst.java:基本數(shù)據(jù)類型的特殊值。例2-2PrimitiveConst.java:基本第-2-章---Java語言基礎(chǔ)課件2.3變量、操作符與表達(dá)式
1.變量
Java中的變量實(shí)際上是一種與特定類型關(guān)聯(lián)的存儲(chǔ)位置(storagelocation),這一類型稱為變量的編譯時(shí)類型。2.3變量、操作符與表達(dá)式
1.變量
當(dāng)聲明基本類型的變量時(shí),運(yùn)行系統(tǒng)直接分配出數(shù)據(jù)空間,用于保存相應(yīng)類型的值。而對于引用類型變量,在聲明時(shí),運(yùn)行系統(tǒng)只是分配出存放對具體對象的引用空間,而對象的數(shù)據(jù)空間并未分配。也就是說,這時(shí)的引用類型變量并未關(guān)聯(lián)到任何對象,因而不能直接通過這一變量訪問對象的內(nèi)容。例如:
Rectanglerect;
rect.width=5;//錯(cuò)誤,rect并未指向任何Rectangle類型的實(shí)例對象當(dāng)聲明基本類型的變量時(shí),運(yùn)行系統(tǒng)直接分配出數(shù)據(jù)空間,用于引用類型的變量在聲明后必須先通過實(shí)例化開辟數(shù)據(jù)空間,此后才能通過變量訪問對象的內(nèi)容。實(shí)例化的方法是使用關(guān)鍵字new調(diào)用類的構(gòu)造方法,例如:
Rectanglerect;
rect=newRectangle(3.0,2.0);引用類型的變量在聲明后必須先通過實(shí)例化開辟數(shù)據(jù)空間,此后圖2-1引用變量的聲明與實(shí)例化圖2-1引用變量的聲明與實(shí)例化引用類型變量之間的賦值是引用賦值,引用賦值會(huì)導(dǎo)致多個(gè)引用都指向同一個(gè)數(shù)據(jù)對象,而不會(huì)創(chuàng)建出新的數(shù)據(jù)對象,例如:
Rectanglerect,rect2;
rect=newRectangle(3.0,2.0);
rect2=rect;
賦值過程中內(nèi)存空間的變化如圖2-2所示。引用類型變量之間的賦值是引用賦值,引用賦值會(huì)導(dǎo)致多個(gè)引用圖2-2引用變量之間的賦值圖2-2引用變量之間的賦值1)成員變量
成員變量是表示類和對象特征的變量。成員變量在類定義中進(jìn)行定義,且位于方法定義之外。成員變量的作用域至少包括整個(gè)類,根據(jù)變量的訪問權(quán)限修飾符的不同,成員變量還可作用于外界的其他類。1)成員變量
成員變量是表示類和對象特征的變量。成2)局部變量
局部變量是在方法或者代碼塊內(nèi)部定義的變量。其作用域從聲明變量的位置開始,直到包含該變量的塊結(jié)束為止。當(dāng)程序的執(zhí)行流執(zhí)行到該變量的聲明語句時(shí),局部變量被創(chuàng)建。當(dāng)方法體或代碼塊執(zhí)行結(jié)束后,局部變量被銷毀。與成員變量不同的是,局部變量的初始化不會(huì)自動(dòng)完成,需要在編程時(shí)通過顯式的賦值進(jìn)行初始化,否則就無法使用。如果編譯器確定程序使用了沒有經(jīng)過初始化的局部變量,編譯器會(huì)報(bào)錯(cuò)。2)局部變量
局部變量是在方法或者代碼塊內(nèi)部定義的3)方法參數(shù)
方法參數(shù)定義了在方法調(diào)用時(shí)傳遞給方法的參數(shù)值對應(yīng)的名稱,其作用域就是所在方法的內(nèi)部。每當(dāng)方法調(diào)用一次,方法參數(shù)變量就會(huì)被創(chuàng)建一次,并由方法調(diào)用者所提供的參數(shù)值進(jìn)行變量初始化。方法參數(shù)還可細(xì)分為成員方法參數(shù)和構(gòu)造方法參數(shù)兩種。有時(shí)方法參數(shù)也可以簡化地看做是局部變量。3)方法參數(shù)
方法參數(shù)定義了在方法調(diào)用時(shí)傳遞給方法4)異常處理參數(shù)
異常處理參數(shù)是catch語句塊的入口參數(shù)。每當(dāng)try語句塊中拋出的異常被一個(gè)catch語句塊捕獲時(shí),就會(huì)創(chuàng)建一個(gè)異常處理參數(shù),這個(gè)參數(shù)的初始化值即為被拋出的那個(gè)代表實(shí)際異常的對象的引用。當(dāng)整個(gè)catch語句塊執(zhí)行完畢后,異常處理參數(shù)被銷毀。4)異常處理參數(shù)
異常處理參數(shù)是catch語句塊的
例2-3VariablesAndLocalVarInit.java:各類變量及局部變量的初始化。例2-3VariablesAndLocalVarI
2.操作符與表達(dá)式
Java的操作符與C語言基本相同,具有C語言基礎(chǔ)的讀者可以很快地掌握J(rèn)ava操作符及其運(yùn)算規(guī)則,二者相同的部分,我們僅做簡要介紹。二者的區(qū)別主要體現(xiàn)在以下幾方面:首先,Java是強(qiáng)類型語言,其類型檢查比C語言更加嚴(yán)格,操作符的操作對象類型會(huì)受到更多限制;其次,C語言中的指針操作符在Java中不存在,而Java中增加了引用類型測試操作符instanceof、無符號右移操作符“>>>”、字符串連接操作符“+”等。將操作符與操作數(shù)按照特定的規(guī)則連接起來,就構(gòu)成了通常意義上的表達(dá)式。2.操作符與表達(dá)式
Java的操作符與C語言基本相第-2-章---Java語言基礎(chǔ)課件1)算術(shù)操作符
算術(shù)操作符“+”和“-”既可以作為二元操作符,又可以作為一元操作符。二元算術(shù)操作符(+、-、*、/、%)可以作用于任意整型或浮點(diǎn)型的操作數(shù)。當(dāng)兩個(gè)操作數(shù)的類型不同時(shí),需要進(jìn)行自動(dòng)類型轉(zhuǎn)換。自動(dòng)類型轉(zhuǎn)換的規(guī)則為:若兩個(gè)操作數(shù)中有一個(gè)為double類型,則將另一個(gè)操作數(shù)轉(zhuǎn)換為double類型;否則,若兩個(gè)操作數(shù)中有一個(gè)為float類型,則將另一個(gè)操作數(shù)轉(zhuǎn)換為float類型;否則,若兩個(gè)操作數(shù)中有一個(gè)為long類型,則將另一個(gè)操作數(shù)轉(zhuǎn)換為long類型;否則,兩個(gè)操作數(shù)均轉(zhuǎn)換為int類型。1)算術(shù)操作符
算術(shù)操作符“+”和“-”既可以作為第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件2)關(guān)系操作符
關(guān)系操作符用來比較兩個(gè)操作數(shù)的大小、相等/不等關(guān)系。操作數(shù)與操作符共同構(gòu)成關(guān)系表達(dá)式,如果表達(dá)式成立,則關(guān)系運(yùn)算的結(jié)果為true,否則為false。關(guān)系操作符的操作數(shù)自動(dòng)類型轉(zhuǎn)換規(guī)則與二元算術(shù)操作符相同。2)關(guān)系操作符
關(guān)系操作符用來比較兩個(gè)操作數(shù)的大小3)邏輯操作符
需要特別注意的是,兩種與操作“&&”和“&”的運(yùn)算過程不同,兩種或操作“||”和“|”的運(yùn)算過程也不同?!?&”和“||”稱為短路的邏輯操作,在運(yùn)算過程中,以先左后右的順序依次計(jì)算兩個(gè)操作數(shù)的布爾值,如果左側(cè)操作數(shù)的布爾值能夠完全決定整個(gè)邏輯表達(dá)式的布爾值,則不再計(jì)算右側(cè)的操作數(shù)。相對應(yīng)地,“&”和“|”稱為非短路的邏輯操作,即不管左側(cè)操作數(shù)的布爾值能否決定整個(gè)邏輯表達(dá)式的布爾值,都要先計(jì)算右側(cè)操作數(shù)的布爾值,然后再求出邏輯表達(dá)式的布爾值。3)邏輯操作符
需要特別注意的是,兩種與操作“&&第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件4)位操作符
在處理整型變量或常量時(shí),可以直接對整型值的各個(gè)位進(jìn)行操作,具體操作可通過位操作符完成。位操作符包括位邏輯操作符(&、|、^、~)以及移位操作符(<<、>>、>>>)。二元的位邏輯操作符在操作數(shù)的每個(gè)對應(yīng)位上進(jìn)行相應(yīng)的邏輯運(yùn)算。操作符“&”、“|”和“^”到底是作為位操作符使用還是作為邏輯操作符使用,完全取決于其連接的操作數(shù)的類型到底是整型還是布爾型。一元位邏輯操作符“~”則是對數(shù)據(jù)的每個(gè)二進(jìn)制位取反。4)位操作符
在處理整型變量或常量時(shí),可以直接對整第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件5)賦值操作符
賦值操作符用于將一個(gè)表達(dá)式的值賦給一個(gè)變量。賦值操作符可以與其他操作符一起使用,以使程序表達(dá)簡練并提高編譯速度。賦值操作符的運(yùn)算屬于二元運(yùn)算,當(dāng)兩個(gè)操作數(shù)類型不一致時(shí),編譯器會(huì)進(jìn)行自動(dòng)類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則如圖2-3所示。5)賦值操作符
賦值操作符用于將一個(gè)表達(dá)式的值賦給圖2-3數(shù)值類型之間的合法自動(dòng)轉(zhuǎn)換圖2-3數(shù)值類型之間的合法自動(dòng)轉(zhuǎn)換第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件
3.操作符的優(yōu)先級
由多個(gè)操作符連接而成的復(fù)合表達(dá)式,運(yùn)算時(shí)需要按照表2-8所示的優(yōu)先級順序由高到低進(jìn)行運(yùn)算,對于同級的操作符,其結(jié)合方向如表2-8右列所示。通常,圓括號可以幫助程序員在不確定操作符優(yōu)先級的情況下明確所要進(jìn)行的運(yùn)算,如果沒有圓括號的輔助,就需要按照表2-8中的優(yōu)先級次序進(jìn)行運(yùn)算。3.操作符的優(yōu)先級
由多個(gè)操作符連接而成的復(fù)合表達(dá)第-2-章---Java語言基礎(chǔ)課件
4.強(qiáng)制類型轉(zhuǎn)換
我們已經(jīng)知道,收縮(narrowing)類型轉(zhuǎn)換可將較大范圍類型的操作數(shù)值轉(zhuǎn)換為較小范圍類型的操作數(shù)值,這一過程往往會(huì)損失操作數(shù)的精度。收縮類型轉(zhuǎn)換需要通過強(qiáng)制類型轉(zhuǎn)換來完成,不使用強(qiáng)制類型轉(zhuǎn)換會(huì)導(dǎo)致編譯器報(bào)錯(cuò)。類型轉(zhuǎn)換的語法是將目標(biāo)類型放在圓括號內(nèi),后跟要轉(zhuǎn)換的變量、表達(dá)式或常量值。4.強(qiáng)制類型轉(zhuǎn)換
我們已經(jīng)知道,收縮(narrow第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件2.4程序流控制
程序的執(zhí)行順序是由語句控制的,一些語句作為其他語句結(jié)構(gòu)的一部分存在。Java的程序流控制結(jié)構(gòu)與C和C++的程序流控制結(jié)構(gòu)基本相同,不同之處包括:沒有g(shù)oto語句,break可以帶標(biāo)簽,J2SE5.0中還加入了一種變形的for循環(huán)。2.4程序流控制
程序的執(zhí)行順序第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件2.5數(shù)組與多維數(shù)組
數(shù)組是絕大多數(shù)高級語言都提供的數(shù)據(jù)結(jié)構(gòu)。在Java中,數(shù)組是一種效率最高的存儲(chǔ)和隨機(jī)訪問大量同類型元素的方式。數(shù)組可以用來存儲(chǔ)一個(gè)元素個(gè)數(shù)固定、且元素類型相同的有序集。因此,數(shù)組中的元素都是同一種類型,數(shù)組的長度在創(chuàng)建時(shí)確定,并且在創(chuàng)建后不會(huì)改變。數(shù)組的大小固定且在生命周期中大小不變正是數(shù)組獲得效率優(yōu)勢的原因。2.5數(shù)組與多維數(shù)組
數(shù)組是絕大多數(shù)高級
1.數(shù)組的聲明
根據(jù)數(shù)組的概念,定義一個(gè)數(shù)組涉及的要素包括元素類型、數(shù)組變量名稱、數(shù)組長度,支持多維數(shù)組的語言還涉及數(shù)組的維度。其中,元素類型、數(shù)組變量名稱和維度都需要在數(shù)組聲明時(shí)進(jìn)行定義,而數(shù)組長度一般在數(shù)組創(chuàng)建時(shí)確定。1.數(shù)組的聲明
根據(jù)數(shù)組的概念,定義一個(gè)數(shù)組涉及的數(shù)組的元素類型既可以是基本類型,也可以是引用類型。數(shù)組變量的名稱沿用變量的命名規(guī)則。具體地講,一維數(shù)組的聲明方法分兩種:
(1)元素類型[]數(shù)組引用變量;
(2)元素類型數(shù)組引用變量[];數(shù)組的元素類型既可以是基本類型,也可以是引用類型。數(shù)組變
2.數(shù)組的創(chuàng)建、初始化和訪問
在Java中,數(shù)組類型是一種引用數(shù)據(jù)類型,每個(gè)具體的數(shù)組都是被動(dòng)態(tài)創(chuàng)建的實(shí)例對象。因而與一般引用類型變量類似地,聲明數(shù)組變量并不在內(nèi)存中為數(shù)組分配存儲(chǔ)空間,而只是創(chuàng)建了一個(gè)對數(shù)組引用的存儲(chǔ)位置。如果數(shù)組變量中沒有包含對數(shù)組對象的引用,則這個(gè)變量的值為null。建立數(shù)組變量與數(shù)組對象之間的引用關(guān)系,通常是通過用new關(guān)鍵字創(chuàng)建數(shù)組的過程來實(shí)現(xiàn)的。具體創(chuàng)建方法為
數(shù)組引用變量=new元素類型[數(shù)組長度];2.數(shù)組的創(chuàng)建、初始化和訪問
在Java中,數(shù)組類這條語句首先使用“new元素類型[數(shù)組長度]”在堆中創(chuàng)建了一個(gè)數(shù)組對象,然后將這個(gè)數(shù)組對象的引用賦給了數(shù)組變量。如果將上節(jié)的數(shù)組聲明與數(shù)組創(chuàng)建合為一步,則基本形式為:
(1)元素類型[]數(shù)組引用變量=new元素類型[數(shù)組長度];
(2)元素類型數(shù)組引用變量[]=new元素類型[數(shù)組長度];這條語句首先使用“new元素類型[數(shù)組長度]”在堆中創(chuàng)以下問題還需特別注意:
(1)數(shù)組變量與數(shù)組對象是不同的,變量存儲(chǔ)了對數(shù)組對象的引用。但在一些情境下,也可以簡化地將變量稱為“數(shù)組”,而不是明確陳述為“指向含有n個(gè)T類型元素的數(shù)組對象的引用變量”。
(2)所有數(shù)組均包含一個(gè)表示數(shù)組中元素個(gè)數(shù)的成員變量length。以下問題還需特別注意:
(1)數(shù)組變量與數(shù)組對象是(3)當(dāng)創(chuàng)建的數(shù)組的元素類型為引用類型T時(shí),數(shù)組的每一個(gè)元素實(shí)際上存儲(chǔ)的是對T類型對象的引用,以如下程序?yàn)槔?/p>
Point[]p=newPoint[10];
for(inti=0;i<10;i++)
p[i]=newPoint();
數(shù)組p的每個(gè)元素的類型為Point引用類型,對于每個(gè)Point引用變量p[i],還需要?jiǎng)?chuàng)建具體的Point對象并將對象的引用賦給p[i]。(3)當(dāng)創(chuàng)建的數(shù)組的元素類型為引用類型T時(shí),數(shù)組的每一(4)數(shù)組的元素類型必須是基本類型、類類型或者接口類型之中的一種。如果T是基本類型,T[]類型的數(shù)組變量可以存儲(chǔ)null引用,或指向T[]類型數(shù)組對象的引用;如果T是引用類型,則T[]類型的數(shù)組變量可以存儲(chǔ)null引用,或指向S[]類型的數(shù)組對象的引用,其中類型S是類型T的子類型或子接口。關(guān)于子類型和子接口的概念將在第3章和第4章講解。
(4)數(shù)組的元素類型必須是基本類型、類類型或者接口類型(5)在數(shù)組訪問表達(dá)式中,索引值必須是int類型,對于short、byte或char類型的索引值,編譯器將進(jìn)行自動(dòng)的擴(kuò)展類型轉(zhuǎn)換,將其轉(zhuǎn)換為int類型。在數(shù)組創(chuàng)建時(shí),new語句中的“數(shù)組長度”必須是int型,對于short、byte或char類型的值,通過自動(dòng)的擴(kuò)展類型轉(zhuǎn)換將其轉(zhuǎn)換為int類型。(5)在數(shù)組訪問表達(dá)式中,索引值必須是int類型,對于第-2-章---Java語言基礎(chǔ)課件(6)與C語言不同,在Java中char[]數(shù)組不是一個(gè)String,String和char[]數(shù)組也都不是以’\u0000’終止的。String中的toCharArray方法可以返回一個(gè)char[]數(shù)組,關(guān)于String的詳細(xì)介紹見第6.1節(jié)。
(7)在Java中,方法可以直接返回一個(gè)數(shù)組,而不需要像C和C++那樣擔(dān)心對數(shù)組的使用超出其生命周期,只要還有引用指向該數(shù)組,它就會(huì)一直存在,當(dāng)程序使用完數(shù)組后,垃圾收集機(jī)制會(huì)將其清理。
(8)關(guān)于數(shù)組的更多操作可參見第6.4節(jié)的Arrays類。(6)與C語言不同,在Java中char[]數(shù)組不是一
3.數(shù)組的復(fù)制
由于數(shù)組變量是引用變量,因而數(shù)組變量之間的賦值是引用賦值,使得兩個(gè)數(shù)組變量都指向相同的內(nèi)存地址,不能實(shí)現(xiàn)數(shù)組數(shù)據(jù)的復(fù)制。數(shù)組復(fù)制的方法有兩種:
(1)使用循環(huán)語句逐個(gè)復(fù)制數(shù)組元素。如可使用以下代碼將source數(shù)組的數(shù)據(jù)復(fù)制到target數(shù)組:
int[]target=newint[source.length];
for(inti=0;i<source.length;i++)
target[i]=source[i];3.數(shù)組的復(fù)制
由于數(shù)組變量是引用變量,因而數(shù)組變(2)使用java.lang.System類中提供的靜態(tài)arraycopy()方法,該方法的具體定義如下:
staticvoidarraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength);
其中,srcPos和destPos分別表示源數(shù)組src和目標(biāo)數(shù)組dest中的起始位置,從src復(fù)制到dest中的元素個(gè)數(shù)由length決定。可使用如下代碼將source數(shù)組的數(shù)據(jù)復(fù)制到target數(shù)組:
System.arraycopy(source,0,target,0,source.length);(2)使用java.lang.System類中提供的第-2-章---Java語言基礎(chǔ)課件
4.多維數(shù)組
多維數(shù)組的聲明與一維數(shù)組類似,只是用連續(xù)的多對[]表示數(shù)組的維度,m維數(shù)組需要用m對[]。例如double[][]d和doubled[][]都能夠聲明double[][]類型的二維數(shù)組變量d。4.多維數(shù)組
多維數(shù)組的聲明與一維數(shù)組類似,只是用如果在創(chuàng)建數(shù)組對象時(shí)指定了每個(gè)維度的長度值,將創(chuàng)建出規(guī)則的數(shù)組。如果在創(chuàng)建數(shù)組對象時(shí)僅指定了部分維度,則當(dāng)前維度上的元素均為指向剩余維度數(shù)組的引用。例如,創(chuàng)建int[][]類型的二維數(shù)組a時(shí),使用
int[][]a=newint[2][];
則第一維度上的元素a[0]和a[1]均為指向一維數(shù)組的引用,需要分別為它們創(chuàng)建具體的數(shù)組對象,例如:
a[0]=newint[5];
a[1]=newint[3];如果在創(chuàng)建數(shù)組對象時(shí)指定了每個(gè)維度的長度值,將創(chuàng)建出規(guī)則這使得我們能夠創(chuàng)建出不規(guī)則的數(shù)組。a[0][1]表示訪問由a[0]指向的一維數(shù)組對象中索引為1的元素。我們也可以使用初始化器來對不規(guī)則的二維數(shù)組進(jìn)行創(chuàng)建和初始化:
int[][]a={{1,2,3,4,5},{1,2,3}};
多維數(shù)組的每一維都有長度,每一維的長度都可以通過length變量獲取,例2-14給出了例子說明不規(guī)則數(shù)組的各個(gè)維度上的數(shù)組長度。這使得我們能夠創(chuàng)建出不規(guī)則的數(shù)組。a[0][1]表示訪問第-2-章---Java語言基礎(chǔ)課件第2章Java語言基礎(chǔ)2.1標(biāo)識符與關(guān)鍵字2.2數(shù)據(jù)類型2.3變量、操作符與表達(dá)式2.4程序流控制2.5數(shù)組與多維數(shù)組第2章Java語言基礎(chǔ)2.1標(biāo)識符與關(guān)鍵字2.1標(biāo)識符與關(guān)鍵字
Java語言的輸入元素包含空白、注釋和記號(token)三大類,而記號又分為標(biāo)識符、關(guān)鍵字、常量、分隔符和操作符五類。記號實(shí)際上是Java語法的最小單元。2.1標(biāo)識符與關(guān)鍵字
Java語
1.Unicode字符集
Java源程序是使用Unicode國際標(biāo)準(zhǔn)字符集中的字符編寫的,這不同于C語言所使用的傳統(tǒng)ASCII字符集。Unicode字符集中的字符最初都是用等寬的16bit編碼的,后來改為支持需要多于16bit才能表示的字符。目前Unicode支持的字符編碼范圍為0x0000~0x10FFFF,其中從0xFFFF往后的字符稱為增補(bǔ)字符。增補(bǔ)字符無法用一個(gè)16bit編碼表示。1.Unicode字符集
Java源程序是使用Un第-2-章---Java語言基礎(chǔ)課件
2.標(biāo)識符
標(biāo)識符的定義還應(yīng)遵循以下規(guī)則。
(1)標(biāo)識符中的字母不僅限于A~Z、a~z,還可以取自Unicode字符集中大于等于0x00c0的、在所有國際語言中相當(dāng)于一個(gè)字母的任何Unicode字符。因此Java支持程序員用其本國語言進(jìn)行標(biāo)識符命名。
(2)標(biāo)識符不能是Java關(guān)鍵字、布爾常量(true/false)或null常量。
(3)標(biāo)識符大小寫敏感。
(4)標(biāo)識符不能包含空白。2.標(biāo)識符
標(biāo)識符的定義還應(yīng)遵循以下規(guī)則。
(在標(biāo)識符命名方面,除了要考慮合法性之外,還需要考慮命名是否易于理解。因此,除上述規(guī)則之外,還存在一系列非強(qiáng)制性的風(fēng)格約定,例如:
(1)不使用“_”、“$”作為標(biāo)識符的第一個(gè)字符。
(2)類名、接口名的所有單詞首字母大寫,其余字母小寫,如類名HelloWorld。
(3)變量名、方法名首單詞小寫,其余單詞的首字母大寫,如變量名someVariable。
在標(biāo)識符命名方面,除了要考慮合法性之外,還需要考慮命名是(4)常量名完全大寫,由“_”分隔,如常量名CONST_POOL
_NUM。
(5)方法名使用動(dòng)詞,類名和接口名使用名詞,變量名盡量有含義。
(6)在定義類名時(shí)不要使用“$”,否則該類的.class文件可能與編譯器生成的內(nèi)部類.class文件沖突。(4)常量名完全大寫,由“_”分隔,如常量名CON
3.關(guān)鍵字
關(guān)鍵字(keyword)是程序語言中預(yù)先定義的有特殊意義的標(biāo)識符。表2-2中由ASCII字符組成的字符序列被保留為Java的關(guān)鍵字。3.關(guān)鍵字
關(guān)鍵字(keyword)是程序語言中預(yù)第-2-章---Java語言基礎(chǔ)課件
4.注釋
Java中注釋的表示方式分三種:
(1)/*傳統(tǒng)注釋*/;
(2)//單行注釋;
(3)/**文檔注釋,可以使用javadoc工具生成HTML格式的文檔*/。
4.注釋
Java中注釋的表示方式分三種:
(使用注釋時(shí)需要注意以下兩點(diǎn):
(1)注釋不支持嵌套,即在開始于“//”的注釋中,“/*”和“*/”沒有特殊的意義,而在開始于“/*”或“/**”的注釋中,“//”沒有特殊的意義。
(2)Java語法規(guī)則要求注釋不能出現(xiàn)在字符常量和字符串常量之中。使用注釋時(shí)需要注意以下兩點(diǎn):
(1)注釋不支持嵌套
5.空白與分隔符
Java中的空白包括ASCII空格、水平制表符、換頁符以及行終止符等。它可以由六種Unicode字符或字符串表示:
(1)空格\u0020,對應(yīng)于ASCII字符SP;
(2)水平制表符\u0009,對應(yīng)于ASCII字符HT;
(3)換頁符\u000C,對應(yīng)于ASCII字符FF;
(4)換行符\u000A,對應(yīng)于ASCII字符LF;
(5)回車符\u000D,對應(yīng)于ASCII字符CR;
(6)字符串\u000D\u000A,對應(yīng)于ASCII字符串CRLF。5.空白與分隔符
Java中的空白包括ASCII空第-2-章---Java語言基礎(chǔ)課件2.2數(shù)據(jù)類型
數(shù)據(jù)類型廣泛存在于Java語言的常量、變量、表達(dá)式、方法和類屬性中。Java是一種強(qiáng)類型的語言,因而Java的每個(gè)變量和表達(dá)式均有一個(gè)編譯時(shí)可知的確定類型。Java虛擬機(jī)希望盡可能多的類型檢查能夠在程序運(yùn)行之前完成。類型的意義在于,限定變量和表達(dá)式的取值范圍、限定在特定值上能夠執(zhí)行的操作、確定操作符的意義等。2.2數(shù)據(jù)類型
數(shù)據(jù)類型廣泛存在
1.布爾型
布爾型表示一個(gè)邏輯量,布爾型對應(yīng)的關(guān)鍵字為boolean。boolean類型的數(shù)據(jù)有兩種可能的取值,分別由布爾常量true和false表示。boolean類型的變量如果有默認(rèn)初始值,則默認(rèn)初始值為false。與C語言不同,Java中布爾值與整型值之間不能相互轉(zhuǎn)換。boolean類型的值可以通過關(guān)系操作符、邏輯操作符等進(jìn)行運(yùn)算,可以作為多種復(fù)雜程序流程的分支判定條件。1.布爾型
布爾型表示一個(gè)邏輯量,布爾型對應(yīng)的關(guān)鍵
2.整型
Java中的整形包含byte、short、int、long、char五種。它們的長度與取值范圍如表2-4所示。2.整型
Java中的整形包含byte、short第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件
例2-1CharConst.java:字符常量的表示方法。例2-1CharConst.java:字符常量的表示
3.浮點(diǎn)型
浮點(diǎn)型用于表示有小數(shù)部分的數(shù)值。Java中的浮點(diǎn)型包括float和double兩種,分別用來表示《IEEEStandardforBinaryFloatingPointArithmetic》(ANSI/IEEEStd.7541985)標(biāo)準(zhǔn)(即通常所說的IEEE754標(biāo)準(zhǔn))定義的單精度浮點(diǎn)型和雙精度浮點(diǎn)型。它們的長度與取值范圍如表2-6所示。float類型的最小正非零值約為1.40E-45F,而double類型的最小正非零值約為4.9E-324。3.浮點(diǎn)型
浮點(diǎn)型用于表示有小數(shù)部分的數(shù)值。J第-2-章---Java語言基礎(chǔ)課件
例2-2PrimitiveConst.java:基本數(shù)據(jù)類型的特殊值。例2-2PrimitiveConst.java:基本第-2-章---Java語言基礎(chǔ)課件2.3變量、操作符與表達(dá)式
1.變量
Java中的變量實(shí)際上是一種與特定類型關(guān)聯(lián)的存儲(chǔ)位置(storagelocation),這一類型稱為變量的編譯時(shí)類型。2.3變量、操作符與表達(dá)式
1.變量
當(dāng)聲明基本類型的變量時(shí),運(yùn)行系統(tǒng)直接分配出數(shù)據(jù)空間,用于保存相應(yīng)類型的值。而對于引用類型變量,在聲明時(shí),運(yùn)行系統(tǒng)只是分配出存放對具體對象的引用空間,而對象的數(shù)據(jù)空間并未分配。也就是說,這時(shí)的引用類型變量并未關(guān)聯(lián)到任何對象,因而不能直接通過這一變量訪問對象的內(nèi)容。例如:
Rectanglerect;
rect.width=5;//錯(cuò)誤,rect并未指向任何Rectangle類型的實(shí)例對象當(dāng)聲明基本類型的變量時(shí),運(yùn)行系統(tǒng)直接分配出數(shù)據(jù)空間,用于引用類型的變量在聲明后必須先通過實(shí)例化開辟數(shù)據(jù)空間,此后才能通過變量訪問對象的內(nèi)容。實(shí)例化的方法是使用關(guān)鍵字new調(diào)用類的構(gòu)造方法,例如:
Rectanglerect;
rect=newRectangle(3.0,2.0);引用類型的變量在聲明后必須先通過實(shí)例化開辟數(shù)據(jù)空間,此后圖2-1引用變量的聲明與實(shí)例化圖2-1引用變量的聲明與實(shí)例化引用類型變量之間的賦值是引用賦值,引用賦值會(huì)導(dǎo)致多個(gè)引用都指向同一個(gè)數(shù)據(jù)對象,而不會(huì)創(chuàng)建出新的數(shù)據(jù)對象,例如:
Rectanglerect,rect2;
rect=newRectangle(3.0,2.0);
rect2=rect;
賦值過程中內(nèi)存空間的變化如圖2-2所示。引用類型變量之間的賦值是引用賦值,引用賦值會(huì)導(dǎo)致多個(gè)引用圖2-2引用變量之間的賦值圖2-2引用變量之間的賦值1)成員變量
成員變量是表示類和對象特征的變量。成員變量在類定義中進(jìn)行定義,且位于方法定義之外。成員變量的作用域至少包括整個(gè)類,根據(jù)變量的訪問權(quán)限修飾符的不同,成員變量還可作用于外界的其他類。1)成員變量
成員變量是表示類和對象特征的變量。成2)局部變量
局部變量是在方法或者代碼塊內(nèi)部定義的變量。其作用域從聲明變量的位置開始,直到包含該變量的塊結(jié)束為止。當(dāng)程序的執(zhí)行流執(zhí)行到該變量的聲明語句時(shí),局部變量被創(chuàng)建。當(dāng)方法體或代碼塊執(zhí)行結(jié)束后,局部變量被銷毀。與成員變量不同的是,局部變量的初始化不會(huì)自動(dòng)完成,需要在編程時(shí)通過顯式的賦值進(jìn)行初始化,否則就無法使用。如果編譯器確定程序使用了沒有經(jīng)過初始化的局部變量,編譯器會(huì)報(bào)錯(cuò)。2)局部變量
局部變量是在方法或者代碼塊內(nèi)部定義的3)方法參數(shù)
方法參數(shù)定義了在方法調(diào)用時(shí)傳遞給方法的參數(shù)值對應(yīng)的名稱,其作用域就是所在方法的內(nèi)部。每當(dāng)方法調(diào)用一次,方法參數(shù)變量就會(huì)被創(chuàng)建一次,并由方法調(diào)用者所提供的參數(shù)值進(jìn)行變量初始化。方法參數(shù)還可細(xì)分為成員方法參數(shù)和構(gòu)造方法參數(shù)兩種。有時(shí)方法參數(shù)也可以簡化地看做是局部變量。3)方法參數(shù)
方法參數(shù)定義了在方法調(diào)用時(shí)傳遞給方法4)異常處理參數(shù)
異常處理參數(shù)是catch語句塊的入口參數(shù)。每當(dāng)try語句塊中拋出的異常被一個(gè)catch語句塊捕獲時(shí),就會(huì)創(chuàng)建一個(gè)異常處理參數(shù),這個(gè)參數(shù)的初始化值即為被拋出的那個(gè)代表實(shí)際異常的對象的引用。當(dāng)整個(gè)catch語句塊執(zhí)行完畢后,異常處理參數(shù)被銷毀。4)異常處理參數(shù)
異常處理參數(shù)是catch語句塊的
例2-3VariablesAndLocalVarInit.java:各類變量及局部變量的初始化。例2-3VariablesAndLocalVarI
2.操作符與表達(dá)式
Java的操作符與C語言基本相同,具有C語言基礎(chǔ)的讀者可以很快地掌握J(rèn)ava操作符及其運(yùn)算規(guī)則,二者相同的部分,我們僅做簡要介紹。二者的區(qū)別主要體現(xiàn)在以下幾方面:首先,Java是強(qiáng)類型語言,其類型檢查比C語言更加嚴(yán)格,操作符的操作對象類型會(huì)受到更多限制;其次,C語言中的指針操作符在Java中不存在,而Java中增加了引用類型測試操作符instanceof、無符號右移操作符“>>>”、字符串連接操作符“+”等。將操作符與操作數(shù)按照特定的規(guī)則連接起來,就構(gòu)成了通常意義上的表達(dá)式。2.操作符與表達(dá)式
Java的操作符與C語言基本相第-2-章---Java語言基礎(chǔ)課件1)算術(shù)操作符
算術(shù)操作符“+”和“-”既可以作為二元操作符,又可以作為一元操作符。二元算術(shù)操作符(+、-、*、/、%)可以作用于任意整型或浮點(diǎn)型的操作數(shù)。當(dāng)兩個(gè)操作數(shù)的類型不同時(shí),需要進(jìn)行自動(dòng)類型轉(zhuǎn)換。自動(dòng)類型轉(zhuǎn)換的規(guī)則為:若兩個(gè)操作數(shù)中有一個(gè)為double類型,則將另一個(gè)操作數(shù)轉(zhuǎn)換為double類型;否則,若兩個(gè)操作數(shù)中有一個(gè)為float類型,則將另一個(gè)操作數(shù)轉(zhuǎn)換為float類型;否則,若兩個(gè)操作數(shù)中有一個(gè)為long類型,則將另一個(gè)操作數(shù)轉(zhuǎn)換為long類型;否則,兩個(gè)操作數(shù)均轉(zhuǎn)換為int類型。1)算術(shù)操作符
算術(shù)操作符“+”和“-”既可以作為第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件2)關(guān)系操作符
關(guān)系操作符用來比較兩個(gè)操作數(shù)的大小、相等/不等關(guān)系。操作數(shù)與操作符共同構(gòu)成關(guān)系表達(dá)式,如果表達(dá)式成立,則關(guān)系運(yùn)算的結(jié)果為true,否則為false。關(guān)系操作符的操作數(shù)自動(dòng)類型轉(zhuǎn)換規(guī)則與二元算術(shù)操作符相同。2)關(guān)系操作符
關(guān)系操作符用來比較兩個(gè)操作數(shù)的大小3)邏輯操作符
需要特別注意的是,兩種與操作“&&”和“&”的運(yùn)算過程不同,兩種或操作“||”和“|”的運(yùn)算過程也不同?!?&”和“||”稱為短路的邏輯操作,在運(yùn)算過程中,以先左后右的順序依次計(jì)算兩個(gè)操作數(shù)的布爾值,如果左側(cè)操作數(shù)的布爾值能夠完全決定整個(gè)邏輯表達(dá)式的布爾值,則不再計(jì)算右側(cè)的操作數(shù)。相對應(yīng)地,“&”和“|”稱為非短路的邏輯操作,即不管左側(cè)操作數(shù)的布爾值能否決定整個(gè)邏輯表達(dá)式的布爾值,都要先計(jì)算右側(cè)操作數(shù)的布爾值,然后再求出邏輯表達(dá)式的布爾值。3)邏輯操作符
需要特別注意的是,兩種與操作“&&第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件4)位操作符
在處理整型變量或常量時(shí),可以直接對整型值的各個(gè)位進(jìn)行操作,具體操作可通過位操作符完成。位操作符包括位邏輯操作符(&、|、^、~)以及移位操作符(<<、>>、>>>)。二元的位邏輯操作符在操作數(shù)的每個(gè)對應(yīng)位上進(jìn)行相應(yīng)的邏輯運(yùn)算。操作符“&”、“|”和“^”到底是作為位操作符使用還是作為邏輯操作符使用,完全取決于其連接的操作數(shù)的類型到底是整型還是布爾型。一元位邏輯操作符“~”則是對數(shù)據(jù)的每個(gè)二進(jìn)制位取反。4)位操作符
在處理整型變量或常量時(shí),可以直接對整第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件5)賦值操作符
賦值操作符用于將一個(gè)表達(dá)式的值賦給一個(gè)變量。賦值操作符可以與其他操作符一起使用,以使程序表達(dá)簡練并提高編譯速度。賦值操作符的運(yùn)算屬于二元運(yùn)算,當(dāng)兩個(gè)操作數(shù)類型不一致時(shí),編譯器會(huì)進(jìn)行自動(dòng)類型轉(zhuǎn)換,轉(zhuǎn)換規(guī)則如圖2-3所示。5)賦值操作符
賦值操作符用于將一個(gè)表達(dá)式的值賦給圖2-3數(shù)值類型之間的合法自動(dòng)轉(zhuǎn)換圖2-3數(shù)值類型之間的合法自動(dòng)轉(zhuǎn)換第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件
3.操作符的優(yōu)先級
由多個(gè)操作符連接而成的復(fù)合表達(dá)式,運(yùn)算時(shí)需要按照表2-8所示的優(yōu)先級順序由高到低進(jìn)行運(yùn)算,對于同級的操作符,其結(jié)合方向如表2-8右列所示。通常,圓括號可以幫助程序員在不確定操作符優(yōu)先級的情況下明確所要進(jìn)行的運(yùn)算,如果沒有圓括號的輔助,就需要按照表2-8中的優(yōu)先級次序進(jìn)行運(yùn)算。3.操作符的優(yōu)先級
由多個(gè)操作符連接而成的復(fù)合表達(dá)第-2-章---Java語言基礎(chǔ)課件
4.強(qiáng)制類型轉(zhuǎn)換
我們已經(jīng)知道,收縮(narrowing)類型轉(zhuǎn)換可將較大范圍類型的操作數(shù)值轉(zhuǎn)換為較小范圍類型的操作數(shù)值,這一過程往往會(huì)損失操作數(shù)的精度。收縮類型轉(zhuǎn)換需要通過強(qiáng)制類型轉(zhuǎn)換來完成,不使用強(qiáng)制類型轉(zhuǎn)換會(huì)導(dǎo)致編譯器報(bào)錯(cuò)。類型轉(zhuǎn)換的語法是將目標(biāo)類型放在圓括號內(nèi),后跟要轉(zhuǎn)換的變量、表達(dá)式或常量值。4.強(qiáng)制類型轉(zhuǎn)換
我們已經(jīng)知道,收縮(narrow第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件2.4程序流控制
程序的執(zhí)行順序是由語句控制的,一些語句作為其他語句結(jié)構(gòu)的一部分存在。Java的程序流控制結(jié)構(gòu)與C和C++的程序流控制結(jié)構(gòu)基本相同,不同之處包括:沒有g(shù)oto語句,break可以帶標(biāo)簽,J2SE5.0中還加入了一種變形的for循環(huán)。2.4程序流控制
程序的執(zhí)行順序第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件第-2-章---Java語言基礎(chǔ)課件2.5數(shù)組與多維數(shù)組
數(shù)組是絕大多數(shù)高級語言都提供的數(shù)據(jù)結(jié)構(gòu)。在Java中,數(shù)組是一種效率最高的存儲(chǔ)和隨機(jī)訪問大量同類型元素的方式。數(shù)組可以用來存儲(chǔ)一個(gè)元素個(gè)數(shù)固定、且元素類型相同的有序集。因此,數(shù)組中的元素都是同一種類型,數(shù)組的長度在創(chuàng)建時(shí)確定,并且在創(chuàng)建后不會(huì)改變。數(shù)組的大小固定且在生命周期中大小不變正是數(shù)組獲得效率優(yōu)勢的原因。2.5數(shù)組與多維數(shù)組
數(shù)組是絕大多數(shù)高級
1.數(shù)組的聲明
根據(jù)數(shù)組的概念,定義一個(gè)數(shù)組涉及的要素包括元素類型、數(shù)組變量名稱、數(shù)組長度,支持多維數(shù)組的語言還涉及數(shù)組的維度。其中,元素類型、數(shù)組變量名稱和維度都需要在數(shù)組聲明時(shí)進(jìn)行定義,而數(shù)組長度一般在數(shù)組創(chuàng)建時(shí)確定。1.數(shù)組的聲明
根據(jù)數(shù)組的概念,定義一個(gè)數(shù)組涉及的數(shù)組的元素類型既可以是基本類型,也可以是引用類型。數(shù)組變量的名稱沿用變量的命名規(guī)則。具體地講,一維數(shù)組的聲明方法分兩種:
(1)元素類型[]數(shù)組引用變量;
(2)元素類型數(shù)組引用變量[];數(shù)組的元素類型既可以是基本類型,也可以是引用類型。數(shù)組變
2.數(shù)組的創(chuàng)建、初始化和訪問
在Java中,數(shù)組類型是一種引用數(shù)據(jù)類型,每個(gè)具體的數(shù)組都是被動(dòng)態(tài)創(chuàng)建的實(shí)例對象。因而與一般引用類型變量類似地,聲明數(shù)組變量并不在內(nèi)存中為數(shù)組分配存儲(chǔ)空間,而只是創(chuàng)建了一個(gè)對數(shù)組引用的存儲(chǔ)位置。如果數(shù)組變量中沒有包含對數(shù)組對象的引用,則這個(gè)變量的值為null。建立數(shù)組變量與數(shù)組對象之間的引用關(guān)系,通常是通過用new關(guān)鍵字創(chuàng)建數(shù)組的過程來實(shí)現(xiàn)的。具體創(chuàng)建方法為
數(shù)組引用變量=new元素類型[數(shù)組長度];2.數(shù)組的創(chuàng)建、初始化和訪問
在Java中,數(shù)組類這條語句首先使用“new元素類型[數(shù)組長度]”在堆中創(chuàng)建了一個(gè)數(shù)組對象,然后將這個(gè)數(shù)組對象的引用賦給了數(shù)組變量。如果將上節(jié)的數(shù)組聲明與數(shù)組創(chuàng)建合為一步,則基本形式為:
(1)元素類型[]數(shù)組引用變量=new元素類型[數(shù)組長度];
(2)元素類型數(shù)組引用變量[]=new元素類型[數(shù)組長度];這條語句首先使用“new元素類型[數(shù)組長度]”在堆中創(chuàng)以下問題還需特別注意:
(1)數(shù)組變量與數(shù)組對象是不同的,變量存儲(chǔ)了對數(shù)組對象的引用。但在一些情境下,也可以簡化地將變量稱為“數(shù)組”,而不是明確陳述為“指向含有n個(gè)T類型元素的數(shù)組對象的引用變量”。
(2)所有數(shù)組均包含一個(gè)表示數(shù)組中元素個(gè)數(shù)的成員變量length。以下問題還需特別注意:
(1)數(shù)組變量與數(shù)組對象是(3)當(dāng)創(chuàng)建的數(shù)組的元素類型為引用類型T時(shí),數(shù)組的每一個(gè)元素實(shí)際上存儲(chǔ)的是對T類型對象的引用,以如下程序?yàn)槔?/p>
Point[]p=newPoint[10];
for(inti=0;i<10;i++)
p[i]=newPoint();
數(shù)組p的每個(gè)元素的類型為Point引用類型,對于每個(gè)Point引用變量p[i
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度定制化工業(yè)機(jī)器人加工合同2篇
- 二零二五年度農(nóng)村房屋贈(zèng)與合同附農(nóng)業(yè)科技推廣服務(wù)協(xié)議2篇
- 2025年度勞動(dòng)合同解除與離職員工再就業(yè)服務(wù)合同3篇
- 2025年住房公積金租房提取服務(wù)評價(jià)及反饋合同3篇
- 2025年度綠色生態(tài)養(yǎng)豬場資產(chǎn)轉(zhuǎn)讓合同3篇
- 二零二五年度門面房租賃押金管理及退還合同3篇
- 2025年度別墅轉(zhuǎn)讓與庭院改造一體化服務(wù)合同2篇
- 二零二五年度菜鳥物流信息平臺轉(zhuǎn)讓合同3篇
- 二零二五年度海洋工程合同終止與海洋環(huán)境保護(hù)協(xié)議3篇
- 二零二五年度虛擬現(xiàn)實(shí)設(shè)備租賃合同2篇
- 老年病及老年綜合征中醫(yī)證治概要
- 三年級上冊數(shù)學(xué)說課稿- 2.2 看一看(二)-北師大版
- 超星爾雅學(xué)習(xí)通《西廂記》賞析(首都師范大學(xué))網(wǎng)課章節(jié)測試答案
- 切削液的配方
- 塑料門窗及型材功能結(jié)構(gòu)尺寸
- 2023-2024學(xué)年湖南省懷化市小學(xué)數(shù)學(xué)五年級上冊期末深度自測試卷
- GB 7101-2022食品安全國家標(biāo)準(zhǔn)飲料
- 超實(shí)用的發(fā)聲訓(xùn)練方法
- 《第六課 從傳統(tǒng)到現(xiàn)代課件》高中美術(shù)湘美版美術(shù)鑒賞
- 英語四六級講座課件
- Unit 3 On the move Understanding ideas(Running into a better life)課件- 高一上學(xué)期英語外研版(2019)必修第二冊
評論
0/150
提交評論