Lecture2-Fundamental Programming Structures in Java(1)_第1頁(yè)
Lecture2-Fundamental Programming Structures in Java(1)_第2頁(yè)
Lecture2-Fundamental Programming Structures in Java(1)_第3頁(yè)
Lecture2-Fundamental Programming Structures in Java(1)_第4頁(yè)
Lecture2-Fundamental Programming Structures in Java(1)_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

1、Fundamental Programming Structures in Java (Chapter 3)Hy Mao2021年年11月月16日日華東師范大學(xué)軟件學(xué)院華東師范大學(xué)軟件學(xué)院2021-11-162OutlinepIdentifier(標(biāo)志符標(biāo)志符) & Keywords(關(guān)鍵字)(關(guān)鍵字)pData TypepVariables pconstantspOperatorspType Casting2021-11-163Java 的標(biāo)識(shí)符的標(biāo)識(shí)符(1 of 2)p標(biāo)識(shí)符的作用標(biāo)識(shí)符的作用: 表示程序中的類(lèi)名、域名、方法名、符號(hào)常量、局部變量,表示程序中的類(lèi)名、域名、方法名、符

2、號(hào)常量、局部變量,標(biāo)號(hào)標(biāo)號(hào).pJava標(biāo)識(shí)符標(biāo)識(shí)符(identifiers)規(guī)定規(guī)定n以字母、下劃線、美圓符開(kāi)始的一個(gè)字符序列以字母、下劃線、美圓符開(kāi)始的一個(gè)字符序列n除開(kāi)始的第一個(gè)字符外,后面可跟字母、下劃線、美圓符和數(shù)字除開(kāi)始的第一個(gè)字符外,后面可跟字母、下劃線、美圓符和數(shù)字n標(biāo)識(shí)符區(qū)分大小寫(xiě)標(biāo)識(shí)符區(qū)分大小寫(xiě)n沒(méi)有長(zhǎng)度限制沒(méi)有長(zhǎng)度限制n不能與保留字不能與保留字(reserved word)或關(guān)鍵字或關(guān)鍵字(keyword)相同相同p例如例如: n$students, _start, _name, app_numbern1name,2_start, import, main, thenn_,

3、 _, _1 等是正確的嗎?上機(jī)驗(yàn)證你的答案。等是正確的嗎?上機(jī)驗(yàn)證你的答案。p 參考參考n 1. 關(guān)于每一個(gè)關(guān)于每一個(gè)key words詳細(xì)用法的說(shuō)明詳細(xì)用法的說(shuō)明 Java Keyword Reference.pdf n 2. Textbook appendix A Java Keywords2021-11-164Java 的標(biāo)識(shí)符的標(biāo)識(shí)符(2 of 2)pJava 編程標(biāo)識(shí)符的命名習(xí)慣編程標(biāo)識(shí)符的命名習(xí)慣n程序可讀性程序可讀性p類(lèi)、接口:類(lèi)、接口:通常使用名詞,且每個(gè)單詞首字母要大寫(xiě)通常使用名詞,且每個(gè)單詞首字母要大寫(xiě) Eg HelloWorldApp, PersonApp, etcp方

4、法:方法:可以是動(dòng)詞,首字母小寫(xiě),其后用大字母分隔可以是動(dòng)詞,首字母小寫(xiě),其后用大字母分隔每個(gè)單每個(gè)單 詞詞 Eg: getValue(); setPersonName(),getRequestId() etcp常量:常量:全部大寫(xiě),單詞之間用下劃線分隔全部大寫(xiě),單詞之間用下劃線分隔 Eg: TOTAL_STUDENT, FILE_NAME, etcp變量:變量:同方法,應(yīng)該避免使用同方法,應(yīng)該避免使用$符號(hào)符號(hào) Eg: userId, userName, etc2021-11-165Data TypespJava 中的數(shù)據(jù)類(lèi)型分為兩大類(lèi):中的數(shù)據(jù)類(lèi)型分為兩大類(lèi):n第一類(lèi)是簡(jiǎn)單數(shù)據(jù)類(lèi)型第一類(lèi)是

