Java程序設(shè)計(jì)與實(shí)踐(微課版)-課件第2章 Java基本語(yǔ)法_第1頁(yè)
Java程序設(shè)計(jì)與實(shí)踐(微課版)-課件第2章 Java基本語(yǔ)法_第2頁(yè)
Java程序設(shè)計(jì)與實(shí)踐(微課版)-課件第2章 Java基本語(yǔ)法_第3頁(yè)
Java程序設(shè)計(jì)與實(shí)踐(微課版)-課件第2章 Java基本語(yǔ)法_第4頁(yè)
Java程序設(shè)計(jì)與實(shí)踐(微課版)-課件第2章 Java基本語(yǔ)法_第5頁(yè)
已閱讀5頁(yè),還剩115頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第2章Java基本語(yǔ)法主講人:羅方芳本章學(xué)習(xí)內(nèi)容Java的基本語(yǔ)法變量運(yùn)算符選擇結(jié)構(gòu)語(yǔ)句循環(huán)結(jié)構(gòu)語(yǔ)句方法數(shù)組枚舉類型1Java的基本語(yǔ)法1.1基本語(yǔ)法—Java代碼的基本格式Java代碼的基本格式Java中的程序代碼都必須放在一個(gè)類中類需使用class關(guān)鍵字定義在class前面可以有一些修飾符

1.2基本語(yǔ)法—注釋單行注釋

多行注釋文檔注釋1.3基本語(yǔ)法—Java中的標(biāo)識(shí)符標(biāo)識(shí)符編程過程中,經(jīng)常需要在程序中定義一些符號(hào)來標(biāo)記一些名稱。如,包名、類名、方法名、參數(shù)名、變量名等,這些符號(hào)被稱為標(biāo)識(shí)符。標(biāo)識(shí)符的命名規(guī)則可由任意順序的大小寫字母、數(shù)字、下劃線(_)和美元符號(hào)($)組成不能以數(shù)字開頭不能是Java中的關(guān)鍵字(如for,if等)。1.3基本語(yǔ)法—Java中的標(biāo)識(shí)符合法的標(biāo)識(shí)符usernameusername123_username$username變量x不合法的標(biāo)識(shí)符123usernameclass98.3HelloWorld1.4基本語(yǔ)法—Java中的關(guān)鍵字關(guān)鍵字編程語(yǔ)言里事先定義好并賦予了特殊含義的單詞不能用作標(biāo)識(shí)符Java中的關(guān)鍵字abstractbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnshortstaticstrictfpsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhileassertenum1.5基本語(yǔ)法—Java中的常量常量就是在程序中固定不變的值,是不能改變的數(shù)據(jù)。finalintx=10;//現(xiàn)在不能對(duì)x進(jìn)行修改如下均為字面常量值,可在代碼中直接使用100.23'a'"HelloWorld"true、falsenull2Java中的變量2.1Java中的變量——變量的定義變量的定義程序會(huì)將程序運(yùn)行時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù)保存在一些內(nèi)存單元中,每個(gè)內(nèi)存單元都用一個(gè)標(biāo)識(shí)符來標(biāo)識(shí)。這些內(nèi)存單元我們稱之為變量。定義的標(biāo)識(shí)符就是變量名。內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)就是變量的值。內(nèi)存intx0inty內(nèi)存intx0inty3y=x+32.2變量的數(shù)據(jù)類型數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型數(shù)值型字符型(char)布爾型(boolean)類(class)接口(interface)數(shù)組枚舉(enum)注解(Annotation)整數(shù)類型(byte,short,int,long)浮點(diǎn)類型(float,double)2.2變量的數(shù)據(jù)類型(1)整數(shù)類型變量用來存儲(chǔ)整數(shù)數(shù)值。即,沒有小數(shù)部分的值。整數(shù)字面常量 bytex=127;//自動(dòng)轉(zhuǎn)換inty=66;longz=2147483647+1L;

inta=100_0000;類型占用空間取值范圍byte8位(1個(gè)字節(jié))-27~27-1short16位(2個(gè)字節(jié))-215~215-1int32位(4個(gè)字節(jié))-231~231-1long64位(8個(gè)字節(jié))-263~263-18十進(jìn)制int0b1001二進(jìn)制int017八進(jìn)制int0x2F,0X2F十六進(jìn)制int3L,3l十進(jìn)制long2.2變量的數(shù)據(jù)類型(2)浮點(diǎn)數(shù)類型變量可存儲(chǔ)包含小數(shù)部分得數(shù)值。分為兩種單精度浮點(diǎn)數(shù)(float,有效位6-7位,較少使用)雙精度浮點(diǎn)數(shù)(double,有效位15位)double型的精度是float型的兩倍通常使用double型類型占用空間取值范圍float32位(4個(gè)字節(jié))1.4E-45

~3.4E+38,-3.4E+38~-1.4E-45double64位(8個(gè)字節(jié))4.9E-324~1.7E+308,-1.7E+308~-4.9E-3242.2變量的數(shù)據(jù)類型浮點(diǎn)數(shù)字面常量doublex=10.0;//最常用floatpi=3.14f;浮點(diǎn)數(shù)是不精確的!不能用于金融計(jì)算 2.0–1.1=?,1.01+2.02=?如果你余額有99.9999元,是無法買100元的東西3.14ffloat3.0double3.14d,3.14Ddouble123e3,123E-3double2.2變量的數(shù)據(jù)類型(3)字符類型變量用于存儲(chǔ)單個(gè)字符,在Java中用char表示。每個(gè)char類型的字符變量占用2個(gè)字節(jié),Unicode(UTF-16)字符。范圍:'\u0000'至'\uffff'賦值時(shí),要用英文半角格式的單引號(hào)('')把字符括起來,如'a'。注意:

