Java的基本符號(hào).doc_第1頁(yè)
Java的基本符號(hào).doc_第2頁(yè)
Java的基本符號(hào).doc_第3頁(yè)
Java的基本符號(hào).doc_第4頁(yè)
Java的基本符號(hào).doc_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Java的基本符號(hào)(token)Java的單詞符號(hào)有五種:關(guān)鍵字、標(biāo)識(shí)符、常量、分隔符和操作符。Java的字符集 Java 采用一種稱為unicode的字符集,該字符集合是一種新的編碼標(biāo)準(zhǔn),與常見(jiàn)的ASCII碼的區(qū)別在于: unicode使用16位二進(jìn)制而不是8位來(lái)表示一個(gè)字符。 unicode字符集中增加了許多非拉丁語(yǔ)字符。標(biāo)識(shí)符 Java標(biāo)識(shí)符必須以字母,數(shù)字,美元符號(hào)$,下劃線_組成,標(biāo)識(shí)符第一個(gè)字符不可用數(shù)字。Java語(yǔ)言對(duì)字母的大小寫(xiě)是敏感的,在語(yǔ)法中嚴(yán)格區(qū)分大小寫(xiě)。關(guān)鍵字 關(guān)鍵字是為特定目的而保留的保留字,程序員不要將關(guān)鍵字作為自己的標(biāo)識(shí)符。 Java的關(guān)鍵字有:abstract boolean break byte case catch char class continue do double else extends false find finally float for implements import instanceof int interface long native new null package private public return short static super switch synchronized this throw true try void while常量 常量可分為整型常量,浮點(diǎn)數(shù)常量,字符常量,字符串常量和布爾常量。整型常量:可分為int型和long型兩種,缺省為int型,long型數(shù)值后加L。 整型常量可用10、8和16進(jìn)制表示。如:123(十進(jìn)制) 052(八進(jìn)制) 0x3c(十六進(jìn)制) 浮點(diǎn)數(shù)常量:有單精度和雙精度之分,缺省為雙精度,單精度在數(shù)值后加f。另外,浮點(diǎn)數(shù)常量也可用普通計(jì)數(shù)法和科學(xué)計(jì)數(shù)法來(lái)表示。如:1.23f 1.1E-2 字符常量:用 括起來(lái)的一個(gè)字符。如a,H。使用16位的unicode字符集。Java 語(yǔ)言可使用轉(zhuǎn)義字符“來(lái)標(biāo)記特殊字符。如“n表示換行符。 字符串常量用 包括,如Hello World。 布爾常量只有兩個(gè)值,true和false。分隔符 分隔符起分隔單詞符號(hào)的作用。包括分號(hào);、花括號(hào)和空白符號(hào)。Java的注釋 Java的注釋有三種形式:?jiǎn)涡凶⑨?如:/Comment on one line 多行注釋 如:/* Comment on one or more lines */ 文檔注釋 如:/* Document Comment */Java的數(shù)據(jù)類(lèi)型和變量Java的基本數(shù)據(jù)類(lèi)型 Java的基本數(shù)據(jù)類(lèi)型有8種,見(jiàn)下表: 數(shù)據(jù)類(lèi)型 類(lèi)別 寬度(位) 取值范圍 boolean 邏輯型 1 true/false char 文字型 16 byte 整數(shù)類(lèi)型 8 -27 27-1 short 整數(shù)類(lèi)型 16 -215 215-1 int 整數(shù)類(lèi)型 32 -231 231-1 long 整數(shù)類(lèi)型 64 -263 263-1 float 浮點(diǎn)型 32 double 浮點(diǎn)型 64Java的變量 Java的變量在使用前必須聲明。如 int radios, color;Java為所有基本數(shù)據(jù)類(lèi)型的變量作了預(yù)定義(預(yù)設(shè)置的值)。如 類(lèi)型名 boolean char byte short int long float double 預(yù)置值 false “u0000 (byte)0 (short)0 0 0L 0.0f 0.0數(shù)據(jù)類(lèi)型的轉(zhuǎn)換 Java是一種強(qiáng)類(lèi)型的語(yǔ)言,在賦值和參數(shù)傳遞時(shí),都要求類(lèi)型的匹配。類(lèi)型轉(zhuǎn)換有三種情況:自動(dòng)轉(zhuǎn)換、強(qiáng)制轉(zhuǎn)換和使用類(lèi)的方法轉(zhuǎn)換。自動(dòng)轉(zhuǎn)換:往往低精度類(lèi)型到高精度類(lèi)型能自動(dòng)轉(zhuǎn)換。如: byte b1=10, b2=20;int b3=b1+b2; 強(qiáng)制轉(zhuǎn)換:高精度類(lèi)型到低精度類(lèi)型必須強(qiáng)制轉(zhuǎn)換。這時(shí)數(shù)據(jù)可能會(huì)丟失部分信息。如:char key=(char)(12+55) /變量key被賦值為unicode值為67的字符c 方法轉(zhuǎn)換:如String str = 123; int a = Integer.parseInt(str); 使用Integer類(lèi)的方法parseInt將String轉(zhuǎn)換為對(duì)應(yīng)的整數(shù)。 Java編程的習(xí)慣約定為了提高程序的可讀性,Sun公司推薦在Java編程時(shí)使用以下的習(xí)慣約定:類(lèi)名(classes):有一個(gè)或若干個(gè)名詞組成,開(kāi)頭大寫(xiě),名詞間的區(qū)分也用大寫(xiě),其他小寫(xiě)。如:class AccountBook class ComplexVariable接口(Interfaces):規(guī)則同類(lèi)名。如:Interface Account方法(methods): 由一個(gè)或多個(gè)動(dòng)詞組成,開(kāi)頭小寫(xiě),動(dòng)詞間區(qū)分用大寫(xiě),其他小寫(xiě)。如:balanceAccount()變量:小寫(xiě)字母開(kāi)頭,單詞間用大寫(xiě)字母分隔 如:currentCustomer常量:所有字母大寫(xiě),單詞間用下劃線區(qū)分 如:MAXIMUM_SIZEJava的操作符根據(jù)操作對(duì)象的個(gè)數(shù)操作符可分為一元、二元或三元操作符。根據(jù)操作符的功能,又可分為算術(shù)、邏輯、關(guān)系等操作符。算術(shù)操作符一元: + - + - 二元: + - * / % 值得注意的是 + 和- 操作符,如:int a,x=1,y=5; a = +x;b=y+;此時(shí)a的值為2(先加1,后賦值),b的值為5(先賦值,后加1)。二元操作符兩側(cè)的操作對(duì)象數(shù)據(jù)類(lèi)型不先自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,再進(jìn)行操作。賦值操作符與復(fù)合賦值操作符 可將 變量 = 變量 op 表達(dá)式 寫(xiě)成 變量 op = 表達(dá)式 如:x+=20 與 x=x+20 結(jié)果一致,但更簡(jiǎn)潔。注意:= 與 = = 的不同。位操作符和移位操作符位操作符 &(按位與) |(按位或) (按位異或) 移位操作符 En 右移n位,空位用原最高位的位值補(bǔ)足,相當(dāng)于E/2 En 右移n位,空位補(bǔ)0關(guān)系操作符 關(guān)系操作符共六個(gè): (大于) =(大于等于) (小于)=(小于等于) !=(不等于) = =(相等)關(guān)系操作符的結(jié)果為boolean型數(shù)據(jù)(true或false)。注:= = 操作符只有在比較雙方均完全一致時(shí),其值為true,如比較的是兩個(gè)對(duì)象,即使兩個(gè)對(duì)象的內(nèi)容相同,結(jié)果也為false,只有這兩個(gè)對(duì)象為同一對(duì)象時(shí)才為true。邏輯操作符 邏輯操作符的操作對(duì)象和結(jié)果均為boolean型,共六個(gè):!(邏輯非) & (邏輯與) |(邏輯或)(邏輯并或) & (邏輯與) | (邏輯或)按位與&也可作為邏輯與使用,但未作優(yōu)化,而&操作符是經(jīng)過(guò)優(yōu)化的。對(duì)|操作符也類(lèi)似。其他操作符條件操作符 E1?E2:E3 表達(dá)式E1若成立,執(zhí)行表達(dá)式E2,否則執(zhí)行E3。 逗號(hào)操作符 ,可用于分隔語(yǔ)句。 如 int x,y; for (x=0,y=0;x10;x+) .;操作符的優(yōu)先級(jí)和結(jié)合規(guī)則 優(yōu)先級(jí): 一元 算術(shù) 移位 關(guān)系 按位 邏輯 三元 (復(fù)合)賦值 逗號(hào)結(jié)合規(guī)則: 除一元、三元和賦值操作符是自右至左結(jié)合外,其他均自左至右結(jié)合。語(yǔ)句的分類(lèi)Java語(yǔ)句按是否改變運(yùn)行的狀態(tài)可分為執(zhí)行語(yǔ)句(如表達(dá)式語(yǔ)句)和非執(zhí)行語(yǔ)句(如聲明語(yǔ)句)。任何語(yǔ)句的末尾都以“;”結(jié)束。執(zhí)行語(yǔ)句按其組成可分三類(lèi):空語(yǔ)句 只有一個(gè)語(yǔ)句結(jié)束符“;” ,無(wú)任何內(nèi)容。 基本語(yǔ)句(單語(yǔ)句) 獨(dú)立的、完整的不能再分割為更小的可執(zhí)行單元。 復(fù)合語(yǔ)句(塊語(yǔ)句) 包含在 內(nèi)的一條或若干條語(yǔ)句。 Java的基本語(yǔ)句的結(jié)構(gòu)可分為4類(lèi):(1)順序結(jié)構(gòu)語(yǔ)句 (2)分支語(yǔ)句 (3)循環(huán)語(yǔ)句 (4)例外處理語(yǔ)句 后三種語(yǔ)句又稱為流控制語(yǔ)句,我們將主要介紹分支語(yǔ)句和循環(huán)語(yǔ)句,而例外處理語(yǔ)句包括try、catch、finally以及throw語(yǔ)句。這些語(yǔ)句是Java所特有的。我們將在后面作專門(mén)的介紹。分支語(yǔ)句分支語(yǔ)句包括if-else, break, switch, return等語(yǔ)句。分支語(yǔ)句提供了一種控制機(jī)制,使得程序可以跳過(guò)一些語(yǔ)句,轉(zhuǎn)去執(zhí)行特定的語(yǔ)句。條件語(yǔ)句 if-else.if-else語(yǔ)句根據(jù)判定條件的真假來(lái)執(zhí)行兩種操作中的一種,其格式為: if (boolean-expression) statement1; else statement2;其中,要注意的有:布爾表達(dá)式boolean-expression是任意一個(gè)返回布爾型數(shù)據(jù)的表達(dá)式(這比C、C+的限制要嚴(yán)格)。 每個(gè)單一的語(yǔ)句后都必須有分號(hào)。 語(yǔ)句statement1, statement2可以是復(fù)合語(yǔ)句,這時(shí)要用花括號(hào)。外面不加分號(hào)。 else子句是任選的。 若布爾表達(dá)式的值為true,則程序執(zhí)行statement1,否則執(zhí)行statement2。 if-else語(yǔ)句的一種特殊形式為: if (expression1) statement1 else if (expression2) statement2 else if (expressionN) statementN else子句不能單獨(dú)作為語(yǔ)句使用,它必須和if配對(duì)使用。else總是與離它最近的if配對(duì)??梢酝ㄟ^(guò)使用花括號(hào)來(lái)改變配對(duì)關(guān)系。 例3.1: 比較兩個(gè)數(shù)的大小,并按從小到大的次序輸出。public class CompareTwopublic static void main (String args)double d1=23.4;double d2=35.1;if (d2=d1)System.out.println(d2+=+d1);elseSystem.out.println(d1+=+d2);例3.2:判斷某一年是否為閏年。閏年的條件是符合下面二者之一: 能被4整除,但不能被100整除; 能被400整除。public class LeapYearpublic static void main (String args)int year=1989; /method1if (year%4=0 & year%100!=0) | (year%400=0)System.out.println(year+is a leap year.);elseSystem.out.println(year+is not a leap year.);year=2000; /method2boolean leap;if (year%4 != 0)leap=false;else if (year%100 != 0)leap=true;else if (year%400 != 0)leap=false;elseleap=true;if(leap=true)System.out.println(year+ is a leap year.);elseSystem.out.println(year+is not a leap year.);該例中,方法1用一個(gè)邏輯表達(dá)式包含了所有的閏年條件,方法2使用了if-else語(yǔ)句的特殊形式。多分支語(yǔ)句switchswitch語(yǔ)句是一種多分支選擇語(yǔ)句,它可根據(jù)switch中表達(dá)式的值,來(lái)執(zhí)行多個(gè)操作中的一個(gè),它的一般格式如下:switch (expression) case value1: statement1; break; case value2: statement2; break; case valueN: statemendN; break; default: defaultStatement;表達(dá)式expression可以返回任一簡(jiǎn)單類(lèi)型的值(如整型、字符型),多分支語(yǔ)句把表達(dá)式返回的值與每個(gè)case子句中的值(一個(gè)常量)相比。如果匹配成功,則執(zhí)行該case子句后的語(yǔ)句序列。 default子句是任選的。當(dāng)表達(dá)式的值與任一case子句中的值都不匹配時(shí),程序執(zhí)行default后面的語(yǔ)句。如果表達(dá)式的值與任一case子句中的值都不匹配且沒(méi)有default子句,則程序不做任何操作,直接跳出switch語(yǔ)句。 break語(yǔ)句用來(lái)在執(zhí)行完一個(gè)case分支后,使程序跳出switch語(yǔ)句,即終止switch語(yǔ)句的執(zhí)行。 switch語(yǔ)句的功能可以用if-else來(lái)實(shí)現(xiàn),但在某些情況下,使用switch語(yǔ)句更簡(jiǎn)煉,且程序的執(zhí)行效率提高。例3.3 根據(jù)考試成績(jī)的等級(jí)打印出百分制分?jǐn)?shù)段。 public class GradeLevel public static void main(String args)System.out.println(“nOutPut is:);char grade=C; /normal useswitch (grade)case A: System.out.println(grade+is 85100);break;case B: System.out.println(grade+is 7084);break;case C: System.out.println(grade+is 6069);break;case D: System.out.println(grade+is 60);break;default: System.out.println(inputerror);break語(yǔ)句在switch語(yǔ)中,break語(yǔ)句用來(lái)終止switch語(yǔ)句的執(zhí)行。使程序在switch語(yǔ)句后的第一個(gè)語(yǔ)句開(kāi)始執(zhí)行。 在Java中,可以為每個(gè)代碼塊加一個(gè)括號(hào)。一個(gè)代碼塊通常是用花括號(hào)括起來(lái)的一段代碼。加標(biāo)號(hào)的格式如下: BlockLabel: codeBlock break語(yǔ)句的第二種使用情況就是跳出它所指定的塊,并從緊跟該塊的第一條語(yǔ)句處執(zhí)行。其格式為: break BlockLabel; 例如: a: /標(biāo)記代碼塊ab: /標(biāo)記代碼塊bc: /標(biāo)記代碼塊cbreak a;/will not be executed /will not be executed /will not be executed /execute from here與C、C+不同, Java中沒(méi)有g(shù)oto語(yǔ)句來(lái)實(shí)現(xiàn)任意的跳轉(zhuǎn), 因?yàn)間oto語(yǔ)句破壞程序的可讀性, 而且影響編譯的優(yōu)化。Java用break來(lái)實(shí)現(xiàn)goto語(yǔ)句所特有的一些功能。返回語(yǔ)句returnreturn語(yǔ)句用于從當(dāng)前執(zhí)行的方法中退出, 并返回到調(diào)用該方法的語(yǔ)句處繼續(xù)程序的執(zhí)行。返回語(yǔ)句有兩種格式:return expression 返回一個(gè)值給調(diào)用該方法的語(yǔ)句, 返回值的數(shù)據(jù)類(lèi)型必須與方法聲明中的返回值類(lèi)型一致??梢允褂脧?qiáng)制類(lèi)型轉(zhuǎn)換來(lái)使類(lèi)型一致。 return 當(dāng)方法說(shuō)明中用void聲明返回類(lèi)型為空時(shí), 可以使用這種格式, 它不返回任何值。不帶參數(shù)的return語(yǔ)句有時(shí)可省略。return語(yǔ)句通常用在一個(gè)方法體的最后。循環(huán)語(yǔ)句 循環(huán)語(yǔ)句包括 while, do-while, for, continue 等語(yǔ)句。循環(huán)語(yǔ)句的作用是反復(fù)執(zhí)行一段代碼,直到滿足循環(huán)終止條件為止,一個(gè)循環(huán)一般應(yīng)包括四部分內(nèi)容: 初始化部分(initialization): 用來(lái)設(shè)置循環(huán)的一些初始條件,計(jì)數(shù)器清零等。循環(huán)體部分(body): 這是反復(fù)循環(huán)的一段代碼,可以是單一的一條語(yǔ)句,也可以是復(fù)合語(yǔ)句。迭代部分(iteration): 這是在當(dāng)前循環(huán)結(jié)束,下一次循環(huán)開(kāi)始前執(zhí)行的語(yǔ)句,常常用來(lái)使計(jì)數(shù)器加1或減1。終止部分(termination): 通常是一個(gè)布爾表達(dá)式,每一次循環(huán)要對(duì)該表達(dá)式求值,以驗(yàn)證是否滿足循環(huán)終止條件。 下面分別介紹Java中的while語(yǔ)句,do-while語(yǔ)句和for語(yǔ)句。while語(yǔ)句 while語(yǔ)句的一般格式為:初始化while (條件表達(dá)式E)語(yǔ)句S; /循環(huán)體當(dāng)條件表達(dá)式E的值為true時(shí),循環(huán)執(zhí)行花括號(hào)中的語(yǔ)句S。S中包括迭代部分。 while語(yǔ)句首先計(jì)算條件表達(dá)式E是否成立,當(dāng)條件成立(true)時(shí),才去執(zhí)行循環(huán)中的語(yǔ)句。所以有可能循環(huán)體一次也不執(zhí)行。do-while語(yǔ)句 do-while語(yǔ)句的一般格式為:初始化do 語(yǔ)句S; /循環(huán)體 while (條件表達(dá)式E);do-while語(yǔ)句首先執(zhí)行循環(huán)體, 然后再計(jì)算終止條件, 若結(jié)果為true, 則循環(huán)執(zhí)行語(yǔ)句S, 直到條件表達(dá)式E的結(jié)果為false。 與while語(yǔ)句不同的是, do-while語(yǔ)句的循環(huán)體至少執(zhí)行一次。for語(yǔ)句 for語(yǔ)句的一般格式為:for (初始表達(dá)式; 條件表達(dá)式; 迭代表達(dá)式) 語(yǔ)句S; /循環(huán)體for語(yǔ)句執(zhí)行時(shí),首先執(zhí)行初始化操作,然后判斷終止條件是否滿足,如果滿足,則執(zhí)行循環(huán)體中的語(yǔ)句,最后執(zhí)行迭代部分。完成一次循環(huán)后,重新判斷終止條件。 可以在for語(yǔ)句的初始化部分聲明變量,它的作用域?yàn)檎麄€(gè)for語(yǔ)句。 for語(yǔ)句通常用來(lái)執(zhí)行循環(huán)次數(shù)確定的情況(如對(duì)數(shù)組元素進(jìn)行操作)。 在初始化部分和迭代部分可以使用逗號(hào)語(yǔ)句來(lái)分隔多個(gè)操作。例如: for (i=0,j=10; ij; i+,j-) continue語(yǔ)句continue語(yǔ)句用來(lái)結(jié)束本次循環(huán), 跳過(guò)循環(huán)體中下面尚未執(zhí)行的語(yǔ)句, 接著進(jìn)行終止條件的判斷, 以決定是否繼續(xù)循環(huán)。 也可以用continue跳轉(zhuǎn)到括號(hào)指明的外層循環(huán)中,這時(shí)的格式為 continue outerLable;例3.4:下例分別用while、do-while和for語(yǔ)句實(shí)現(xiàn)累計(jì)求和。public class Sumpublic static void main(String args)System.out.println(“n*while statement*);int n=10,sum=0; initializationwhile (n0) termination sum+=n; body n-; iterationSystem.out.println(sum is+sum);System.out.println(“n*do_while statement*);n=0; initializationsum=0;do sum+=n; body n+; iteration while(n=10); terminationSystem.out.println(sum is+sum);System.out.println(“n*for statement*);sum=0;for (int i=1;i=10;i+) sum+=i;System.out.println(sum is+sum);可以從中來(lái)比較這三種循環(huán)語(yǔ)句,從而在不同的場(chǎng)合選擇合適的語(yǔ)句。數(shù)組數(shù)組是有序數(shù)據(jù)的集合, 數(shù)組中的每個(gè)元素具有相同的類(lèi)型。數(shù)組名和下標(biāo)可唯一地確定數(shù)組中的元素。數(shù)組可分為一維數(shù)組和多維數(shù)組。一維數(shù)組 聲明方式:type arrayName; 或 type arrayName; type可以是Java中任意的數(shù)據(jù)類(lèi)型, arrayName為數(shù)組名。如: int intArray; 聲明了一個(gè)名為intArray的整型數(shù)組, 數(shù)組中的每個(gè)元素為int型數(shù)據(jù)。 Java在數(shù)組的聲明中并不為數(shù)組元素分配內(nèi)存, 因此 中不用指出數(shù)組中元素個(gè)數(shù), 即數(shù)組長(zhǎng)度。在訪問(wèn)數(shù)組的任何元素之前,我們必須為它分配內(nèi)存空間, 這可用new操作符, 其格式如下:arrayName = new typearraySize; 其中,arraySize指明數(shù)組的長(zhǎng)度。如: intArray = new int; 為該數(shù)組分配了3個(gè)int型整數(shù)所需的內(nèi)存空間。通常, 這兩部分可以合在一起, 格式如下: type arrayName = new typearraySize; 如: int intArray = new int; 用new操作符為數(shù)組分配內(nèi)存空間后,就可以引用數(shù)組中的每一個(gè)元素。數(shù)組元素的引用方式為: arrayNameindex 其中: index為數(shù)組下標(biāo),它可以為整型常數(shù)或表達(dá)式。如a, b(i為整型), c6*I等。下標(biāo)從0開(kāi)始, 一直到數(shù)組的長(zhǎng)度減1。對(duì)于上面例子中的intArray數(shù)組來(lái)說(shuō),它有3個(gè)元素,分別為: intArray0, intArray1, intArray。(注意: 沒(méi)有intArray。)另外,與C、C+中不同,Java對(duì)數(shù)組元素要進(jìn)行越界檢查以保證安全性。對(duì)于每個(gè)數(shù)組都有一個(gè)屬性length指明它的長(zhǎng)度。例如: intArray.length指明數(shù)組intArray的長(zhǎng)度。數(shù)組的初始化 對(duì)數(shù)組元素可以按照上述的例子進(jìn)行賦值。也可以在定義數(shù)組的同時(shí)進(jìn)行初始化。 如: int a=1,2,3,4,5; 用逗號(hào)(,)分隔數(shù)組的各個(gè)元素,系統(tǒng)自動(dòng)為數(shù)組分配一定的內(nèi)存空間。例3.5:數(shù)組的使用:public class ArrayTestpublic static void main(String args)int i;int a=new int;for (i=0;i5;i+)a=i;for (i=a.length-1;i=0;i-)System.out.println(a+i+=+a);多維數(shù)組 與C、C+一樣, Java中多維數(shù)組可被看作數(shù)組的數(shù)組。例如二維數(shù)組就可看成是一個(gè)特殊的一維數(shù)組, 該數(shù)組的每個(gè)元素又是一個(gè)一維數(shù)組。下面我們主要以二維數(shù)組為例來(lái)說(shuō)明多維數(shù)組。 二維數(shù)組的聲明方式如下: type arrayName; 如: int intArray;與一維數(shù)組一樣,這時(shí)對(duì)數(shù)組元素也沒(méi)有分配內(nèi)存空間,同要使用運(yùn)算符new來(lái)分配內(nèi)存,然后才可以訪問(wèn)每個(gè)元素。對(duì)二維數(shù)組中每個(gè)元素,引用方式為: arrayNameindex1index2 其中index1、index2為下標(biāo), 可為整型常數(shù)或表達(dá)式, 如a等。數(shù)組每一維的下標(biāo)也都從0開(kāi)始。在聲明二維數(shù)組的同時(shí)也可對(duì)它進(jìn)行初始化。如:int a=2,3,1,5,3,4; 定義了一個(gè)32的數(shù)組,并對(duì)每個(gè)元素賦值。數(shù)組的越界 如果使用數(shù)組分量時(shí),其下標(biāo)超過(guò)規(guī)定的值,則會(huì)發(fā)生數(shù)組的越界。這時(shí),雖然程序能通過(guò)編譯,但在運(yùn)行時(shí)會(huì)產(chǎn)生一個(gè)名為ArrayIndexOutOfBoundsException 的例外,所以編程時(shí)要注意檢查數(shù)組下標(biāo)。1VO是用new關(guān)鍵字創(chuàng)建,由GC回收的。PO則是向數(shù)據(jù)庫(kù)中添加新數(shù)據(jù)時(shí)創(chuàng)建,刪除數(shù)據(jù)庫(kù)中數(shù)據(jù)時(shí)削除的。并且它只能存活在一個(gè)數(shù)據(jù)庫(kù)連接中,斷開(kāi)連接即被銷(xiāo)毀。2VO是值對(duì)象,精確點(diǎn)講它是業(yè)務(wù)對(duì)象,是存活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯使用的,它存活的目的就是為數(shù)據(jù)提供一個(gè)生存的地方。PO則是有狀態(tài)的,每個(gè)屬性代表其當(dāng)前的狀態(tài)。它是物理數(shù)據(jù)的對(duì)象表示。使用它,可以使我們的程序與物理數(shù)據(jù)解耦,并且可以簡(jiǎn)化對(duì)象數(shù)據(jù)與物理數(shù)據(jù)之間的轉(zhuǎn)換。3VO的屬性是根據(jù)當(dāng)前業(yè)務(wù)的不同而不同的,也就是說(shuō),它的每一個(gè)屬性都一一對(duì)應(yīng)當(dāng)前業(yè)務(wù)邏輯所需要的數(shù)據(jù)的名稱。PO的屬性是跟數(shù)據(jù)庫(kù)表的字段一一對(duì)應(yīng)的。PO對(duì)象需要實(shí)現(xiàn)序列化接口。-PO是持久化對(duì)象,它只是將物理數(shù)據(jù)實(shí)體的一種對(duì)象表示,為什么需要它?因?yàn)樗梢院?jiǎn)化我們對(duì)于物理實(shí)體的了解和耦合,簡(jiǎn)單地講,可以簡(jiǎn)化對(duì)象的數(shù)據(jù)轉(zhuǎn)換為物理數(shù)據(jù)的編程。VO是什么?它是值對(duì)象,準(zhǔn)確地講,它是業(yè)務(wù)對(duì)象,是生活在業(yè)務(wù)層的,是業(yè)務(wù)邏輯需要了解,需要使用的,再簡(jiǎn)單地講,它是概念模型轉(zhuǎn)換得到的。首先說(shuō)PO和VO吧,它們的關(guān)系應(yīng)該是相互獨(dú)立的,一個(gè)VO可以只是PO的部分,也可以是多個(gè)PO構(gòu)成,同樣也可以等同于一個(gè)PO(當(dāng)然我是指他們的屬性)。正因?yàn)檫@樣,PO獨(dú)立出來(lái),數(shù)據(jù)持久層也就獨(dú)立出來(lái)了,它不會(huì)受到任何業(yè)務(wù)的干涉。又正因?yàn)檫@樣,業(yè)務(wù)邏輯層也獨(dú)立開(kāi)來(lái),它不會(huì)受到數(shù)據(jù)持久層的影響,業(yè)務(wù)層關(guān)心的只是業(yè)務(wù)邏輯的處理,至于怎么存怎么讀交給別人吧!不過(guò),另外一點(diǎn),如果我們沒(méi)有使用數(shù)據(jù)持久層,或者說(shuō)沒(méi)有使用hibernate,那么PO和VO也可以是同一個(gè)東西,雖然這并不好。-java的(PO,VO,TO,BO,DAO,POJO)解釋PO(persistant object) 持久對(duì)象在o/r映射的時(shí)候出現(xiàn)的概念,如果沒(méi)有o/r映射,沒(méi)有這個(gè)概念存在了。通常對(duì)應(yīng)數(shù)據(jù)模型(數(shù)據(jù)庫(kù)),本身還有部分業(yè)務(wù)邏輯的處理。可以看成是與數(shù)據(jù)庫(kù)中的表相映射的java對(duì)象。最簡(jiǎn)單的PO就是對(duì)應(yīng)數(shù)據(jù)庫(kù)中某個(gè)表中的一條記錄,多個(gè)記錄可以用PO的集合。PO中應(yīng)該不包含任何對(duì)數(shù)據(jù)庫(kù)的操作。VO(value object) 值對(duì)象通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和PO一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對(duì)象,可以和表對(duì)應(yīng),也可以不,這根據(jù)業(yè)務(wù)的需要.個(gè)人覺(jué)得同DTO(數(shù)據(jù)傳輸對(duì)象),在web上傳遞。TO(Transfer Object),數(shù)據(jù)傳輸對(duì)象在應(yīng)用程序不同tie(關(guān)系)之間傳輸?shù)膶?duì)象BO(business object) 業(yè)務(wù)對(duì)象從業(yè)務(wù)模型的角度看,見(jiàn)UML元件領(lǐng)域模型中的領(lǐng)域?qū)ο?。封裝業(yè)務(wù)邏輯的java對(duì)象,通過(guò)調(diào)用DAO方法,結(jié)合PO,VO進(jìn)行業(yè)務(wù)操作。POJO(plain ordinary java object) 簡(jiǎn)單無(wú)規(guī)則java對(duì)象純的傳統(tǒng)意義的java對(duì)象。就是說(shuō)在一些Object/Relation Mapping工具中,能夠做到維護(hù)數(shù)據(jù)庫(kù)表記錄的persisent object完全是一個(gè)符合Java Bean規(guī)范的純Java對(duì)象,沒(méi)有增加別的屬性和方法。我的理解就是最基本的Java Bean,只有屬性字段及setter和getter方法!。DAO(data access object) 數(shù)據(jù)訪問(wèn)對(duì)象是一個(gè)sun的一個(gè)標(biāo)準(zhǔn)j2ee設(shè)計(jì)模式,這個(gè)模式中有個(gè)接口就是DAO,它負(fù)持久層的操作。為業(yè)務(wù)層提供接口。此對(duì)象用于訪問(wèn)數(shù)據(jù)庫(kù)。通常和PO結(jié)合使用,DAO中包含了各種數(shù)據(jù)庫(kù)的操作方法。通過(guò)它的方法,結(jié)合PO對(duì)數(shù)據(jù)庫(kù)進(jìn)行相關(guān)的操作。夾在業(yè)務(wù)邏輯與數(shù)據(jù)庫(kù)資源中間。配合VO, 提供數(shù)據(jù)庫(kù)的CRUD操作.O/R Mapper 對(duì)象/關(guān)系 映射定義好所有的mapping之后,這個(gè)O/R Mapper可以幫我們做很多的工作。通過(guò)這些mappings,這個(gè)O/R Mapper可以生成所有的關(guān)于對(duì)象保存,刪除,讀取的SQL語(yǔ)句,我們不再需要寫(xiě)那么多行的DAL代碼了。實(shí)體Model(實(shí)體模式)DAL(數(shù)據(jù)訪問(wèn)層)IDAL(接口層)DALFactory(類(lèi)工廠)BLL(業(yè)務(wù)邏輯層)BOF Business Object Framework 業(yè)務(wù)對(duì)象框架SOA Service Orient Architecture 面向服務(wù)的設(shè)計(jì)EMF Eclipse Model Framework Eclipse建模框架-PO:全稱是persistant object持久對(duì)象最形象的理解就是一個(gè)PO就是數(shù)據(jù)庫(kù)中的一條記錄。好處是可以把一條記錄作為一個(gè)對(duì)象處理,可以方便的轉(zhuǎn)為其它對(duì)象。BO:全稱是business object:業(yè)務(wù)對(duì)象主要作用是把業(yè)務(wù)邏輯封裝為一個(gè)對(duì)象。這個(gè)對(duì)象可以包括一個(gè)或多個(gè)其它的對(duì)象。比如一個(gè)簡(jiǎn)歷,有教育經(jīng)歷、工作經(jīng)歷、社會(huì)關(guān)系等等。我們可以把教育經(jīng)歷對(duì)應(yīng)一個(gè)PO,工作經(jīng)歷對(duì)應(yīng)一個(gè)PO,社會(huì)關(guān)系對(duì)應(yīng)一個(gè)PO。建立一個(gè)對(duì)應(yīng)簡(jiǎn)歷的BO對(duì)象處理簡(jiǎn)歷,每個(gè)BO包含這些PO。這樣處理業(yè)務(wù)邏輯時(shí),我們就可以針對(duì)BO去處理。VOvalue object值對(duì)象ViewObject表現(xiàn)層對(duì)象主要對(duì)應(yīng)界面顯示的數(shù)據(jù)對(duì)象。對(duì)于一個(gè)WEB頁(yè)面,或者SWT、SWING的一個(gè)界面,用一個(gè)VO對(duì)象對(duì)應(yīng)整個(gè)界面的值。DTOData Transfer Object數(shù)據(jù)傳輸對(duì)象主要用于遠(yuǎn)程調(diào)用等需要大量傳輸對(duì)象的地方。比如我們一張表有100個(gè)字段,那么對(duì)應(yīng)的PO就有100個(gè)屬性。但是我們界面上只要顯示10個(gè)字段,客戶端用WEB service來(lái)獲取數(shù)據(jù),沒(méi)有必要把整個(gè)PO對(duì)象傳遞到客戶端,這時(shí)我們就可以用只有這10個(gè)屬性的DTO來(lái)傳遞結(jié)果到客戶端,這樣也不會(huì)暴露服務(wù)端表結(jié)構(gòu).到達(dá)客戶端以后,如果用這個(gè)對(duì)象來(lái)對(duì)應(yīng)界面顯示,那此時(shí)它的身份就轉(zhuǎn)為VOPOJOplain ordinary java object 簡(jiǎn)單java對(duì)象個(gè)人感覺(jué)POJO是最常見(jiàn)最多變的對(duì)象,是一個(gè)中間對(duì)象,也是我們最常打交道的對(duì)象。一個(gè)POJO持久化以后就是PO直接用它傳遞、傳遞過(guò)程中就是DTO直接用來(lái)對(duì)應(yīng)表示層就是VODAOdata access object數(shù)據(jù)訪問(wèn)對(duì)象這個(gè)大家最熟悉,和上面幾個(gè)O區(qū)別最大,基本沒(méi)有互相轉(zhuǎn)化的可能性和必要.主要用來(lái)封裝對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)。通過(guò)它可以把POJO持久化為PO,用PO組裝出來(lái)VO、DTO-PO:persistant object持久對(duì)象,可以看成是與數(shù)據(jù)庫(kù)中的表相映射的java對(duì)象。最簡(jiǎn)單的PO就是對(duì)應(yīng)數(shù)據(jù)庫(kù)中某個(gè)表中的一條記錄,多個(gè)記錄可以用PO的集合。 PO中應(yīng)該不包含任何對(duì)數(shù)據(jù)庫(kù)的操作.VO:value object值對(duì)象。通常用于業(yè)務(wù)層之間的數(shù)據(jù)傳遞,和PO一樣也是僅僅包含數(shù)據(jù)而已。但應(yīng)是抽象出的業(yè)務(wù)對(duì)象,可以和表對(duì)應(yīng),也可以不,這根據(jù)業(yè)務(wù)的需要.個(gè)人覺(jué)得同DTO(數(shù)據(jù)傳輸對(duì)象),在web上傳遞.DAO:data access object數(shù)據(jù)訪問(wèn)對(duì)象,此對(duì)象用于訪問(wèn)數(shù)據(jù)庫(kù)。通常和PO結(jié)合使用,DAO中包含了各種數(shù)據(jù)庫(kù)的操作方法。通過(guò)它的方法,結(jié)合PO對(duì)數(shù)據(jù)庫(kù)進(jìn)行相關(guān)的操作.BO:business object業(yè)務(wù)對(duì)象,封裝業(yè)務(wù)邏輯的java對(duì)象,通過(guò)

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論