




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Fundamental Programming Structures in Java (Chapter 3)Hy Mao2021年年11月月16日日華東師范大學軟件學院華東師范大學軟件學院2021-11-162OutlinepIdentifier(標志符標志符) & Keywords(關鍵字)(關鍵字)pData TypepVariables pconstantspOperatorspType Casting2021-11-163Java 的標識符的標識符(1 of 2)p標識符的作用標識符的作用: 表示程序中的類名、域名、方法名、符號常量、局部變量,表示程序中的類名、域名、方法名、符
2、號常量、局部變量,標號標號.pJava標識符標識符(identifiers)規(guī)定規(guī)定n以字母、下劃線、美圓符開始的一個字符序列以字母、下劃線、美圓符開始的一個字符序列n除開始的第一個字符外,后面可跟字母、下劃線、美圓符和數字除開始的第一個字符外,后面可跟字母、下劃線、美圓符和數字n標識符區(qū)分大小寫標識符區(qū)分大小寫n沒有長度限制沒有長度限制n不能與保留字不能與保留字(reserved word)或關鍵字或關鍵字(keyword)相同相同p例如例如: n$students, _start, _name, app_numbern1name,2_start, import, main, thenn_,
3、 _, _1 等是正確的嗎?上機驗證你的答案。等是正確的嗎?上機驗證你的答案。p 參考參考n 1. 關于每一個關于每一個key words詳細用法的說明詳細用法的說明 Java Keyword Reference.pdf n 2. Textbook appendix A Java Keywords2021-11-164Java 的標識符的標識符(2 of 2)pJava 編程標識符的命名習慣編程標識符的命名習慣n程序可讀性程序可讀性p類、接口:類、接口:通常使用名詞,且每個單詞首字母要大寫通常使用名詞,且每個單詞首字母要大寫 Eg HelloWorldApp, PersonApp, etcp方
4、法:方法:可以是動詞,首字母小寫,其后用大字母分隔可以是動詞,首字母小寫,其后用大字母分隔每個單每個單 詞詞 Eg: getValue(); setPersonName(),getRequestId() etcp常量:常量:全部大寫,單詞之間用下劃線分隔全部大寫,單詞之間用下劃線分隔 Eg: TOTAL_STUDENT, FILE_NAME, etcp變量:變量:同方法,應該避免使用同方法,應該避免使用$符號符號 Eg: userId, userName, etc2021-11-165Data TypespJava 中的數據類型分為兩大類:中的數據類型分為兩大類:n第一類是簡單數據類型第一類是
5、簡單數據類型p整數類型:整數類型:byte(1), short(2), int(4), long(8)p實數類型:實數類型:float(4), double(8)p字符類型:字符類型:char(2)p布爾類型:布爾類型:boolean(true,false)n第二類是復雜數據類型第二類是復雜數據類型pJava類庫中的類類庫中的類p用戶自定義的類用戶自定義的類p接口接口p數組數組2021-11-166Data TypesTypesPrimitivetypesreferencesintegerfloating-pointcharacterbyteshortintegerlongfloatdoubl
6、ebooleanPredefinedclassUser definedclassArrayInterface2021-11-167Java 基本的數據類型基本的數據類型類型類型存儲空間大小存儲空間大小存儲方式存儲方式初始值初始值Java整數整數類型類型byte8 位位(bit)2 的補碼的補碼(byte) 0short16位位2 的補碼的補碼(short) 0int32 位位2 的補碼的補碼0long64位位2 的補碼的補碼0LJava浮點浮點類型類型float32位位IEEE 754浮點數標準浮點數標準 0.0fdouble 64位位IEEE 754浮點數標準浮點數標準 0.0dNote:J
7、ava具有平臺無關性具有平臺無關性,所以各種數據類型在不同的平臺上都具有所以各種數據類型在不同的平臺上都具有固定的取值范圍固定的取值范圍.2021-11-168Java 基本的數據類型基本的數據類型-整型整型p關鍵字關鍵字byte, short, int和和long表示整數類型,四種表示整數類型,四種整數類型的區(qū)別在于存儲空間長度、能表示的范整數類型的區(qū)別在于存儲空間長度、能表示的范圍是不一樣的,如下表所示。圍是不一樣的,如下表所示。2021-11-169Java 基本的數據類型基本的數據類型-整型整型p整數類型的變量可以表示十進制、八進制和十六進制的數整數類型的變量可以表示十進制、八進制和十
8、六進制的數字。字。n首位為首位為“0”表示八進制的數值;表示八進制的數值;n首位為首位為“0 x”表示表示16進制的數值。進制的數值。n例如:例如: 5 表示十進制值表示十進制值5 075 表示八進制數值表示八進制數值75(十進制數(十進制數61) 0 x9ABC 表示十六進制的數值表示十六進制的數值9ABC(十進制數(十進制數39612)p整數缺省為整數缺省為int類型。類型。如在其后有一個字母如在其后有一個字母“L”/”l”表示一表示一個個long類型。(由于小寫類型。(由于小寫“l(fā)”與數字與數字“1”容易混淆,因而,容易混淆,因而,建議大家采用大寫)建議大家采用大寫)n例如:例如: 5L
9、 表示十進制值表示十進制值5,是一個,是一個long類型的值類型的值 5 表示十進制值表示十進制值5,是一個,是一個int類型的值類型的值2021-11-1610Java 基本的數據類型基本的數據類型-浮點型浮點型p在在Java編程語言中有兩種浮點類型:編程語言中有兩種浮點類型:float和和double 。nfloat為為32位位(單精度),(單精度),double為為64位位(雙精度)。(雙精度)。double類型的浮點數具有更高的精度。類型的浮點數具有更高的精度。n類型說明類型說明:p在數字后帶有字母在數字后帶有字母F或或f(float)表示該數字為)表示該數字為float類型。類型。p
10、在數字后帶有字母在數字后帶有字母D或或d(double)表示該數字為)表示該數字為double類型。類型。p如果不明確指明浮點數的類型,浮點數缺省為如果不明確指明浮點數的類型,浮點數缺省為double。 3.14159 (double型浮點數)型浮點數) 2.08E25 (double型浮點數)型浮點數) 6.56f (float型浮點數)型浮點數) -6.5F (float型浮點數)型浮點數)2021-11-1611Java 基本的數據類型基本的數據類型-字符型字符型p字符類型字符類型(char)nJava中中char用用Unicode字符集字符集 16bits表示不是表示不是ASCII碼碼
11、()n不能直接作為整數進行運算,需類型轉換不能直接作為整數進行運算,需類型轉換n字符常量,用單引號對括住的字符,如字符常量,用單引號對括住的字符,如an定義格式為定義格式為: char charName =b; p特殊字符列表:特殊字符列表:換碼序列換碼序列名稱名稱Unicode值值ttabu0009nNewline characteru000a單引號單引號u0027”雙引號雙引號u0022反斜杠反斜杠u005c2021-11-1612Java 基本的數據類型基本的數據類型-布爾型布爾型p布爾類型布爾類型(boolean)n取值范圍:取值范圍:true
12、, falsen布爾變量的默認值為布爾變量的默認值為falsen布爾值與數值之間不能進行運算布爾值與數值之間不能進行運算ntrue 和和 false均是布爾類型的均是布爾類型的常量常量,注意大小寫,注意大小寫n定義格式的示范:定義格式的示范:boolean isChanged = true; boolean isBlack = true;Note:在:在java中基本數據類型的定義和使用與中基本數據類型的定義和使用與C+中是類似的。中是類似的。2021-11-1613Variables( 變量變量)pJava中變量和常量的含義與中變量和常量的含義與C+是一樣的。是一樣的。p定義一個變量語法為:
13、定義一個變量語法為:nSyntax: 類型類型 變量名;變量名;pE.g. double salary;pint vacationDays;plong earthPopulation;pboolean done;p變量需要重點關注:變量需要重點關注:n變量類型變量類型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+一樣同時定義多個變量。一樣同時定義多個變量。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在方法內部或者程序塊內部定義的變量為局部變量在方法內部或者程序塊內部定義的變量為局部變量nJava中局部變量的作用范圍與中局部變量的作用范圍與C+中相同,即為變量中相同,即為變量所所在的代碼塊。在的代碼塊。p局部變量在定義之后是沒有初始值的,必須要在程序中給該變局部變量在定義之后是沒有初始值的,必須要在程序中給該變量賦值,然后才能使用,否則編譯時會報錯。量賦值,然后才能使用,否則編譯時會報錯。pJava與與C+的不同點在于:的不同點在于:在程序塊中定義的變量,不能夠與在程序
16、塊中定義的變量,不能夠與已有的已有的局部變量重名局部變量重名。2021-11-1617Variables-Examplep判斷以下代碼是否正確:判斷以下代碼是否正確:public static void main(String args) int i; i=i+1; 原因原因:變量變量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;錯誤,原因在于:錯誤,原因在于:if語句中定義的變量語句中定義的變量c,在,在main方法中已方法中已經定義,改正方法,更改經定義,改正方法,更改if語句或者語句或者main方法中的變量名方法中的變量名c,使他們不重復。使他們不重復。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中的類變量中的類變量n在類中直接定義的變量稱為類變量或者屬性。在類中直接定義的變量稱為類變量或者屬性。n類變量在定義之后,會有默認值。如果沒有初始化也類變量在定義之后,會有默認值。如果沒有初始化也可以使用。但是從程序設計的角度來說,還是需要初可以使用。但是從程序設計的角度來說,還是需要初始化之后使用。始化之后使用。n關于類變量我們現在只需要了解,在后續(xù)的章節(jié)中會關于類變量我們現在只需要了解,在后續(xù)的章節(jié)中會詳細討論詳細討論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+一樣常量必須在定義的時候賦值;一樣常量必須在定義的時候賦值;p在在java中常量一般用大寫字母和下劃線來表示。中常量一般用大寫字母和下劃線來表示。p在實際的編程中我們常用類常量,在后面的章節(jié)在實際的編程中我們常用類常量,在后面的章節(jié)中將說明該問題。中將說明該問題。2021-11-1622Operators (運算符運算符) 見表見表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)先級高優(yōu)先級高優(yōu)先級低優(yōu)先級低2021-11-1623Operators-examplep(1) Assignment OperatornI=K=10 -I=(K=10)n也等價于也等價于k=10; I=K;p(2) 單目運算符單目運算符: +(正)(正), -(負)(負)nint value = - - 10;n等價于等價于 int value = -(-10);n等價于等價于 int value = 10;nBe aware of the di
22、fference between “- -” and “-”.p-10(為負號);(為負號);-i(i為變量表示為變量表示i=i-1)p(3) + - * / %(取余取余)n10%9=1;n9%9=0;2021-11-1624Operators-Exercise 寫出以下表達式的運行結果:寫出以下表達式的運行結果: 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類型的變量在類型的變量在Java中不能夠參中不能夠參加關系運算(加關系運算(,=,!=,=)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+一樣在關系運算時有一樣在關系運算時有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(位運算符位運算符)n按位與運算(按位與運算(&) 0&0=0,0&1=0,1&0=0,1&1=1n按位或運算(按位或運算(|) 0|0=0,0|1=1,1|0=1,1|1=1n按位異或運算(按位異或運算() 00=0,01=1,10=1,11=0n
26、按位取反運算(按位取反運算()0=1,1=0n左移位運算符(左移位運算符()p運算符運算符執(zhí)行一個左移位。作左移位運算時,右邊的空位補執(zhí)行一個左移位。作左移位運算時,右邊的空位補0。在不。在不產生溢出的情況下,數據左移產生溢出的情況下,數據左移1位相當于乘以位相當于乘以2。 int a=64,b; b=a與與) p運算符運算符執(zhí)行一個右移位(帶符號),左邊按符號位補執(zhí)行一個右移位(帶符號),左邊按符號位補0或或1。 int a=16,b; b=a2; /b=4p運算符運算符執(zhí)行一個右移位,左邊統(tǒng)一補執(zhí)行一個右移位,左邊統(tǒng)一補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實線箭頭代表轉換過程中不存在精度丟失,而虛線箭頭代實線箭頭代表轉換過程中
29、不存在精度丟失,而虛線箭頭代表轉換過程中存在精度丟失。表轉換過程中存在精度丟失。nint n=123456789; float f =n; /f is 1.23456792E8byteshortcharintfloatlongdouble2021-11-1630Type CastingpJava中的類型轉換與中的類型轉換與C+中相同。中相同。n低精度的數據類型在運算過程中可以自動轉換為高精低精度的數據類型在運算過程中可以自動轉換為高精度的問數據,而高精度的數據需要經過強制轉換才能度的問數據,而高精度的數據需要經過強制轉換才能夠變成低精度的數據。夠變成低精度的數據。n規(guī)則:規(guī)則:p(1)整型)整
30、型,實型實型,字符型數據可以混合運算。運算結果的精度由字符型數據可以混合運算。運算結果的精度由表達式中精度最高的變量決定。表達式中精度最高的變量決定。 E.g. double d=15.3; int i=30; d=d+i /結果是一個結果是一個double型的變量型的變量 i=d+i/ error,結果是,結果是double型的不能夠賦值給型的不能夠賦值給int型的變量。型的變量。2021-11-1631Type Castingp規(guī)則規(guī)則p(2)byte和和short型的數據參加運算時會自動變?yōu)樾偷臄祿⒓舆\算時會自動變?yōu)閕nt類型。類型。p(3)整數整數(e.g. 10,20) 在在byt
31、e或者或者short的取值范圍內時可以直的取值范圍內時可以直接賦值給一個接賦值給一個byte或者或者short類型的變量。反之,必須要通過強類型的變量。反之,必須要通過強制類型轉換來賦值。制類型轉換來賦值。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來給變量來給變量b賦值時,需要強制轉換。賦值時,需要強制轉換。 long d=10; int j = d;/error int j = (int)d;2021-11-1632Type Casting-Exercisep請問以下程序能夠通過編譯?請問以下程序能夠通過編譯?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在運用在運用Java解決實際問題時,如果運用類型轉換解決實際問題時,如果運用類型轉換不慎,可能會導致程序的邏輯錯誤,因此作為編不慎,
33、可能會導致程序的邏輯錯誤,因此作為編程人員在類型轉換之前一定要小心。程人員在類型轉換之前一定要小心。n默認情況下,浮點型數據轉換為整型數據時,小數位默認情況下,浮點型數據轉換為整型數據時,小數位會自動舍棄。會自動舍棄。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類在后面介紹,在此僅需了類在后面介紹,在此僅需了解即可解即可n當數據值大于
34、目標類型的取值范圍時,高位部分的數當數據值大于目標類型的取值范圍時,高位部分的數據會被強制去掉,這樣導致數據值發(fā)生變化。據會被強制去掉,這樣導致數據值發(fā)生變化。pE.g. Byte b=(byte)300; /b的值為的值為44,而不是,而不是3002021-11-1634討論:關于討論:關于Java中浮點數的運算中浮點數的運算p從以上的測試代碼可知,從以上的測試代碼可知,Java中的浮點數在參加算術運算時存在一定中的浮點數在參加算術運算時存在一定的精度偏差。的精度偏差。p當遇到上述問題時我們需要借助當遇到上述問題時我們需要借助Java類庫中類庫中BigDecimal類來解決,在類來解決,在后續(xù)的章節(jié)我們會討論。后續(xù)的章節(jié)我們會討論。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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度特色小吃車租賃合同規(guī)范
- 中國靜注人免疫球蛋白行業(yè)全景評估及投資規(guī)劃建議報告
- 2025年智能分揀系統(tǒng)項目合作計劃書
- 2025年度高檔家具打蠟保養(yǎng)合作協議
- 川教版(2019)小學信息技術六年級上冊3.1《新年晚會策劃師》教學設計及反思
- 2025年度綠色食品生產與銷售合同-@-1
- 中國IC設計行業(yè)市場發(fā)展現狀及前景趨勢與投資分析研究報告(2024-2030版)
- 房屋蓋瓦合同范本
- 2025年度城市公共安全聯防共建合同
- 2024-2030年中國軸承鍛件行業(yè)市場全景分析及投資前景展望報告
- 電路邱關源版第10章
- 綠植租擺服務投標方案(技術方案)
- 2020新譯林版高中英語全七冊單詞表(必修一~選擇性必修四)
- 離婚協議書電子版下載
- 安全教育培訓記錄表(春節(jié)節(jié)后)
- 運籌學完整版課件-002
- 2023年高考全國甲卷語文試卷真題(含答案)
- 2023年中國工商銀行蘇州分行社會招聘30人筆試備考試題及答案解析
- 中糧五常筒倉工程施工組織設計方案
- 汽車尾氣污染與治理汽車尾氣污染課件
- AIGC及ChatGPT保險行業(yè)應用白皮書
評論
0/150
提交評論