'a'與"a"不同,""與""也不同。2.2變量的數(shù)據(jù)類型以反斜杠(\)開頭的字符,反斜杠將其后面的字符轉(zhuǎn)變?yōu)榱硗獾暮x,稱為轉(zhuǎn)義字符。常見轉(zhuǎn)義字符轉(zhuǎn)義字符名稱轉(zhuǎn)義字符名稱\b退格\"雙引號(hào)\t制表符\'單引號(hào)\n換行\(zhòng)\反斜杠\r回車\uxxxx十六進(jìn)制指定的Unicode字符\f換頁(yè)\xxx八進(jìn)制指定的Unicode字符2.2變量的數(shù)據(jù)類型(4)布爾類型變量用于存儲(chǔ)布爾值,在Java中用boolean表示。布爾類型變量只有兩個(gè)值,即true和false2.3變量類型的轉(zhuǎn)換把一種數(shù)據(jù)類型的值賦給另一種數(shù)據(jù)類型的變量時(shí)需進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換2.3變量類型的轉(zhuǎn)換(1)自動(dòng)類型轉(zhuǎn)換兩種數(shù)據(jù)類型在轉(zhuǎn)換的過程中不需要顯式地進(jìn)行聲明。要實(shí)現(xiàn)自動(dòng)類型轉(zhuǎn)換,必須同時(shí)滿足兩個(gè)條件:兩種數(shù)據(jù)類型彼此兼容;目標(biāo)類型的取值范圍大于源類型的取值范圍。2.3變量類型的轉(zhuǎn)換(1)自動(dòng)類型轉(zhuǎn)換doubled=20;//正確inti=20.0;//錯(cuò)誤charc='a';

shorts=c;//錯(cuò)誤longx=1024+1L;//正確charc1=65535;//正確charc2=65536;//錯(cuò)誤int

z='A'+1;//正確

(2)強(qiáng)制類型轉(zhuǎn)換當(dāng)兩種類型彼此不兼容或者目標(biāo)類型取值范圍小于源類型時(shí),自動(dòng)類型轉(zhuǎn)換無法進(jìn)行,這時(shí)就需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換的格式:

可能造成數(shù)據(jù)大小的損失

2.3變量類型的轉(zhuǎn)換目標(biāo)類型變量=(目標(biāo)類型)值會(huì)造成數(shù)據(jù)損失!2.4變量的作用域當(dāng)變量需要在它的作用范圍內(nèi)才可以被使用。在程序中,變量一定會(huì)被定義在某一對(duì)大括號(hào)中,該大括號(hào)所包含的代碼區(qū)域便是這個(gè)變量的作用域。

作用域演示3Java中的運(yùn)算符(圖缺位運(yùn)算符)3.1Java中的運(yùn)算符算術(shù)運(yùn)算符算術(shù)運(yùn)算符就是用來處理四則運(yùn)算的符號(hào)。算數(shù)運(yùn)算符分兩大類二元運(yùn)算符+-*/%(求模,也叫取余)一元運(yùn)算符+-正負(fù)號(hào)++--3.1Java中的運(yùn)算符二元算數(shù)運(yùn)算符詳解+加法運(yùn)算符:對(duì)兩個(gè)運(yùn)算數(shù)進(jìn)行加法運(yùn)算3+5,1+'a'+還可用于字符串拼接!

任何運(yùn)算數(shù)+字符串都將轉(zhuǎn)化為字符串3+"5"->"35"3.1Java中的運(yùn)算符/除法運(yùn)算符整數(shù)之間相除為取整:3/2->1,1/10->0整數(shù)與浮點(diǎn)數(shù)相除:3/2.0->1.5常見用法:截取數(shù)字取1998的千位與百位:1998/100%求模運(yùn)算符常用于整數(shù)取余:18%5->3可用于浮點(diǎn)數(shù):5.5%2->1.5,2%0.4->0.3999常見用法讓任意數(shù)不超過指定的n:x%n截取數(shù)字:1998%1003.1Java中的運(yùn)算符一元算數(shù)運(yùn)算符詳解正(+)負(fù)(-)運(yùn)算符+5,-5應(yīng)用:將x的正負(fù)號(hào)改變intx=-5;x=-x; //53.1Java中的運(yùn)算符一元算數(shù)運(yùn)算符詳解++--自增、自減運(yùn)算符變量自身加1、減1x++與x=x+1等價(jià)作為前綴,則先加。結(jié)果為增加后的值。x=5;y=++x;//該語(yǔ)句執(zhí)行完x=5,y=6作為后綴,則后加。結(jié)果為增加前的值。x=5;y=x++;//該語(yǔ)句執(zhí)行完x=6,y=53.2Java中的運(yùn)算符——賦值運(yùn)算符賦值運(yùn)算符賦值運(yùn)算符的作用就是將常量、變量或表達(dá)式的值賦給某一個(gè)變量。

=:賦值。x=3;將3賦值給x

+=

