《《Java語言基礎(chǔ)》PPT課件.ppt》由會員分享,可在線閱讀,更多相關(guān)《《Java語言基礎(chǔ)》PPT課件.ppt(43頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第三章 Java 語言基礎(chǔ),主要內(nèi)容: 數(shù)據(jù)類型、變量、常量 表達式 流程控制語句,問題:,定義一個變量時,如何確定合理的數(shù)據(jù)類型? 引用類型和基本數(shù)據(jù)類型變量有何不同? 如何確定變量的生命周期?,Java 的基本數(shù)據(jù)類型,3.2 數(shù)據(jù)類型、變量與常量,數(shù)據(jù)類型的特點(與C的區(qū)別),各種數(shù)據(jù)類型占用固定的內(nèi)存長度,與具體的軟硬件平臺無關(guān)(跨平臺內(nèi)在要求); 各類型都有一個缺省值(C無缺省值);,選擇合適的整數(shù)類型,考慮實際需求和程序的性能 如定義一個變量保存月份 byte month;節(jié)省內(nèi)存 long month;占用太多內(nèi)存 int month; 簡化運算時強制類型轉(zhuǎn)換操作,因為整數(shù)運算返
2、回值只能是int或long 如:byte month=1; month=(byte)(month+2);//無強制類型轉(zhuǎn)換則編譯出錯,Unicode 編碼,Java語言對字符數(shù)據(jù)類型(char) 采用 Unicode 編碼(UCS-2),收錄所有語言文字中的字符,一種跨平臺的字符編碼。 其它常用字符編碼有: ASCII編碼:主要表達現(xiàn)代英語和其他西歐語言中的字符。 ISO-8859-1編碼:8位,用于西歐語言中的字符編碼。 GB2312編碼:包括對簡體中文字符的編碼。 GBK編碼:對GB2312編碼的擴展,分為漢字區(qū)和圖形符號區(qū)。 UTF編碼:把Unicode編碼轉(zhuǎn)換為操作系統(tǒng)支持的編碼。,標
3、識符(與C規(guī)定相同),用來標識一個包、類名、對象、方法、變量等。 標識符由字母、數(shù)字、下劃線 _ 和美元符號 $ 組成; 以字母、下劃線 _ 或美元符號 $ 開頭; 大小寫有區(qū)別; 見名知義; P36/表3-2,指出不合法標識符的錯誤; 習題3-4,類名(接口名) 名詞 第一字母大寫,每一單詞首字母大寫。 例:AccountBook 方法名 動詞 第一字母小寫,每一單詞首字母大寫。 例:balanceAccount() 變量名 名詞 第一字母小寫,每一單詞首字母大寫。 常量名 全部大寫,單詞間用下劃線分開 . 例:HEAD_COUNT,常 量,布爾常量:true , false 整型常量 十進
4、制: 以非 0 開頭 八進制: 以 0 開頭 017 == 15 十六進制:以 0 x 開頭 0 x2f == 47 浮點常量 單精度(32位): 以 F、f 表示,如:8.1f; 雙精度(64位) :帶 D、d 或不加后綴,如:8.1 字符串常量 字符串可以連接:“Hello” + “ Java” 得到 “Hello Java”,字符常量,如:a、8以及(轉(zhuǎn)義符),變 量,強制聲明(與C相同) 格式:數(shù)據(jù)類型 變量名 = 初始值 ; 如:boolean m_bFalg = true ; double m_dScore ;,基本數(shù)據(jù)類型的使用示例,例子3-1: 調(diào)試程序,回答問題:
5、1、該程序保存的文件名是什么?為什么要這樣命名? 2、在執(zhí)行程序時,系統(tǒng)怎么知道該從哪里開始程序? 3、第8行l(wèi)ong l=123456789L的L的含義是什么?去掉可以嗎?為什么? 4、第10行float f=3.1415925F的F含義是什么?去掉可以嗎?為什么? 5、第12行String s=“你好!”,中文的顯示問題,String是基本數(shù)據(jù)類型嗎? 6、char chc = 中 ;,字符串與數(shù)字的互相轉(zhuǎn)化,見P37例32: int i = Integer.parseInt( string ); 以上函數(shù)的定義為: public static int parseInt ( Strings
6、 ) throws NumberFormatException,變量的作用域(重點),作用域是指它的存在范圍,只在這個范圍內(nèi),程序代碼才能訪問它。 Java的變量的作用域就是聲明變量的語句所在的語句塊。 例子3-2:代碼12行變量br的作用域,s和i的聲明應(yīng)放在try語句外。,變量的初始化及默認值,Java的變量必須先定義,后初始化,再使用。 對于類的成員變量,JVM會先自動賦默認值。 對于局部變量,JVM不會自動初始化為默認值。 例子:VaribleAvailable.java,引用類型類,定義類(新的數(shù)據(jù)類型) class MyDate int day ; int month ; int
7、 year ; 基本數(shù)據(jù)類型直接分配內(nèi)存空間 int I,j,k ; 引用類型 ? MyDate d1 ; d1 = new MyDate() ;,引用類型類,MyDate d1 = new MyDate() ;,d1.day = 8 ; d1.month = 8; d1.year = 2008 ;,3.3表 達 式,由變量、常量、對象、方法調(diào)用和操作符組成的式子。表達式的值即運算后的結(jié)果。 類型轉(zhuǎn)換: 自動轉(zhuǎn)換:從占用內(nèi)存較少的類型轉(zhuǎn)化成占用內(nèi)存較多的類型; 強制轉(zhuǎn)換:byte b = 10 ;int i = -1 ; b = (byte ) i ;,算 術(shù) 運 算,雙目運算符 +(
8、加) - (減) * (乘) /(除) %(取余) 單目運算符 + +(自增)- -(自減) -(求相反數(shù)) 例:int x =2 ; int y = ( + + x ) * 3 ; 求x=?,y=? 結(jié)果:x = 3, y = 9 例:int x =2 ; int y = ( x + + ) * 3 ; 求x=?,y=? 結(jié)果: x = 3, y = 6 P41例34:,關(guān) 系 運 算,= =(等于)! =(不等于) (大于) =(大于等于)< =(小于等于) 用于比較數(shù)據(jù)的大小關(guān)系,結(jié)果為布爾型;,邏 輯 運 算,,Bitwise運算符: 問函數(shù)的作用; 對象運算符 insta
9、nceof 用來測定一個對象是否屬于某一個特定類的實例,形式如下: obj instanceof ClassName(InterfaceName) 例:Dog dog=new Dog(); dog instanceof XXX在以下情況下為true XXX為Dog類,Dog類的直接或間接父類,Dog類實現(xiàn)的接口,以及所有父類實現(xiàn)的接口。,Animal a=new Dog(); System.out.println(a instanceof Animal);//true System.out.println(a instanceof Dog); //true System.out.println
10、(a instanceof Cat); //false,3.字符串連接操作符“” “”連接字符串,生成新的字符串。其一個操作數(shù)為String類型,另一個操作數(shù)可以是任意類型。因為在java.lang.Object類中定義了toString()方法。 如:String s=“Age:”+1+2;//s的內(nèi)容為Age:12,4.“”與對象的equal()方法 “”用來比較兩個操作數(shù)是否相等。當“”兩邊都是引用類型變量時,這兩個變量都必須引用同一個對象時結(jié)果才為true。 Object類的equal()方法是比較引用的是否為同一個對象。java.io.File,java.util.Date,java
11、.lang.String,包裝類都覆蓋了Object類的equal()方法,它們的比較規(guī)則為如果兩個對象的類型一致,并且內(nèi)容一致,則返回true。,String s1=new String(“Hello”); String s2=new String(“Hello”); System.out.println(s1==s2);//false System.out.println(s1.equals(s2));//true,可以在用戶自定義的類中覆蓋Object.equals()方法,重新定義比較規(guī)則。 例見Person.java:定義一個Person類,實現(xiàn)兩個Person實例,只要名字相同就可
12、以認為是同一個。,運算符的優(yōu)先級與結(jié)合性,運算符的優(yōu)先級決定了表達式中不同運算執(zhí)行的先后順序。 運算符的結(jié)合性決定了并列的相同運算的先后執(zhí)行順序。,,例子:習題3-8 設(shè)A=3,b=-5,f=true; --a%b++為2, (a=1,生活中使用if判斷的實例?,分支語句(2),2選擇語句 if-else if(boolean-expression) statement1;else statement2;,生活中使用if-else選擇的實例?,分支語句(3),3多分支語句 (1)if-else if else 語句 if (boolean-expression1) statement1
13、;else if (boolean-expression2) statement2;else if (boolean-expressionN) statementN;else statement;,,分支語句(4),3多分支語句 (2)switch 語句(開關(guān)語句) switch (expression) case value1 : statement1; break;case value2 : statement2; break; case valueN : statementN; break;default : defaultStatement; ,,3.4.
14、3循環(huán)語句,循環(huán)體,條件表達式,條件表達式,循環(huán)體,表達式 3,表達式 1,循環(huán)體,表達式 2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,T,T,T,F,F,F,(b) do-while 語句,(a) while 語句,(c) for 語句,圖 3-9 Java 的三種循環(huán)語句流程,While的例子3-8:找到所有的水仙花數(shù)。水仙花數(shù)是三位數(shù),各位數(shù)字的立方和等于數(shù)本身。(Narcissus.java) Do-while例子3-9:從用戶鍵盤輸入一個字符后,輸出這個字符對應(yīng)的ASCII碼。直到輸入為”#”字符結(jié)束。(showCharValue.java) For語句例子3-1
15、0:找出10000以內(nèi)的完全數(shù)。完全數(shù)是等于其所有因子和(包括1但不包括這個數(shù)本身)的數(shù)。(PerfectNum.java),跳 轉(zhuǎn) 語 句 continue 、break 、 return (無 goto); continue 語句 不帶標號(與C相同): 終止當前循環(huán),跳過本循環(huán)中剩余的語句,直接進入下一次循環(huán)。 帶標號(Java特有): 格式: continue 標號名;,例 打印 1 100 之間的素數(shù): First_loop: for (int i=1; i<100; i++) for ( int j=2; j
16、 continue First_loop ;// 跳到外層循環(huán) System .out .println ( i ) ; ,break 語句 不帶標號的 break : 跳出它所在的 switch 分支或最內(nèi)層循環(huán)體。 帶標號的 break : 跳出標號標志的語句塊; break 標號名 ; for () a: b: break b; break a; ,小 結(jié),數(shù)據(jù)類型的特點(缺省值、內(nèi)存長度固定、引用數(shù)據(jù)類型) 表達式 流程控制語句,指出程序的錯誤: public class MyJavaClass public static void main() System.out.println(Am I wrong?); System.out.println(程序結(jié)束。); ,課堂編程實踐,編一程序產(chǎn)生3個20以內(nèi)的隨機數(shù)作為三角形的三條邊,檢驗是否構(gòu)成三角形,若可以,輸出三條邊的長度,計算其面積并輸出。 提示: a,b,c是三角形的三條邊,則任意兩邊的和大于第三邊。(或任意兩邊的差小于第三邊)。 面積=Math.sqrt(s*(s-a)*(s-b)*s-c)),其中 s=1.0/2*(a+b+c),