5、簡(jiǎn)單數(shù)據(jù)類(lèi)型p整數(shù)類(lèi)型:整數(shù)類(lèi)型:byte(1), short(2), int(4), long(8)p實(shí)數(shù)類(lèi)型:實(shí)數(shù)類(lèi)型:float(4), double(8)p字符類(lèi)型:字符類(lèi)型:char(2)p布爾類(lèi)型:布爾類(lèi)型:boolean(true,false)n第二類(lèi)是復(fù)雜數(shù)據(jù)類(lèi)型第二類(lèi)是復(fù)雜數(shù)據(jù)類(lèi)型pJava類(lèi)庫(kù)中的類(lèi)類(lèi)庫(kù)中的類(lèi)p用戶自定義的類(lèi)用戶自定義的類(lèi)p接口接口p數(shù)組數(shù)組2021-11-166Data TypesTypesPrimitivetypesreferencesintegerfloating-pointcharacterbyteshortintegerlongfloatdoubl

6、ebooleanPredefinedclassUser definedclassArrayInterface2021-11-167Java 基本的數(shù)據(jù)類(lèi)型基本的數(shù)據(jù)類(lèi)型類(lèi)型類(lèi)型存儲(chǔ)空間大小存儲(chǔ)空間大小存儲(chǔ)方式存儲(chǔ)方式初始值初始值Java整數(shù)整數(shù)類(lèi)型類(lèi)型byte8 位位(bit)2 的補(bǔ)碼的補(bǔ)碼(byte) 0short16位位2 的補(bǔ)碼的補(bǔ)碼(short) 0int32 位位2 的補(bǔ)碼的補(bǔ)碼0long64位位2 的補(bǔ)碼的補(bǔ)碼0LJava浮點(diǎn)浮點(diǎn)類(lèi)型類(lèi)型float32位位IEEE 754浮點(diǎn)數(shù)標(biāo)準(zhǔn)浮點(diǎn)數(shù)標(biāo)準(zhǔn) 0.0fdouble 64位位IEEE 754浮點(diǎn)數(shù)標(biāo)準(zhǔn)浮點(diǎn)數(shù)標(biāo)準(zhǔn) 0.0dNote:J

7、ava具有平臺(tái)無(wú)關(guān)性具有平臺(tái)無(wú)關(guān)性,所以各種數(shù)據(jù)類(lèi)型在不同的平臺(tái)上都具有所以各種數(shù)據(jù)類(lèi)型在不同的平臺(tái)上都具有固定的取值范圍固定的取值范圍.2021-11-168Java 基本的數(shù)據(jù)類(lèi)型基本的數(shù)據(jù)類(lèi)型-整型整型p關(guān)鍵字關(guān)鍵字byte, short, int和和long表示整數(shù)類(lèi)型,四種表示整數(shù)類(lèi)型,四種整數(shù)類(lèi)型的區(qū)別在于存儲(chǔ)空間長(zhǎng)度、能表示的范整數(shù)類(lèi)型的區(qū)別在于存儲(chǔ)空間長(zhǎng)度、能表示的范圍是不一樣的,如下表所示。圍是不一樣的,如下表所示。2021-11-169Java 基本的數(shù)據(jù)類(lèi)型基本的數(shù)據(jù)類(lèi)型-整型整型p整數(shù)類(lèi)型的變量可以表示十進(jìn)制、八進(jìn)制和十六進(jìn)制的數(shù)整數(shù)類(lèi)型的變量可以表示十進(jìn)制、八進(jìn)制和十