:x+=2等價(jià)于x=x+2設(shè)x=5運(yùn)算符算式結(jié)果*=x

*=

2

x=10/=x/=2x=2%=x%=2x=13.3Java中的運(yùn)算符——比較運(yùn)算符比較運(yùn)算符比較運(yùn)算符用于對(duì)兩個(gè)數(shù)值或變量進(jìn)行比較,其結(jié)果是一個(gè)布爾值,即true或false。注意

比較運(yùn)算符“==”與賦值運(yùn)算符“=”不一樣運(yùn)算符說明例子值==判斷是否相等5==3;true==falsefalsefalse!=不相等5!=3true<小于5<3false>大于5>3true<=小于等于5<=5true>=大于等于3>=3false表達(dá)式1==2的值應(yīng)使用什么類型的變量存放?

[填空1]

作答正常使用填空題需3.0以上版本雨課堂可為此題添加文本、圖片、公式等解析,且需將內(nèi)容全部放在本區(qū)域內(nèi)。正常使用需3.0以上版本答案解析答案解析填空題1分3.4Java中的運(yùn)算符——邏輯運(yùn)算符邏輯運(yùn)算符邏輯運(yùn)算符用于對(duì)布爾型的數(shù)據(jù)進(jìn)行操作,其結(jié)果是一個(gè)布爾值。主要包含:與運(yùn)算&、短路與&&,或運(yùn)算|、短路或||異或運(yùn)算^,非運(yùn)算!注:上表也適用于&&、||與運(yùn)算值true&truetruetrue&falsefalsefalse&truefalsefalse&falsefalse或運(yùn)算值true|truetruetrue|falsetruefalse|truetruefalse|falsefalse3.4Java中的運(yùn)算符——邏輯運(yùn)算符邏輯運(yùn)算符異或運(yùn)算^:兩個(gè)布爾值不相同則為true非運(yùn)算!:對(duì)布爾值取其非異或運(yùn)算值true^truefalsefalse^falsefalsetrue^falsetruefalse^truetrue“非”運(yùn)算值!truefalse!falsetrue應(yīng)用:判斷某個(gè)變量是否為false設(shè)isExist變量用來判斷是否存在,為false代表不存在。則if(!isExist){dosth}代表,如果不存在(即,isExist為false)則dosth.3.4Java中的運(yùn)算符——邏輯運(yùn)算符邏輯“與”&&,邏輯“或”||,邏輯“非”!如果x值為101&&與||以“短路”方式求值設(shè)e1,e2為表達(dá)式e1&&e2,當(dāng)e1為false就不算e2e1||e2,當(dāng)e1為true就不算e2int

x=5,y=5,z=5;1.t=(x!=5)&y==(z=y/x);t=[填空1]z=[填空2]

2.t=(x!=5)&&y==(z=y/x);t=[填空3]z=[填空4]

注意:分別單獨(dú)計(jì)算作答正常使用填空題需3.0以上版本雨課堂可為此題添加文本、圖片、公式等解析,且需將內(nèi)容全部放在本區(qū)域內(nèi)。正常使用需3.0以上版本答案解析答案解析填空題4分3.4Java中的運(yùn)算符——邏輯運(yùn)算符邏輯運(yùn)算符使用“&”進(jìn)行運(yùn)算時(shí),不論左邊為true或者false,右邊的表達(dá)式都會(huì)進(jìn)行運(yùn)算。使用“&&”進(jìn)行運(yùn)算,當(dāng)左邊為false時(shí),右邊的表達(dá)式不會(huì)進(jìn)行運(yùn)算,因此“&&”被稱作短路與?!皘|”表示短路或,當(dāng)運(yùn)算符“||”的左邊為true時(shí),右邊的表達(dá)式不會(huì)進(jìn)行運(yùn)算例子若x=5,y=5,z=5;則t=(x!=5)&y==(z=y/x);//z=?則t=(x!=5)&&y==(z=y/x);//z=?3.5位運(yùn)算符位運(yùn)算符:包括逐位操作與移位操作逐位操作:&(按位與)|(按位或)^(按位異或)

~(按位取反)整數(shù)值二進(jìn)制910013119&319|310119^31010~9111111111111111111111111111101103.5位運(yùn)算符&運(yùn)算符常用來截取指定位數(shù)值截取任意整數(shù)低8位的值截取x的第5位值3.5位運(yùn)算符移位操作:左移(<<)、右移(>>,用符號(hào)位填充高位)、<<低位補(bǔ)0,相當(dāng)于乘2無符號(hào)右移(>>>,用0填空高位)3.6Java中的運(yùn)算符—運(yùn)算符的優(yōu)先級(jí)運(yùn)算符的優(yōu)先級(jí)在對(duì)一些比較復(fù)雜的表達(dá)式進(jìn)行運(yùn)算時(shí),要明確表達(dá)式中所有運(yùn)算符參與運(yùn)算的先后順序,把這種順序稱作運(yùn)算符的優(yōu)先級(jí)。k=j>i&&8==m問:&&第幾個(gè)算?a=a+1

問:先算=,還是先算+?x=x+++-y問:這個(gè)表達(dá)式要干嗎?最佳實(shí)踐遇事不決加圓括號(hào)()與適當(dāng)?shù)目崭駅=(j>i)&&(8==m)x=x+++(-y)3.6Java中的運(yùn)算符—運(yùn)算符的優(yōu)先級(jí)運(yùn)算符(從上到下依次降低)備注.[]()(方法調(diào)用)!~++--()(強(qiáng)制類型轉(zhuǎn)換)+-(正負(fù)符號(hào))new大部分是一元*/%二元(乘、除、取余)+-二元(加減)<<>>>>>移位<<=>>=instanceof關(guān)系==!=比較&按位與^按位異或|按位或&&短路與||短路或?:三元運(yùn)算符=+=-=*=/=%=&=!=^=<<=>>=>>>=賦值小練習(xí)c=++a+b;z=+x--yfalse||3>2a^b<<23.7表達(dá)式、語(yǔ)句與代碼塊一個(gè)Java程序是由表達(dá)式(expression)、語(yǔ)句(statement)與塊(block)組成的publicclassMain{publicstaticvoidmain(String[]args){

intx,y,z;x=1;y

=

2;

z=x*y;System.out.println("result="+z);

}}

3.7表達(dá)式、語(yǔ)句與代碼塊表達(dá)式由變量、運(yùn)算符、字面量、方法調(diào)用等組成對(duì)表達(dá)式計(jì)算將得到一個(gè)值intx=3;//得到int0.1*3*5+(5-2)*10//得到doubledoubley=Math.sqrt(6);//得到doublebooleanflag=5>3;//得到booleanStringx=""+123;//得到Stringif(x>y)……;//得到true或false"x>y"http://得到String3.7表達(dá)式、語(yǔ)句與語(yǔ)句塊語(yǔ)句:一個(gè)完整的執(zhí)行單元。

intx;//聲明語(yǔ)句

x=3*5+(2-1)*10;//表達(dá)式語(yǔ)句

x++;//表達(dá)式語(yǔ)句

System.out.println(x);//表達(dá)式語(yǔ)句說明:藍(lán)色字為表達(dá)式,黃色底為語(yǔ)句。聲明一個(gè)變量x。將表達(dá)式計(jì)算得到的值25賦給變量x。執(zhí)行x++。最后調(diào)用方法輸出x。上述語(yǔ)句均以分號(hào)(;)結(jié)尾其他語(yǔ)句:流程控制語(yǔ)句等3.7表達(dá)式、語(yǔ)句與代碼塊代碼塊:花括號(hào)({})之間的一組語(yǔ)句。以{開始,以}結(jié)束該例中代碼塊中包含著多條語(yǔ)句。注意:代碼塊中也可以不包含語(yǔ)句4選擇結(jié)構(gòu)4.1選擇結(jié)構(gòu)—if條件語(yǔ)句(1)if條件語(yǔ)句if條件語(yǔ)句分為三種語(yǔ)法格式,具體如下:if語(yǔ)句if…else語(yǔ)句if…elseif…else語(yǔ)句4.1選擇結(jié)構(gòu)(2)if條件語(yǔ)句if語(yǔ)句指如果滿足某種條件,就進(jìn)行某種處理語(yǔ)法格式:if(條件語(yǔ)句){

語(yǔ)句塊}4.1選擇結(jié)構(gòu)—if條件語(yǔ)句(2)if…else條件語(yǔ)句if…else語(yǔ)句是指如果滿足某種條件,就進(jìn)行某種處理,否則就進(jìn)行另一種處理。語(yǔ)法格式:if(判斷條件){

語(yǔ)句塊1}else{

語(yǔ)句塊2}4.1選擇結(jié)構(gòu)—if條件語(yǔ)句(2)if…else條件語(yǔ)句在Java中有一種特殊的運(yùn)算叫做三元運(yùn)算,它和if-else語(yǔ)句類似三元運(yùn)算通常用于對(duì)某個(gè)變量進(jìn)行賦值,當(dāng)判斷條件成立時(shí),運(yùn)算結(jié)果為表達(dá)式1的值,否則結(jié)果為表達(dá)式2的值。語(yǔ)法格式:

判斷條件?表達(dá)式1:表達(dá)式24.1選擇結(jié)構(gòu)—if條件語(yǔ)句(3)if…elseif…else條件語(yǔ)句if…elseif

…else語(yǔ)句用于對(duì)多個(gè)條件進(jìn)行判斷,進(jìn)行多種不同的處理。語(yǔ)法格式:if(判斷條件1){

語(yǔ)句塊1}elseif(判斷條件2){

語(yǔ)句塊2}...elseif(判斷條件n){

語(yǔ)句塊n}else{

語(yǔ)句塊n+1}例子:ifelse多重嵌套從鍵盤輸入兩個(gè)數(shù)x,y代表學(xué)生兩門科目的成績(jī)。如果有一門成績(jī)不及格(<60)則判定為不通過;否則,如果兩門科目成績(jī)平均分>=85,判定為優(yōu)秀,否則平均成績(jī)>=70判定為良好,否則判定為及格4.2選擇結(jié)構(gòu)—switch條件語(yǔ)句switch條件語(yǔ)句switch語(yǔ)句也是一種很常見的選擇語(yǔ)句。和if條件語(yǔ)句不同,它只能針對(duì)某個(gè)表達(dá)式的值做出判斷,從而決定執(zhí)行哪一段代碼執(zhí)行到break則從switch中跳出。不要隨意省略break!語(yǔ)法格式見右側(cè)4.2選擇結(jié)構(gòu)—switch條件語(yǔ)句switch條件語(yǔ)句例:使用數(shù)字1~7表示周一到周日,如果想根據(jù)某個(gè)輸入的數(shù)字輸出中文格式的星期值代碼SwitchDemo01SwitchDemo025循環(huán)結(jié)構(gòu)5.1while循環(huán)結(jié)構(gòu)while循環(huán)結(jié)構(gòu)