8、六進(jìn)制的數(shù)字。字。n首位為首位為“0”表示八進(jìn)制的數(shù)值;表示八進(jìn)制的數(shù)值;n首位為首位為“0 x”表示表示16進(jìn)制的數(shù)值。進(jìn)制的數(shù)值。n例如:例如: 5 表示十進(jìn)制值表示十進(jìn)制值5 075 表示八進(jìn)制數(shù)值表示八進(jìn)制數(shù)值75(十進(jìn)制數(shù)(十進(jìn)制數(shù)61) 0 x9ABC 表示十六進(jìn)制的數(shù)值表示十六進(jìn)制的數(shù)值9ABC(十進(jìn)制數(shù)(十進(jìn)制數(shù)39612)p整數(shù)缺省為整數(shù)缺省為int類(lèi)型。類(lèi)型。如在其后有一個(gè)字母如在其后有一個(gè)字母“L”/”l”表示一表示一個(gè)個(gè)long類(lèi)型。(由于小寫(xiě)類(lèi)型。(由于小寫(xiě)“l(fā)”與數(shù)字與數(shù)字“1”容易混淆,因而,容易混淆,因而,建議大家采用大寫(xiě))建議大家采用大寫(xiě))n例如:例如: 5L

9、 表示十進(jìn)制值表示十進(jìn)制值5,是一個(gè),是一個(gè)long類(lèi)型的值類(lèi)型的值 5 表示十進(jìn)制值表示十進(jìn)制值5,是一個(gè),是一個(gè)int類(lèi)型的值類(lèi)型的值2021-11-1610Java 基本的數(shù)據(jù)類(lèi)型基本的數(shù)據(jù)類(lèi)型-浮點(diǎn)型浮點(diǎn)型p在在Java編程語(yǔ)言中有兩種浮點(diǎn)類(lèi)型:編程語(yǔ)言中有兩種浮點(diǎn)類(lèi)型:float和和double 。nfloat為為32位位(單精度),(單精度),double為為64位位(雙精度)。(雙精度)。double類(lèi)型的浮點(diǎn)數(shù)具有更高的精度。類(lèi)型的浮點(diǎn)數(shù)具有更高的精度。n類(lèi)型說(shuō)明類(lèi)型說(shuō)明:p在數(shù)字后帶有字母在數(shù)字后帶有字母F或或f(float)表示該數(shù)字為)表示該數(shù)字為float類(lèi)型。類(lèi)型。p

10、在數(shù)字后帶有字母在數(shù)字后帶有字母D或或d(double)表示該數(shù)字為)表示該數(shù)字為double類(lèi)型。類(lèi)型。p如果不明確指明浮點(diǎn)數(shù)的類(lèi)型,浮點(diǎn)數(shù)缺省為如果不明確指明浮點(diǎn)數(shù)的類(lèi)型,浮點(diǎn)數(shù)缺省為double。 3.14159 (double型浮點(diǎn)數(shù))型浮點(diǎn)數(shù)) 2.08E25 (double型浮點(diǎn)數(shù))型浮點(diǎn)數(shù)) 6.56f (float型浮點(diǎn)數(shù))型浮點(diǎn)數(shù)) -6.5F (float型浮點(diǎn)數(shù))型浮點(diǎn)數(shù))2021-11-1611Java 基本的數(shù)據(jù)類(lèi)型基本的數(shù)據(jù)類(lèi)型-字符型字符型p字符類(lèi)型字符類(lèi)型(char)nJava中中char用用Unicode字符集字符集 16bits表示不是表示不是ASCII碼碼

11、()n不能直接作為整數(shù)進(jìn)行運(yùn)算,需類(lèi)型轉(zhuǎn)換不能直接作為整數(shù)進(jìn)行運(yùn)算,需類(lèi)型轉(zhuǎn)換n字符常量,用單引號(hào)對(duì)括住的字符,如字符常量,用單引號(hào)對(duì)括住的字符,如an定義格式為定義格式為: char charName =b; p特殊字符列表:特殊字符列表:換碼序列換碼序列名稱(chēng)名稱(chēng)Unicode值值ttabu0009nNewline characteru000a單引號(hào)單引號(hào)u0027”雙引號(hào)雙引號(hào)u0022反斜杠反斜杠u005c2021-11-1612Java 基本的數(shù)據(jù)類(lèi)型基本的數(shù)據(jù)類(lèi)型-布爾型布爾型p布爾類(lèi)型布爾類(lèi)型(boolean)n取值范圍:取值范圍:true

12、, falsen布爾變量的默認(rèn)值為布爾變量的默認(rèn)值為falsen布爾值與數(shù)值之間不能進(jìn)行運(yùn)算布爾值與數(shù)值之間不能進(jìn)行運(yùn)算ntrue 和和 false均是布爾類(lèi)型的均是布爾類(lèi)型的常量常量,注意大小寫(xiě),注意大小寫(xiě)n定義格式的示范:定義格式的示范:boolean isChanged = true; boolean isBlack = true;Note:在:在java中基本數(shù)據(jù)類(lèi)型的定義和使用與中基本數(shù)據(jù)類(lèi)型的定義和使用與C+中是類(lèi)似的。中是類(lèi)似的。2021-11-1613Variables( 變量變量)pJava中變量和常量的含義與中變量和常量的含義與C+是一樣的。是一樣的。p定義一個(gè)變量語(yǔ)法為:

13、定義一個(gè)變量語(yǔ)法為:nSyntax: 類(lèi)型類(lèi)型 變量名;變量名;pE.g. double salary;pint vacationDays;plong earthPopulation;pboolean done;p變量需要重點(diǎn)關(guān)注:變量需要重點(diǎn)關(guān)注:n變量類(lèi)型變量類(lèi)型n變量值變量值n變量作用范圍變量作用范圍2021-11-1614Variables-Examplebyte b = 12;short s = 31000;long l=53000000L;double d = 2.51d;float f=-2.5f;Byte variableShort variableLong variableD

14、ouble variableFloat variableboolean result=true;Boolean variablechar ch =a;Char variable2021-11-1615Variables-ExamplepYou can assign a variable a value by referring another variable.pjava可以和可以和C+一樣同時(shí)定義多個(gè)變量。一樣同時(shí)定義多個(gè)變量。nE.g. nfloat f=2.5f, g=5.8f; /定義定義f,g為為float型變量,并賦初值型變量,并賦初值int num = 15;int n =num

15、;int n =15;equivalents2021-11-1616VariablespJava中的局部變量中的局部變量n在方法內(nèi)部或者程序塊內(nèi)部定義的變量為局部變量在方法內(nèi)部或者程序塊內(nèi)部定義的變量為局部變量nJava中局部變量的作用范圍與中局部變量的作用范圍與C+中相同,即為變量中相同,即為變量所所在的代碼塊。在的代碼塊。p局部變量在定義之后是沒(méi)有初始值的,必須要在程序中給該變局部變量在定義之后是沒(méi)有初始值的,必須要在程序中給該變量賦值,然后才能使用,否則編譯時(shí)會(huì)報(bào)錯(cuò)。量賦值,然后才能使用,否則編譯時(shí)會(huì)報(bào)錯(cuò)。pJava與與C+的不同點(diǎn)在于:的不同點(diǎn)在于:在程序塊中定義的變量,不能夠與在程序

16、塊中定義的變量,不能夠與已有的已有的局部變量重名局部變量重名。2021-11-1617Variables-Examplep判斷以下代碼是否正確:判斷以下代碼是否正確:public static void main(String args) int i; i=i+1; 原因原因:變量變量i在使用時(shí)沒(méi)有初始化,可以改為:在使用時(shí)沒(méi)有初始化,可以改為:public static void main(String args) int i=0; i=i+1; 2021-11-1618Variables-Examplepublic static void main(String args) int a,b

17、,c; a=b=c=2; if(a=2) int c =5;錯(cuò)誤,原因在于:錯(cuò)誤,原因在于:if語(yǔ)句中定義的變量語(yǔ)句中定義的變量c,在,在main方法中已方法中已經(jīng)定義,改正方法,更改經(jīng)定義,改正方法,更改if語(yǔ)句或者語(yǔ)句或者main方法中的變量名方法中的變量名c,使他們不重復(fù)。使他們不重復(fù)。2021-11-1619Variables-Examplepublic static void main(String args) char ch1 = 300; /1 char ch2 = 410000;/2 boolean result = 32;/3 float fnum =2.5;/4 2021-

18、11-1620VariablespJava中的類(lèi)變量中的類(lèi)變量n在類(lèi)中直接定義的變量稱(chēng)為類(lèi)變量或者屬性。在類(lèi)中直接定義的變量稱(chēng)為類(lèi)變量或者屬性。n類(lèi)變量在定義之后,會(huì)有默認(rèn)值。如果沒(méi)有初始化也類(lèi)變量在定義之后,會(huì)有默認(rèn)值。如果沒(méi)有初始化也可以使用。但是從程序設(shè)計(jì)的角度來(lái)說(shuō),還是需要初可以使用。但是從程序設(shè)計(jì)的角度來(lái)說(shuō),還是需要初始化之后使用。始化之后使用。n關(guān)于類(lèi)變量我們現(xiàn)在只需要了解,在后續(xù)的章節(jié)中會(huì)關(guān)于類(lèi)變量我們現(xiàn)在只需要了解,在后續(xù)的章節(jié)中會(huì)詳細(xì)討論詳細(xì)討論2021-11-1621Constants(常量常量)pIn java,you use the keyword final to d