while循環(huán)語(yǔ)句會(huì)反復(fù)地進(jìn)行條件判斷,只要條件成立,{}內(nèi)的執(zhí)行語(yǔ)句就會(huì)執(zhí)行,直到條件不成立,while循環(huán)結(jié)束。語(yǔ)法格式:WhileDemo01while(循環(huán)條件){

語(yǔ)句塊

}5.2do...while循環(huán)結(jié)構(gòu)do...while循環(huán)結(jié)構(gòu)do...while循環(huán)語(yǔ)句先執(zhí)行{}內(nèi)語(yǔ)句,再進(jìn)行循環(huán)條件的判斷。語(yǔ)法格式:do{

語(yǔ)句塊1}while(循環(huán)條件);WhileDemo025.3for循環(huán)結(jié)構(gòu)for循環(huán)結(jié)構(gòu)一般用于循環(huán)次數(shù)已知的情況語(yǔ)法格式:1——初始化表達(dá)式2——循環(huán)條件3——操作表達(dá)式4——循環(huán)體for(1;2;3){4}for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){

執(zhí)行語(yǔ)句

......}ForDemo01一,執(zhí)行1;二,執(zhí)行2,如2為true執(zhí)行三,否則跳出循環(huán)三,執(zhí)行4四,執(zhí)行3,然后跳轉(zhuǎn)到二五,退出循環(huán)5.4嵌套循環(huán)嵌套循環(huán)是指在一個(gè)循環(huán)語(yǔ)句的循環(huán)體中再定義一個(gè)循環(huán)語(yǔ)句的語(yǔ)法結(jié)構(gòu)。while、do…while、for循環(huán)語(yǔ)句都可以進(jìn)行嵌套。最常見的在for循環(huán)中嵌套for循環(huán)for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){......

for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){

執(zhí)行語(yǔ)句

......}......

}ForDemo025.5跳轉(zhuǎn)語(yǔ)句用于實(shí)現(xiàn)循環(huán)執(zhí)行過程中程序流程的跳轉(zhuǎn)。Java中的跳轉(zhuǎn)語(yǔ)句有break、continue與returnbreak語(yǔ)句用在循環(huán)與switch條件語(yǔ)句中,作用:1.跳出break所在層次的循環(huán);2.終止某個(gè)case并跳出switch結(jié)構(gòu)。continue語(yǔ)句作用:終止本輪循環(huán),進(jìn)行下一次循環(huán)continue下方語(yǔ)句在本輪不再執(zhí)行return語(yǔ)句從當(dāng)前方法跳出,返回到方法調(diào)用處BreakDemo01ContinueDemo016方法6.1方法問題:假設(shè)有一個(gè)游戲程序,程序在運(yùn)行過程中,要不斷地發(fā)射炮彈。發(fā)射炮彈的動(dòng)作需要編寫100行的代碼。在每次實(shí)現(xiàn)發(fā)射炮彈的地方都需要重復(fù)編寫這100行代碼?!绦蛴纺[,可讀性差可以使用方法(method)解決將發(fā)射炮彈的代碼提取出來放在一個(gè){}中,并為這段代碼起個(gè)名字。(形成一個(gè)方法)在每次發(fā)射炮彈的地方通過這個(gè)名字來調(diào)用發(fā)射炮彈的代碼6.1方法在Java中,聲明一個(gè)方法的具體語(yǔ)法格式返回值函數(shù)內(nèi)無return,則使用void。即,無返回值參數(shù)需指定參數(shù)類型。也可以無參數(shù)。方法簽名(methodsignature)方法的名字與參數(shù)可唯一確定一個(gè)方法修飾符返回值方法名([參數(shù)類型參數(shù)名1,參數(shù)類型參數(shù)名2,...]){

執(zhí)行語(yǔ)句

......return返回值;//可選}MethodDemo01、026.1使用方法的注意事項(xiàng)方法的定義與方法的調(diào)用不同方法總是要在類中定義方法中出現(xiàn)return,但未必返回值6.1方法-值調(diào)用值調(diào)用(callbyvalue)Java中的方法對(duì)參數(shù)的調(diào)用總是采用值調(diào)用,即將參數(shù)的值復(fù)制(拷貝)一份在方法內(nèi)使用。因此,方法不能修改傳遞給他的參數(shù)變量的值。x(0x1000)1方法內(nèi)x(0x2000)1拷貝需求假設(shè)要在程序中實(shí)現(xiàn)一個(gè)對(duì)數(shù)字求和的方法,由于參與求和數(shù)字的個(gè)數(shù)和類型都不確定因此要針對(duì)不同的情況去設(shè)計(jì)不同的方法是否真的需要設(shè)計(jì)多個(gè)名字不同的功能相似的方法?6.2方法——方法的重載(overload)可以使用方法的重載解決上述需求什么是重載?一個(gè)類中,可以定義多個(gè)同名方法,但參數(shù)的類型或個(gè)數(shù)不同。即方法簽名不同。6.2方法——方法的重載MethodDemo04、056.2方法——可變輸入?yún)?shù)可變輸入?yún)?shù)調(diào)用方法時(shí),入?yún)⒌臄?shù)量可變定義時(shí)使用3個(gè).。實(shí)際上是將數(shù)量變化的參數(shù)放入一個(gè)數(shù)組。因此參數(shù)類型需一直。7數(shù)組7.1數(shù)組——數(shù)組的定義數(shù)組的定義一組固定長(zhǎng)度數(shù)據(jù)的集合;可存放任意類型元素一個(gè)數(shù)組中存放的元素類型必須一致數(shù)組定義的格式,如下:為了更好地理解數(shù)組的定義方式,可以把上述代碼定義為兩行來寫:可使用下標(biāo)訪問數(shù)組元素,如a[index]0≤index取值≤

數(shù)組長(zhǎng)度-17.1數(shù)組——數(shù)組的長(zhǎng)度數(shù)組的定義以下內(nèi)存圖演示數(shù)組在創(chuàng)建過程中的內(nèi)存分配情況數(shù)組長(zhǎng)度:“數(shù)組名.length”0≤

數(shù)組下標(biāo)取值≤

數(shù)組名.length-1ArrayDemo01棧內(nèi)存a->0x1000堆內(nèi)存0x100000102030407.1數(shù)組——數(shù)組的初始化數(shù)組的初始化:當(dāng)數(shù)組被成功創(chuàng)建后,數(shù)組中元素會(huì)被自動(dòng)賦予一個(gè)默認(rèn)值。靜態(tài)初始化:在定義數(shù)組的同時(shí)就為數(shù)組的每個(gè)元素賦值。元素類型默認(rèn)初始值byte,short,int,long0float,double0.0char空字符,'\u0000'booleanfalse引用數(shù)據(jù)類型null,變量不存儲(chǔ)任何引用ArrayDemo02、037.1數(shù)組的遍歷ArrayOperate017.1數(shù)組作為方法參數(shù)方法不能修改參數(shù)的值,但可以修改參數(shù)所指向?qū)ο螅ㄟ@里是數(shù)組)內(nèi)部的值分析:change1中的arr本來指向{0,1,5},在方法內(nèi)arr指向的是另外一個(gè)5個(gè)大小的數(shù)組空間。不會(huì)影響原digits數(shù)組digits015arrArrayDemo047.2數(shù)組的常見操作數(shù)組的最值A(chǔ)rrayOperate027.2數(shù)組的常見操作數(shù)組的排序也可直接使用Arrays.sort方法進(jìn)行排序ArrayOperate037.3多維數(shù)組多維數(shù)組的定義多維數(shù)組可以簡(jiǎn)單地理解為在數(shù)組中嵌套數(shù)組在程序中比較常見的就是二維數(shù)組二維數(shù)組的定義:方式一:上面的代碼定義了一個(gè)3行4列的二維數(shù)組,它的結(jié)構(gòu)如下圖所示。xx[0]xx[1]xx[2]xx[0][0]xx[0][1]xx[0][2]xx[0][3]xx[1][0]xx[1][1]xx[1][2]xx[1][3]xx[2][0]xx[2][1]xx[2][2]xx[2][3]intxx[][]7.3多維數(shù)組常見操作int[][]xx=newint[3][4]訪問二維數(shù)組xx第0行第2個(gè)元素:xx[0][2]xx.length為3,xx[0].length為4遍歷:7.3多維數(shù)組方式二:與第一種方式類似,只是數(shù)組中每個(gè)元素的長(zhǎng)度不確定,采用第二種方式常見的數(shù)組結(jié)構(gòu)如下圖所示。xx[0]xx[1]xx[2]xx[0][0]xx[1][0]xx[1][1]xx[2][0]xx[2][1]xx[2][2]intxx[][]7.3多維數(shù)組方式三:該二維數(shù)組有三個(gè)元素,這三個(gè)元素都是數(shù)組,分別是{1,2}、{3,4,5,6}、{7,8,9}。數(shù)組結(jié)構(gòu)如下圖所示。xx[0]xx[1]xx[2]123456789intxx[][]7.3多維數(shù)組多維數(shù)組的訪問多維數(shù)組對(duì)元素的訪問也是通過角標(biāo)的方式例如,訪問二維數(shù)組中第一個(gè)元素?cái)?shù)組的第二個(gè)元素不規(guī)則數(shù)組應(yīng)用場(chǎng)景:假設(shè)有3個(gè)銷售小組,每個(gè)小組有若干銷售人員,且各小組人員數(shù)量不同?,F(xiàn)在需記錄每個(gè)銷售人員銷售額,請(qǐng)問如何使用二維數(shù)組存放這些銷售人員的銷售額數(shù)據(jù)并進(jìn)行統(tǒng)計(jì)。MultiArrayDemo01應(yīng)用于數(shù)組的工具類java.util包下的Arrays類提供很多操作數(shù)組的方法。需import。排序數(shù)組,sort(a)返回以字符表達(dá)的數(shù)組內(nèi)容,toString(a)填充數(shù)組,fill(a,val)拷貝數(shù)組,copyOfRange(src,begin,end)比較數(shù)組,equals(a1,a2)java.lang包下的System類也提供了快速?gòu)?fù)制數(shù)組的方法。無需importSystem.arraycopy(src,0,dest,destPos,length)ArraysTest枚舉類型(enum)如果取值是一組常量,可使用enum類型枚舉類型實(shí)際上是枚舉類常結(jié)合switch使用Main(枚舉類型-簡(jiǎn)易版)枚舉類型(enum)常用方法方法說明枚舉類名.values(),如Size.values()以數(shù)組的形式返回枚舉類中所有值.返回[SMALL,LARGE]枚舉類名.valueOf(x),如Size.valueOf("LARGE")返回字符串x對(duì)應(yīng)的枚舉常量值。返回Size.LARGE枚舉對(duì)象.name()如Size.LARGE.name()以字符串形式返回枚舉常量對(duì)應(yīng)的name。也可使用toString方法代替。返回"LARGE"枚舉對(duì)象.ordinal()如Size.LARGE.ordial()返回枚舉常量對(duì)應(yīng)的序號(hào),從0開始。返回1枚舉類型(enum)常用方法枚舉類名.values()以數(shù)組的形式返回枚舉類中所有值枚舉類名.valueOf(x)返回字符串x對(duì)應(yīng)的枚舉常量值enum小練習(xí)設(shè)計(jì)一個(gè)枚舉類,包含內(nèi)容:A,B,C,D,E。然后聲明該枚舉類的變量grade,賦一個(gè)枚舉值。編寫switch語(yǔ)句,根據(jù)不同的grade值,輸出不同的內(nèi)容A90分以上B80~89C70~79D60~69E未及格什么是引用類型?基本數(shù)據(jù)類型int、double、boolean等類型變量存放值本身引用類型引用類型變量存放的是指向?qū)ο蟮囊冒ǎ侯?、接口、?shù)組、枚舉、標(biāo)注==用于引用類型比較兩個(gè)變量存放的引用是否相同

如a==b

//比較a、b存放的引用是否指向同一個(gè)對(duì)象使用引用類型聲明變量與賦值Stringstr=newString("abc");使用new關(guān)鍵字創(chuàng)建對(duì)象讓str變量存放指向"abc"對(duì)象的引用str注意:引用類型變量不存放對(duì)象本身,只存引用。引用類似于c中的指針,通過引用可以找到對(duì)象。雖然很像地址,但不是地址。abcStack內(nèi)存Heap內(nèi)存null值Stringstr=null;代表:str變量不存放指向任何對(duì)象的引用注意:null代表沒有值,不代表0null到底是什么?Java虛擬機(jī)規(guī)范并沒有強(qiáng)制規(guī)定null應(yīng)該是什么值null與NullPointerExceptionStringstr=null;str.toString();會(huì)拋出空指針異常,因?yàn)閟tr變量不指向任何對(duì)象常用對(duì)象-String字符串應(yīng)用非常廣泛網(wǎng)頁(yè)、文檔、搜索引擎等包含的字符信息String類(代表字符串)代表字符的序列包含大量的操作字符串的方法,比在c中處理字符串方便的多內(nèi)部使用byte數(shù)組存儲(chǔ)創(chuàng)建字符串說明使用new創(chuàng)建:這里用了兩種不同的構(gòu)造方法使用字面值創(chuàng)建:雙引號(hào)括起來空字符串:代表沒有存放字符,不同于空格字符串字符串的拼接使用運(yùn)算符+