19、enote a constant. e.g.nfinal double CM_PER_INCH=2.54;nfinal int TOTAL_NUM=100;p和和C+一樣常量必須在定義的時(shí)候賦值;一樣常量必須在定義的時(shí)候賦值;p在在java中常量一般用大寫(xiě)字母和下劃線來(lái)表示。中常量一般用大寫(xiě)字母和下劃線來(lái)表示。p在實(shí)際的編程中我們常用類(lèi)常量,在后面的章節(jié)在實(shí)際的編程中我們常用類(lèi)常量,在后面的章節(jié)中將說(shuō)明該問(wèn)題。中將說(shuō)明該問(wèn)題。2021-11-1622Operators (運(yùn)算符運(yùn)算符) 見(jiàn)表見(jiàn)表3-4OperatorsAssociativity . () . () (method call)

20、Left to right! + - +! + - + (unary) (unary) () () (cast) newnewRight to left* * / %/ %Left to right+ -+ -Left to right Left to right = instanceof = instanceofLeft to right= != !=Left to right& &Left to right Left to right| |Left to right&Left to right| |Left to right?:?:Right to left= +=

21、 -= = += -= * *= /= %= &= |= = = = /= %= &= |= = = =Right to left優(yōu)先級(jí)高優(yōu)先級(jí)高優(yōu)先級(jí)低優(yōu)先級(jí)低2021-11-1623Operators-examplep(1) Assignment OperatornI=K=10 -I=(K=10)n也等價(jià)于也等價(jià)于k=10; I=K;p(2) 單目運(yùn)算符單目運(yùn)算符: +(正)(正), -(負(fù))(負(fù))nint value = - - 10;n等價(jià)于等價(jià)于 int value = -(-10);n等價(jià)于等價(jià)于 int value = 10;nBe aware of the di

22、fference between “- -” and “-”.p-10(為負(fù)號(hào));(為負(fù)號(hào));-i(i為變量表示為變量表示i=i-1)p(3) + - * / %(取余取余)n10%9=1;n9%9=0;2021-11-1624Operators-Exercise 寫(xiě)出以下表達(dá)式的運(yùn)行結(jié)果:寫(xiě)出以下表達(dá)式的運(yùn)行結(jié)果: int num = 10; double d = 9.5; System.out.println(10/9 is + num/9); System.out.println(9.5/9 is + d/9); System.out.println(10%9 is + num%9);