可進(jìn)行字符串的拼接字符串與字符串Stringx="ab"+"cd";//abcd字符串與其他基本數(shù)據(jù)類型的數(shù)據(jù)拼接Stringx1="12"+12;//1212Stringx2="ab"+false;//abfalse字符串的拼接字符串與引用類型數(shù)據(jù)(對(duì)象)拼接,調(diào)用對(duì)象的toString()方法

Integernum=newInteger(10);Stringx3="ab"+num;//ab10原理

調(diào)用了num所指向的Integer對(duì)象的toString()方法,該方法返回一個(gè)String對(duì)象。然后,將該對(duì)象與"ab"這個(gè)字符串對(duì)象進(jìn)行拼接字符串的比較使用==對(duì)兩個(gè)引用類型變量進(jìn)行比較,實(shí)際上是對(duì)兩個(gè)變量的值(引用)進(jìn)行比較y1,y2指向兩個(gè)不同對(duì)象,引用自然不一樣y1

y2123123字符串的比較-equals方法publicbooleanequals(x)方法如果字符串x對(duì)象不為空,且與當(dāng)前對(duì)象的內(nèi)容(字符序列)相同,返回true。進(jìn)階:equals方法實(shí)際上存在每個(gè)對(duì)象中。結(jié)論:凡是對(duì)字符串的內(nèi)容進(jìn)行比較都用equalsString常用APIequalsIgnoreCase//不區(qū)分大小寫進(jìn)行比較format

//格式化字符串,也可格式化日期String.format("%.+2fisdouble,%disint,%sisaString%n",2.234,3,"str")

返回"+2.23isdouble,3isint,strisaString",%n代表?yè)Q行compareTo//比較字符串大小endsWith(x)//是否以x結(jié)尾charAt(i)//獲得第i個(gè)位置的字符

substring//截取字符串index//在字符串中進(jìn)行查找split//分割字符串更多String常用方法請(qǐng)查詢相關(guān)jdk文檔字符串常量池當(dāng)使用雙引號(hào)創(chuàng)建字符串時(shí)首先查看字符串常量池中有無該對(duì)象如沒有,則創(chuàng)建該對(duì)象否則,直接引用該對(duì)象所以,z2、z3指向同一個(gè)對(duì)象優(yōu)點(diǎn):減少內(nèi)存占用,提升性能!123z2z3String的不可變性String是不可變(immutable)類即,字符串對(duì)象一旦創(chuàng)建,無法修改其中內(nèi)容Stringx="abc";x=x+"123";說明:x本來指向的"abc"對(duì)象并未改變,而是新生成了一個(gè)對(duì)象"abc123",并讓x指向該對(duì)象進(jìn)階:接下來"abc"對(duì)象怎么處理?abcabc123xString的不可變性嘗試執(zhí)行上述代碼,發(fā)現(xiàn)久久未能完成原因:String是不可變的,整個(gè)過程中使用+進(jìn)行拼接操作,會(huì)生成大量無用的String對(duì)象進(jìn)階:當(dāng)執(zhí)行完最后一句,內(nèi)存中有幾個(gè)字符串對(duì)象?字符串常量池中有幾個(gè)對(duì)象?String的不可變性有什么用?更安全比如有兩個(gè)Person他們的name(String類型)本來都叫“張三”。如果Person1需要改名,且String是可變的,那會(huì)發(fā)生是什么?張三Person1namePerson2nameStringBuilder類大量拼接字符串使用StringBuilder類。示例代碼如下:StringBuilderstringBuilder=newStringBuilder();for(inti=0;i<1000_0000;i++){ stringBuilder.append(i);}System.out.println("testStringBuilderdone");其他凡是涉及到對(duì)字符串的頻繁修改,一律使用StringBuilder!慎用StringBuffer類。StringBuilder類length方法與capacity方法StringBuilder的length()方法同String,均為返回實(shí)際存儲(chǔ)的字符的個(gè)數(shù)但StringBuilder還有一個(gè)capacity屬性capacity(容量)內(nèi)部使用數(shù)組存放,該數(shù)組的容量一般大于字符個(gè)數(shù)可以使用capacity()方法查看內(nèi)部容量進(jìn)階:查看源代碼,StringBuilder的capacity怎么確定的?Java程序設(shè)計(jì)引用類型之包裝類、枚舉類包裝類(WrapperClass)Java是面向?qū)ο笳Z(yǔ)言,所有基本數(shù)據(jù)類型都有相應(yīng)的包裝類基本數(shù)據(jù)類型對(duì)應(yīng)的包裝類byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean數(shù)值類包裝類所有數(shù)值類型的包裝類都是(is-a)Number用途當(dāng)方法需要引用類型作為方法參數(shù)包含每種類型的MIN_VALUE與MAX_VALUE類型轉(zhuǎn)換:與基本數(shù)據(jù)類型轉(zhuǎn)換、與字符串行進(jìn)行轉(zhuǎn)換、在多個(gè)進(jìn)制之間進(jìn)行轉(zhuǎn)換數(shù)值包裝類的使用1-轉(zhuǎn)換生成Integer對(duì)象不要使用newInteger(3)方式創(chuàng)建Integer對(duì)象,要用valueOf方法IntegervalueOf(inti)valueOf(Strings)按照10進(jìn)制創(chuàng)建IntegervalueOf(Strings,intradix)按照指定進(jìn)制(radix)創(chuàng)建IntegerIntegerx=Integer.valueOf(3);Integer轉(zhuǎn)化成基本數(shù)據(jù)類型Integerx=Integer.valueOf("10");intz1=Value();//Integer->intlongz2=x.longValue();//Integer->long數(shù)值包裝類的使用1-轉(zhuǎn)換靜態(tài)工具方法(整型與字符串互轉(zhuǎn))://使用10進(jìn)制的方式將字符串"10"轉(zhuǎn)換為int值10intx=Integer.parseInt("10");//使用16進(jìn)制的方式轉(zhuǎn)換,結(jié)果為15inty=Integer.parseInt("F",16);//將int值10轉(zhuǎn)換成字符串"10"Stringz=Integer.toString(10);//將255轉(zhuǎn)換為16進(jìn)制字符串Stringa=Integer.toHexString(255);數(shù)值包裝類的使用2-常用方法與屬性Integer.MAX_VALUE、Integer.MIN_VALUEint類型的最小值、最大值,分別為:0x80000000、0x7fffffffDoublePOSITIVE_INFINITY正無窮大,NEGATIVE_INFINITY負(fù)無窮大compare(doubled1,doubled2)//比較兩個(gè)double類型數(shù)值大小其他包裝類用法與Integer類似,詳見JDK文檔數(shù)值包裝類的使用3-裝箱、拆箱Integer(int的包裝類)數(shù)值包裝類可以與基本類型數(shù)據(jù)直接進(jìn)行運(yùn)算自動(dòng)裝箱(Autoboxing):20被自動(dòng)轉(zhuǎn)化為Integer對(duì)象自動(dòng)拆箱(Unboxing):變量o指向的Integer對(duì)象(30)被自動(dòng)轉(zhuǎn)換成基本類型數(shù)據(jù)p數(shù)值包裝類是不可變類不可變Integer對(duì)象一旦創(chuàng)建,就無法改變其值如下代碼中,x原來指向的Integer(1)并未被改變Integerx=1,y=x;x++;System.out.println(x+""+y);//輸出什么?與

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論