23、System.out.println(9.5%9 is + d%9);2021-11-1625Operators-examplep(4) +和和-nint i=10;nint j=i+; / j is 10; i is 11nint k=j+ i-; /k is 21, i is 10ni-; / i is 9p(5)Relational Operator and logic operatorn注意和注意和c+一樣,一樣,boolean類(lèi)型的變量在類(lèi)型的變量在Java中不能夠參中不能夠參加關(guān)系運(yùn)算(加關(guān)系運(yùn)算(,=,!=,=)p(A=B)=B&BC;rightp(a=b)!=c;err

24、orpa=b&b!=c;right2021-11-1626Operators-examplep(5)Relational Operator and logic operatorn和和C+一樣在關(guān)系運(yùn)算時(shí)有一樣在關(guān)系運(yùn)算時(shí)有short-cut evaluationpboolean b1=(4=2)&(18)p/after !false is true, the evaluation is completed For &If the first operand is false, the evaluation is completed,the evaluation resu

25、lts in false.For |If the first operand is true, the evaluation is completed, the evaluation results in true.2021-11-1627Operators-examplep(6) Bit Operators(位運(yùn)算符位運(yùn)算符)n按位與運(yùn)算(按位與運(yùn)算(&) 0&0=0,0&1=0,1&0=0,1&1=1n按位或運(yùn)算(按位或運(yùn)算(|) 0|0=0,0|1=1,1|0=1,1|1=1n按位異或運(yùn)算(按位異或運(yùn)算() 00=0,01=1,10=1,11=0n

26、按位取反運(yùn)算(按位取反運(yùn)算()0=1,1=0n左移位運(yùn)算符(左移位運(yùn)算符()p運(yùn)算符運(yùn)算符執(zhí)行一個(gè)左移位。作左移位運(yùn)算時(shí),右邊的空位補(bǔ)執(zhí)行一個(gè)左移位。作左移位運(yùn)算時(shí),右邊的空位補(bǔ)0。在不。在不產(chǎn)生溢出的情況下,數(shù)據(jù)左移產(chǎn)生溢出的情況下,數(shù)據(jù)左移1位相當(dāng)于乘以位相當(dāng)于乘以2。 int a=64,b; b=a與與) p運(yùn)算符運(yùn)算符執(zhí)行一個(gè)右移位(帶符號(hào)),左邊按符號(hào)位補(bǔ)執(zhí)行一個(gè)右移位(帶符號(hào)),左邊按符號(hào)位補(bǔ)0或或1。 int a=16,b; b=a2; /b=4p運(yùn)算符運(yùn)算符執(zhí)行一個(gè)右移位,左邊統(tǒng)一補(bǔ)執(zhí)行一個(gè)右移位,左邊統(tǒng)一補(bǔ)0。2021-11-1628Operators-example int

27、 i,j;i=2;j=-2; System.out.println(i2 is + (i2); System.out.println(i2 is + (i2); System.out.println(j2 is + (j2); System.out.println(j2 is +(j2);0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 1 1 1 1 1 1 1 1 1 1 1 1 1

28、 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1i2i2j2j2i=2j=-22021-11-1629Type Casting p實(shí)線箭頭代表轉(zhuǎn)換過(guò)程中不存在精度丟失,而虛線箭頭代實(shí)線箭頭代表轉(zhuǎn)換過(guò)程中

29、不存在精度丟失,而虛線箭頭代表轉(zhuǎn)換過(guò)程中存在精度丟失。表轉(zhuǎn)換過(guò)程中存在精度丟失。nint n=123456789; float f =n; /f is 1.23456792E8byteshortcharintfloatlongdouble2021-11-1630Type CastingpJava中的類(lèi)型轉(zhuǎn)換與中的類(lèi)型轉(zhuǎn)換與C+中相同。中相同。n低精度的數(shù)據(jù)類(lèi)型在運(yùn)算過(guò)程中可以自動(dòng)轉(zhuǎn)換為高精低精度的數(shù)據(jù)類(lèi)型在運(yùn)算過(guò)程中可以自動(dòng)轉(zhuǎn)換為高精度的問(wèn)數(shù)據(jù),而高精度的數(shù)據(jù)需要經(jīng)過(guò)強(qiáng)制轉(zhuǎn)換才能度的問(wèn)數(shù)據(jù),而高精度的數(shù)據(jù)需要經(jīng)過(guò)強(qiáng)制轉(zhuǎn)換才能夠變成低精度的數(shù)據(jù)。夠變成低精度的數(shù)據(jù)。n規(guī)則:規(guī)則:p(1)整型)整

30、型,實(shí)型實(shí)型,字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算結(jié)果的精度由字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算結(jié)果的精度由表達(dá)式中精度最高的變量決定。表達(dá)式中精度最高的變量決定。 E.g. double d=15.3; int i=30; d=d+i /結(jié)果是一個(gè)結(jié)果是一個(gè)double型的變量型的變量 i=d+i/ error,結(jié)果是,結(jié)果是double型的不能夠賦值給型的不能夠賦值給int型的變量。型的變量。2021-11-1631Type Castingp規(guī)則規(guī)則p(2)byte和和short型的數(shù)據(jù)參加運(yùn)算時(shí)會(huì)自動(dòng)變?yōu)樾偷臄?shù)據(jù)參加運(yùn)算時(shí)會(huì)自動(dòng)變?yōu)閕nt類(lèi)型。類(lèi)型。p(3)整數(shù)整數(shù)(e.g. 10,20) 在在byt

31、e或者或者short的取值范圍內(nèi)時(shí)可以直的取值范圍內(nèi)時(shí)可以直接賦值給一個(gè)接賦值給一個(gè)byte或者或者short類(lèi)型的變量。反之,必須要通過(guò)強(qiáng)類(lèi)型的變量。反之,必須要通過(guò)強(qiáng)制類(lèi)型轉(zhuǎn)換來(lái)賦值。制類(lèi)型轉(zhuǎn)換來(lái)賦值。short s = 10; /int vlaue in range. no cast requiredbyte tiny =(byte) 128; / int value not in range, cast requiredchar symbol = 32; / int value in range, no cast required int i=10;byte b=(byte)i; /用

32、變量用變量i來(lái)給變量來(lái)給變量b賦值時(shí),需要強(qiáng)制轉(zhuǎn)換。賦值時(shí),需要強(qiáng)制轉(zhuǎn)換。 long d=10; int j = d;/error int j = (int)d;2021-11-1632Type Casting-Exercisep請(qǐng)問(wèn)以下程序能夠通過(guò)編譯?請(qǐng)問(wèn)以下程序能夠通過(guò)編譯?short a,b,c;a=2;b=3;c=a+b; short a,b,c;a=2;b=3;c=(short)(a+b); 2021-11-1633Type Casting-notep在運(yùn)用在運(yùn)用Java解決實(shí)際問(wèn)題時(shí),如果運(yùn)用類(lèi)型轉(zhuǎn)換解決實(shí)際問(wèn)題時(shí),如果運(yùn)用類(lèi)型轉(zhuǎn)換不慎,可能會(huì)導(dǎo)致程序的邏輯錯(cuò)誤,因此作為編不慎,

33、可能會(huì)導(dǎo)致程序的邏輯錯(cuò)誤,因此作為編程人員在類(lèi)型轉(zhuǎn)換之前一定要小心。程人員在類(lèi)型轉(zhuǎn)換之前一定要小心。n默認(rèn)情況下,浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)換為整型數(shù)據(jù)時(shí),小數(shù)位默認(rèn)情況下,浮點(diǎn)型數(shù)據(jù)轉(zhuǎn)換為整型數(shù)據(jù)時(shí),小數(shù)位會(huì)自動(dòng)舍棄。會(huì)自動(dòng)舍棄。pE.g. double x = 9.997; int nx = (int) x; /nx的值為的值為9p如果需要四舍五入,則需要借助于其他的辦法。如果需要四舍五入,則需要借助于其他的辦法。 E.g. double x = 9.997; int nx = (int) Math.round(x); /Math類(lèi)在后面介紹,在此僅需了類(lèi)在后面介紹,在此僅需了解即可解即可n當(dāng)數(shù)據(jù)值大于

34、目標(biāo)類(lèi)型的取值范圍時(shí),高位部分的數(shù)當(dāng)數(shù)據(jù)值大于目標(biāo)類(lèi)型的取值范圍時(shí),高位部分的數(shù)據(jù)會(huì)被強(qiáng)制去掉,這樣導(dǎo)致數(shù)據(jù)值發(fā)生變化。據(jù)會(huì)被強(qiáng)制去掉,這樣導(dǎo)致數(shù)據(jù)值發(fā)生變化。pE.g. Byte b=(byte)300; /b的值為的值為44,而不是,而不是3002021-11-1634討論:關(guān)于討論:關(guān)于Java中浮點(diǎn)數(shù)的運(yùn)算中浮點(diǎn)數(shù)的運(yùn)算p從以上的測(cè)試代碼可知,從以上的測(cè)試代碼可知,Java中的浮點(diǎn)數(shù)在參加算術(shù)運(yùn)算時(shí)存在一定中的浮點(diǎn)數(shù)在參加算術(shù)運(yùn)算時(shí)存在一定的精度偏差。的精度偏差。p當(dāng)遇到上述問(wèn)題時(shí)我們需要借助當(dāng)遇到上述問(wèn)題時(shí)我們需要借助Java類(lèi)庫(kù)中類(lèi)庫(kù)中BigDecimal類(lèi)來(lái)解決,在類(lèi)來(lái)解決,在后續(xù)的章節(jié)我們會(huì)討論。后續(xù)的章節(jié)我們會(huì)討論。public static void main(String args) double d1,d2,d3; d1=0.02; d2=89.234; d3 = d1+d2; System.out.println(d3 is:+d3); Syste

溫馨提示

  • 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)論