《Java面向對象程序設計(第3版)》課件:第3章 Java程序設計基礎((程序設計語言)2007_第1頁
《Java面向對象程序設計(第3版)》課件:第3章 Java程序設計基礎((程序設計語言)2007_第2頁
《Java面向對象程序設計(第3版)》課件:第3章 Java程序設計基礎((程序設計語言)2007_第3頁
《Java面向對象程序設計(第3版)》課件:第3章 Java程序設計基礎((程序設計語言)2007_第4頁
《Java面向對象程序設計(第3版)》課件:第3章 Java程序設計基礎((程序設計語言)2007_第5頁
已閱讀5頁,還剩179頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、第第3 3章章 JavaJava程序設計基礎程序設計基礎 教學目標教學目標n3.1 Java程序的組成n3.2 基本數(shù)據(jù)類型、變量與常量n3.3 運算符與表達式n3.4 算法的基本控制結構n3.5 方法n3.6 數(shù)組3.1 Java3.1 Java程序的組成程序的組成/FileStructure.javapackage myPackage;import javax.swing.JOptionPane; /導入類JOptionPanepublic class FileStructure public static void main( String args ) JOptionPane.show

2、MessageDialog( null, 歡迎你學習Java程序基礎!); System.exit( 0 ); / 終止應用程序 例例3-1 Java程序的結構此程序編譯后生成的類Welcome.class放入包myPackage中,3.1 Java程序的組成Java源程序代碼由三個要素組成:(1)一個包聲明(package statement,可選);(2)任意數(shù)量導入語句(import statements, 可選);(3)任意數(shù)量的類定義和接口定義。Java字符集n大小寫的英文字母大小寫的英文字母:AZ,azn數(shù)字字符數(shù)字字符:09n特殊字符特殊字符:空格! ! # # % % &

3、; & $ $ _ _( (下劃線下劃線) ) + + * * = = - - / / “ “ ; ; . ., ,( ) 詞法記號 n關鍵字關鍵字: :關鍵字是關鍵字是JavaJava預定義的單詞預定義的單詞 n標識符標識符: :程序員聲明的單詞,命名程序正文中的一些實體。程序員聲明的單詞,命名程序正文中的一些實體。 如如: :類名、變量名、方法名,對象名類名、變量名、方法名,對象名n文文 字字: : 文字是在程序中直接使用符號表示的數(shù)據(jù)文字是在程序中直接使用符號表示的數(shù)據(jù). . 包括包括: :數(shù)字、字符、字符串和布爾型文字數(shù)字、字符、字符串和布爾型文字. . 如如:123:123,

4、4.564.56,AA,”Hello”Hello”,tureturen操作符操作符: :用于各種運算的符號,如:用于各種運算的符號,如:+,-,*,n分隔符分隔符: :用于分隔各個詞法記號或程序正文用于分隔各個詞法記號或程序正文. . 如:(如:( ) , : ; n空白符空白符: :用于指示單詞的開始和結束位置。用于指示單詞的開始和結束位置。 空格(空格(spacespace)、制表符()、制表符(TABTAB鍵產(chǎn)生的字符)、鍵產(chǎn)生的字符)、 換行符(換行符(Enter Enter 鍵所產(chǎn)生的字符)和注釋的總稱。鍵所產(chǎn)生的字符)和注釋的總稱。 關鍵字關鍵字( (Keywords)Keywor

5、ds)abstract break byte boolean catch caseclass char continue default double doelse extends false final float forfinally final if import implements intinterface instanceof long length native newnull package private public protected returnswitch synchronized short static super try true this throw thro

6、ws thread safe transient void while標識符(identifier)JavaJava標識符標識符(identifier)(identifier)的構成規(guī)則的構成規(guī)則: :n以字母、下劃線(_)或美元符$開始 n可以由以大寫字母、小寫字母、下劃線(_)或數(shù)字09組成。 n不能是Java的關鍵字。 n大寫字母和小寫字母代表不同的標識符。 n標識符的長度是任意的 identifier ,userName identifier ,userName , User_Name, , User_Name, _sys_value, $change,_sys_value, $cha

7、nge,2mail, room#, class2mail, room#, class合法的標識符非法的標識符標識符的作用標識符的作用:用于標記程序中的名字:類名、變量名、常量名、方法名等。3.2 基本數(shù)據(jù)類型、變量與常量 nJavaJava的數(shù)據(jù)類型的數(shù)據(jù)類型:n基本數(shù)據(jù)類型基本數(shù)據(jù)類型:Java語言本身定義的數(shù)據(jù)類型 n復合數(shù)據(jù)類型復合數(shù)據(jù)類型( (引用類型引用類型) ):用戶根據(jù)自己的需要定義的數(shù)據(jù)類型 數(shù)據(jù)類型數(shù)據(jù)類型基本數(shù)據(jù)類型基本數(shù)據(jù)類型復合數(shù)據(jù)類型復合數(shù)據(jù)類型類類型類類型布爾類型:布爾類型:boolean數(shù)組數(shù)組接口類型:接口類型:interface字符類型:字符類型:char數(shù)值

8、類型數(shù)值類型浮點數(shù)類型:浮點數(shù)類型:float,double整數(shù)類型:整數(shù)類型:byte,short,int,longJava的數(shù)據(jù)類型基本數(shù)據(jù)類型數(shù)據(jù)類型數(shù)據(jù)類型關鍵字關鍵字占用位數(shù)占用位數(shù)取值范圍取值范圍布爾型布爾型boolean8true, false字符型字符型char16u 0000 u FFFF 字節(jié)型字節(jié)型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647長整型長整型long64-2-63263-1浮點型浮點型float321.40129846432481707e-453.402823466385

9、28860e+38 雙精度型雙精度型double644.94065645841246544e-3241.79769313486231570e+308d 3.3.1 3.3.1 常量常量 常量常量: :在程序運行的整個過程中其值始終不可改變的量, , 也叫文字常量文字常量例如,123,5.6, B都是文字常量。 JavaJava中的常量分為:中的常量分為:整型常量浮點型常量布爾常量字符常量字符串常量1. 整型常量(byte,short,int,long) n包括正整數(shù)、負整數(shù)和零包括正整數(shù)、負整數(shù)和零 nJava的整型常量的表示形式:的整型常量的表示形式:n十進制十進制n八進制八進制n十六進制十

10、六進制n整型常量按照占用的內(nèi)存長度分為:整型常量按照占用的內(nèi)存長度分為:n整型整型(int)n和長整型和長整型(long)常量常量 整型常量的表示形式n十進制形式十進制形式 : 若干個若干個09的數(shù)字的數(shù)字 如:如:100,-50, 0 n八進制形式:八進制形式: 以以0開頭的若干個開頭的若干個07的數(shù)的數(shù)字字 如:如:01230123表示十進制數(shù)表示十進制數(shù)8383, 011011表示十進制數(shù)表示十進制數(shù)9 9。 n十六進制形式:十六進制形式:用用0 x0 x或或0X0X開頭的若干個開頭的若干個 09,af,AF的的的的數(shù)字數(shù)字 如:如:0 x2F0 x2F代表十進制的數(shù)字代表十進制的數(shù)字4

11、747。 0 x1230 x123表示十進制數(shù)表示十進制數(shù)291291, 0X120X12表示十進制數(shù)表示十進制數(shù)1818。 整型常量n整型常量按照所占用的內(nèi)存長度分為:整型常量按照所占用的內(nèi)存長度分為:n整型整型(int)常量常量:占用占用32位。位。如如123,-34 n長整型長整型(long)常量:常量:占用占用64位,長整型位,長整型常量的尾部有一個大寫的常量的尾部有一個大寫的L或小寫的或小寫的l。如如-386L,017777l。2.浮點型常量 (float,double)n浮點型常量:表示可以含有小數(shù)部分的數(shù)值常量。n根據(jù)占用內(nèi)存長度的不同,分為:n單精度浮點常量單精度浮點常量:占用

12、32位內(nèi)存,用F、f表示。如:如:19.419.4F F,3.0513E3f3.0513E3f,8701.52f8701.52fn雙精度浮點常量雙精度浮點常量:占用64位內(nèi)存,用帶D或d或不加后綴的數(shù)值表示, 如:如:2.4332.433E-5DE-5D,700041.273d700041.273d,3.14153.1415。n浮點常量兩種表示形式:一般形式和指數(shù)形式。 浮點型常量n一般形式一般形式:由數(shù)字和小數(shù)點組成。 如0.123, 1.23, 123.0。n指數(shù)形式指數(shù)形式: 如:0.123e3表示0.123103, -35.4E-5表示-35.410-5, 其中e或E之前必須有數(shù)字,且

13、e或E后面的指數(shù)必須為整數(shù)。 3.字符常量(char) n字符常量字符常量:用一對單引號括起的單個字符。 可見字符:a,Z,8,# 轉義字符:n , t ddd : 八進制表示一個字符. uxxxx :十六進制無符號整數(shù),表示 Unicode碼。 如如: : 101 101 用八進制表示一個字符用八進制表示一個字符AA u0041 u0041 用用UnicodeUnicode碼表示一個碼表示一個AAn字符數(shù)據(jù)在內(nèi)存中的存儲形式:一個字符用兩個字節(jié) 的Unicode碼表示.nUnicode碼與ASCII的對應關系:高2位字節(jié)00, 底2位字節(jié)是ASCII值表表3-2 3-2 轉義字符轉義字符 三

14、位8進制數(shù)表示的字符 ddd 四位16進制數(shù)表示的字符反斜線單引號雙引號回車表格符換行水平制表符tab退格含含義義 u005c u0027 u0022 u000d u000c u000a u0009 u0008對對應應Unicode碼碼 uxxxx ” r f n t b轉轉義義字字符符三位8進制數(shù)表示的字符 ddd 四位16進制數(shù)表示的字符反斜線單引號雙引號回車表格符換行水平制表符tab退格含含義義 u005c u0027 u0022 u000d u000c u000a u0009 u0008對對應應Unicode碼碼 uxxxx ” r f n t b轉轉義義字字符符4.字符串常量(Str

15、ing) n字符串常量是用雙引號括起的一串字符(可以0個)。 例子:Hello, MynJava, How old are you? 1234, My + namen字符串常量是String類的對象 5.布爾常量 (boolean)n布爾常量:true(真)和false(假)。n在流控制中經(jīng)常用到布爾常量。 If (條件) 動作1 else 動作2nJava是一種嚴格的類型語言,它不允許數(shù)值類型和布爾類型之間進行轉換。 3.2.3 3.2.3 變量變量n變量:在程序的運行過程中數(shù)值可變的數(shù)據(jù), 用來記錄運算中間結果或保存數(shù)據(jù)。n變量的聲明:變量的聲明:數(shù)據(jù)類型 變量名1,變量名2,變量名n;例

16、如:int num,total;double d1;給變量分配 空間num:total:d1:4字節(jié)8字節(jié)byte,short,int,long, byte,short,int,long, float,double,char,booleanfloat,double,char,boolean 復合類型復合類型float r, area;r=4.5;area=3.14159*r*r;變量變量例如:int num,total;double d1;給變量分配 空間num:total:d1:n變量 “先聲明后使用” num=5;total=2*num;d1=-234.45;num=6;K=90;Num=

17、J+90+num;510-234.456變量分配空間變量分配空間數(shù)據(jù)類型關鍵字占用位數(shù)取值范圍布爾型boolean8true, false字符型char16u 0000 u FFFF 字節(jié)型byte8-128127短整型short16-3276832767整型int32-2147483648 2147483647長整型long64-2-63263-1浮點型float321.40129846432481707e-453.40282346638528860e+38 雙精度型double644.94065645841246544e-3241.79769313486231570e+308d 變量變量n

18、變量的初始化 :聲明變量時指定變量初值 例如: char a= a, b; double d1, d2=0.0; boolean flag=true; byte b1=-128; b1=127 byte b2=-129; b2=128 /Error!變量變量n變量的動態(tài)初始化 :在變量聲明時使用表達式初始化變量。 class DynInit public static void main(String args) double a = 3.0, b = 4.0; double c = Math.sqrt(a * a + b * b); System.out.println(Hypotenuse

19、 is: + c); c i s d y n a m i c a l l y initialized:3.2.4 符號常量 n符號常量:為常量起一個名字n符號常量聲明 :final 數(shù)據(jù)類型 常量名=缺省值;注意,注意,符號常量符號常量聲明時一定要賦初值,而在程序的中間不能改變其值聲明時一定要賦初值,而在程序的中間不能改變其值 例如:final double PI=3.14159;PI=3.1415 /錯誤float r, area;r=4.5;area=3.14159*r*rfloat r, area;r=4.5;area=PI*r*r;例例3-2 3-2 變量聲明和賦值。變量聲明和賦值。

20、/UseVariables.javapublic class UseVariables public static void main(String args) final int PRICE=30; / 聲明整型常量 long l=1234l; / 聲明長整型變量并賦值 int num,total;/ 聲明整型變量float r,v,h = 3.5f; / 聲明浮點型變量,并給h賦值 double w = 3.1415; / 聲明雙精度型變量并賦值 boolean truth = true; / 聲明布爾類型變量并賦值boolean false1; /聲明布爾類型變量 char c; cha

21、r c; /聲明字符類型變量聲明字符類型變量 c =A; c =A; / / 給字符類型變量賦值。變量使用之前,要先聲明。給字符類型變量賦值。變量使用之前,要先聲明。 num=10; / num=10; / 給整型變量賦值給整型變量賦值 total=numtotal=num* *PRICE; PRICE; r=2.5f; / r=2.5f; / 給浮點型變量賦值給浮點型變量賦值 v=3.14159fv=3.14159f* *r r* *r r* *h;h; false1 = 6 7; / false1 = 6 7; / 給布爾類型變量賦值給布爾類型變量賦值 String s=I am a st

22、udent; /String s=I am a student; /給字符串引用變量賦值給字符串引用變量賦值 如何顯示上述各變量的值如何顯示上述各變量的值?System.out.println(false1);System.out.println( false1= +false1);System.out.println( false1= +false1+ ns= “+s );3.3 運算符與表達式 n運算符運算符: 指明對操作數(shù)的運算方式指明對操作數(shù)的運算方式 n按操作數(shù)的個數(shù)分按操作數(shù)的個數(shù)分: :單目運算符單目運算符( (如如-a)-a),雙目運,雙目運算符算符( (如如a+b)a+b)

23、和三目運算符和三目運算符( (如如e1?e2:e3)e1?e2:e3)n按功能分按功能分 :n算術運算符:算術運算符: +,*,/,%,+,n關系運算符:關系運算符: ,=,&,|,n賦值運算符:賦值運算符: =,+=,=,*=,/=等。等。n條件運算符:條件運算符: ?:n其它:其它: , ,instanceof, () 等。等。int S=-a*x*x+b*x+c;boolean l=ab;運算符與表達式n表達式表達式:由運算符、操作數(shù)(常量、變量、方法調(diào)用)和園括號組成的式子。n表達式的書寫形式表達式的書寫形式:n中綴式: a+bn后綴式: ab+n前綴式: +ab例如例如: :

24、 intint a= a=1 1; c=; c=(-a(-a* *b+c+67)b+c+67)* *5656; ;intint b= b=3 3; ;intint c=0; c=0;3.3.1 算術運算符與算術表達式 n算術運算符算術運算符:對整型或實型數(shù)據(jù)的運算 n算術運算符,按操作數(shù)個數(shù)分為兩類:n雙目運算符n單目運算符算術運算符與算術表達式運算符運算例功能+加a + b求a與b相加的和-減a - b求a與b相減的差*乘a * b求a與b相乘的積/除a / b求a除以b的商%取余a % b求a除以b所得的余數(shù)雙目算雙目算術術運算符運算符雙目算雙目算術術運算符運算符n注意注意: (1)整型(

25、int, long, short)數(shù)據(jù)才能夠進行%運算,float和double不能取余。 (2)兩個整型的數(shù)據(jù)做除法時,結果是截取商的整數(shù)部分,而小數(shù)部分被截斷。 例如: 2/4=0 2.0/4=0.5 13%5=3 23.6%12 /Error算術運算符與算術表達式n單目運算符:單目運算符的操作數(shù)只有一個運算符運算例功能等價+自增a+或+aa = a + 1-自減a-或-aa = a - 1-求負數(shù)-aa = -a表表3-4 單目算術運算符單目算術運算符 單目算術運算符單目算術運算符例如: int x=-1; x = -x ;前綴前綴( (+,-):先執(zhí)行單目運算,修改變量的值后用這個 新

26、值參與表達式的運算。 后綴后綴(+, (+, - ) ):先計算復雜表達式的值,最后再修改變量的取值。自增和自減的操作對象只能是變量 int y = ( + x ) * 3; /x 為2,y為6int y = (x+ ) * 3; /x 為2,y為3例如: int x = 5 ; int y = (- x ) * 3; 前綴和后綴運算符舉例前綴和后綴運算符舉例X為為4 Y為為12X為為4 Y為為9int z=(y+)-(- x);X為為3 Y為為13Z為為9替換成替換成 int y = (x- ) * 3;算術運算符與算術表達式n例例3-3算術運算符的應用. 程序是一個application:

27、n利用對話框,接受用戶從鍵盤輸入的兩個字符串數(shù)據(jù)。n將把這兩個字符串數(shù)據(jù)轉化為整型數(shù)值,并賦值給兩個整型變量a和b;n以a和b為操作數(shù)進行算術運算,并在對話框中輸出運算結果n程序運行時,你可輸入任意兩個整數(shù),觀察程序運行的不同結果。 例3-3算術運算符程序運行的部分結果 /ArithmeticOperatorArithmeticOperator.java,.java,import javax.swing.JOptionPaneimport javax.swing.JOptionPane; ; public class ArithmeticOperatorpublic class Arithme

28、ticOperator public static void main( String args public static void main( String args ) ) String input1; String input1; String input2; String input2; int a,b; int a,b; int int plus,minus; plus,minus; input1 = JOptionPane.showInputDialog input1 = JOptionPane.showInputDialog( ( 輸入第一個數(shù)輸入第一個數(shù) ); ); inpu

29、t2 = JOptionPane.showInputDialoginput2 = JOptionPane.showInputDialog( ( 輸入第二個數(shù)輸入第二個數(shù) );); a = Integer.parseInta = Integer.parseInt( input1 ); ( input1 ); b = Integer.parseInt b = Integer.parseInt( input2 );( input2 ); plus=a+b;minus=a-b; plus=a+b;minus=a-b; String s1=a + + + b + = + plus+n; String s

30、1=a + + + b + = + plus+n; s1+=a + - + b + = + minus+n; s1+=a + - + b + = + minus+n; s1+=a + s1+=a + * * + b + = + (a + b + = + (a* *b)+n;b)+n; s1+=a + / + b + = + (a/b)+n; s1+=a + / + b + = + (a/b)+n; s1+=a + % + b + = + (a%b)+n; s1+=a + % + b + = + (a%b)+n; JOptionPane.showMessageDialog JOptionPane

31、.showMessageDialog( null, s1, ( null, s1, 算術運算結果算術運算結果, , JOptionPaneJOptionPane.PLAIN_MESSAGE );.PLAIN_MESSAGE ); 3.3.2 3.3.2 賦值運算符與賦值運算符與賦值表達式賦值表達式例如,例如,i=5 /賦值表達式賦值表達式的的值是值是5 Java Java中賦值運算符(中賦值運算符(= =、+ += =、- -= =、* *= =等等) ) 賦值表達式賦值表達式:帶有賦值運算符的表達式。 賦值表達式的含義賦值表達式的含義: :等號右邊表達式的值賦給等號左邊變量。賦值表達式值的類

32、型為等號左邊變量的類型,運算的結合性為自右向左。賦值運算符與賦值運算符與賦值表達式賦值表達式i= 1; /i= 1; /表達式值為表達式值為1 1 i=j=k=1; i=j=k=1; / /表達式值為表達式值為1 1 ,i,j,ki,j,k的值為的值為1 1i=2+(j=4); /i=2+(j=4); /表達式值為表達式值為6 6, j j的值為的值為4 4,i i的值為的值為6 6。i=(j=10)i=(j=10)* *(k=2); (k=2); / /表達式值為表達式值為2020, j j的值為的值為1010,k k的值為的值為2 2,i i的值為的值為2020。 Java中提供了復合賦值

33、運算符形式: = 表表 3-5 3-5 復合賦值運算符復合賦值運算符 運算符運算符例子例子等價于等價于+ =x += ax = x + a- =x -= ax = x - a*=x *= ax = x * a/=x /= ax = x / a%=x %= ax = x % a&=x &= ax = x & a|=x |= ax = x | a=x = ax = x a=x = ax = x =x = ax = x a=x = ax = x 大于ab小于a=大于等于a=b=小于等于a + b + = + (ab)+n; String s1=a + + b + = + (a

34、b)+n; s1+=a + + b + = + (ab)+n; s1+=a + + b + = + (a= + b + = + (a=b)+n; s1+=a + = + b + = + (a=b)+n; s1+=a + = + b + = + (a=b)+n; s1+=a + = + b + = + (a1) & (5-4)! false運算符運算例運算規(guī)則!邏輯取反! xx真時為假,x假時為真|邏輯或x | yx,y都假時結果才為假(短路)&邏輯與x & yx,y都真時結果才為真(短路)布爾邏輯異或x yx,y同真假時結果為假&布爾邏輯與x & yx,

35、y都真時結果才為真|布爾邏輯或x | yx,y都假時結果才為假表表3-7 3-7 邏輯運算符邏輯運算符邏輯運算符與邏輯表達式記記下下來來邏輯運算符與邏輯表達式邏輯運算符與布爾邏輯運算符的區(qū)別邏輯運算符與布爾邏輯運算符的區(qū)別: :n邏輯運算符:邏輯運算符: & | 利用它們做邏輯運算時,運算時右邊的表達式有可能被忽略(短路)而不加執(zhí)行n布爾邏輯運算符:布爾邏輯運算符:&、| 、 利用它們做與、或、異或運算時,運算符左右兩邊的表達式總會被運算執(zhí)行,然后再對兩表達式的結果進行與、或運算e1 & e2e1 & e2false邏輯運算符與邏輯表達式boolean bool

36、ean b= x y & x+ = y- ;b= x y & x+ = y- ; / /x x為為4 4,y y為為4 4,b b為為falsefalse。 例如:例如:int x = 3, y = 5 ;int x = 3, y = 5 ;boolean boolean b= x y & b= x y & x+ = y-x+ = y- ; ; / /x x為為3 3,y y為為5 5,b b為為falsefalse。 短路短路邏輯運算符與邏輯表達式n邏輯表達式邏輯表達式:由邏輯運算符、關系表達式、邏輯值構成。例如:例如:intint x=12,y=13; x=

37、12,y=13;float a=1,b=2;float a=1,b=2;x = = y & a bx = = y & a b!(a = b)!(a = b)x y & (a+3) b | ! ( x = a )x y & (a+3) b | ! ( x = a )truetrue邏輯運算符與邏輯表達式n例例3-5 邏輯運算符邏輯運算符的應用例子的應用例子. .n程序是一個程序是一個application. .n 利用對話框,接受用戶從鍵盤輸入的兩個字符串數(shù)據(jù)。利用對話框,接受用戶從鍵盤輸入的兩個字符串數(shù)據(jù)。n 程序將把這兩個字符串數(shù)據(jù)轉化為布爾數(shù)值,并賦值給程序

38、將把這兩個字符串數(shù)據(jù)轉化為布爾數(shù)值,并賦值給兩個布爾型變量兩個布爾型變量a和和b;n 接著以接著以a和和b為操作數(shù)進行邏輯運算,并輸出運算結果為操作數(shù)進行邏輯運算,并輸出運算結果. .n 程序運行時,你可輸入任意兩個整數(shù),觀察程序運行的程序運行時,你可輸入任意兩個整數(shù),觀察程序運行的不同結果。不同結果。提示:提示:字符串轉換成字符串轉換成booleanbooleanBoolean.valueOf(String s).booleanValueBoolean.valueOf(String s).booleanValue();(); 例例3-5程序運行結果程序運行結果import javax.swi

39、ng.JOptionPane; public class LogicalOperator public static void main( String args ) String input1; String input2; boolean a,b; boolean ee; input1 = JOptionPane.showInputDialog( 輸入第一個布爾值 ); input2 = JOptionPane.showInputDialog( 輸入第二個布爾值 ); a = Boolean.valueOf(input1).booleanValue(); b = Boolean.value

40、Of(input2).booleanValue(); String s1=; s1+=a + & + b + = + (a&b)+n; s1+=a + | + b + = + (a|b)+n; s1+= ! + a + = + (!a)+n; s1+=a + & + b + = + (a&b)+n; s1+=a + | + b + = + (a|b)+n; s1+=a + + b + = + (ab); JOptionPane.showMessageDialog( null, s1, 邏輯運算結果, JOptionPane.PLAIN_MESSAGE ); 3.

41、3.5 位運算符 n位運算位運算:對操作數(shù)以二進制比特位(bit)為單位進行的操作和運算,位運算的操作數(shù)只能為整型和字符型數(shù)據(jù),結果都是整型量. 表表3-8 3-8 位運算符位運算符 求x和a各二進位與x & a位與&求x和a各二進位或x & a位或|求x和a各二進位異或x a位異或x各二進位右移a位,左邊的空位一律填零x a不帶符號的右移x各二進位左移a位x a左移 a右移將x各二進位取反x位反運算規(guī)則例運算運算符求x和a各二進位與x & a位與&求x和a各二進位或x & a位或|求x和a各二進位異或x a位異或x各二進位右移a位,左邊的空位一

42、律填零x a不帶符號的右移x各二進位左移a位x a左移 a右移將x各二進位取反x位反運算規(guī)則例運算運算符n單目運算符:對一個二進制數(shù)按位取反。例: 025:0000000000010101 025:1111111111101010按位與按位與 & &n舉例:計算 3 & 5 3: 0 0 0 0 0 0 1 1 5:(&) 0 0 0 0 0 1 0 13 & 5: 0 0 0 0 0 0 0 1n用途:n將某些位置0,其它位不變。 例如:將 char 型變量 a 的最低位置 0 : a = a & 0376;n取指定位。例如: char c;

43、int a; c = a & 0377; /取出 a 的低字節(jié):按位或按位或 | | n舉例: 計算 3 | 5 3: 0 0 0 0 0 0 1 1 5:(|) 0 0 0 0 0 1 0 13 | 5: 0 0 0 0 0 1 1 1n用途:n將某些位置1,其它位不變。例如:將 int 型變量 a 的低字節(jié)置 1 : a = a | 0 xff; 按位異或按位異或 n舉例:計算舉例:計算 071052071052 071: 071: 0 0 1 1 1 0 0 10 0 1 1 1 0 0 1 052 052:() 0 0 1 0 1 0 1 0() 0 0 1 0 1 0 1 0

44、 071052 : 071052 : 0 0 0 1 0 0 1 10 0 0 1 0 0 1 1n用途:用途:n使特定位翻轉(與使特定位翻轉(與0 0異或保持原值,與異或保持原值,與1 1異或取反)異或取反) 例如:要使例如:要使 01111010 01111010 低四位翻轉:低四位翻轉: 0 1 1 1 1 0 1 00 1 1 1 1 0 1 0 () ()0 0 0 0 1 1 1 10 0 0 0 1 1 1 10 1 1 1 0 1 0 10 1 1 1 0 1 0 1n左移運算()左移后,低位補0,高位舍棄。例如: (59) 0011 10111 0111 0110 (118)

45、 (59) 0011 10112 1110 1100 (236) 正數(shù)左移1位,擴大2倍1011 00111 0110 0110 (-77) (179)(102)程序中寫成: 591 592程序中寫成: -771 byte a=59;System.out.println(a1); a=59;System.out.println(a2);byte a=-17;System.out.println(a)右移后,低位:舍棄 高位:無符號數(shù):補0 有符號數(shù):補“符號位”例如: (59) 0011 10111 0001 1101 (29) (-69) 1011 10111 1101 1101 (-35)

46、69的原碼: 01000101 -69補=28-|-69|=187-35補=28-|-35|=221 正數(shù)右移1位,縮小2倍n無符號數(shù)無符號數(shù)右移運算符 ()右移后,低位:舍棄 高位:補0例如: (59) 0011 10111 0011 1101 (187)1011 10111 0101 1101(93)無符號數(shù)無符號數(shù)右移1位,縮小2倍程序中寫成: 591 1872int a=59;System.out.println(a1); a=187; /a=-69System.out.println(a1);import javax.swing.JOptionPane; public class B

47、itOperator public static void main( String args ) byte a=025,b=4; System.out.println(+a+=+(a); System.out.println(a+&+b+=+(a&b); System.out.println(a+|+6+=+(a|6); System.out.println(a+b+=+(ab); a=59; System.out.println(a+2+=+(a+2+=+(a1); a=-77; System.out.println(a+1+=+(byte)(a+1+=+(byte)(a1

48、); 表達式的值的類型是int,被轉換成byte運算結果運算結果:位運算的程序例子位運算的程序例子BitOperator .java:(77) 的原碼的原碼: 01001101(-77) 的補碼的補碼: 10110011-771: 1.111011001 (-39) 3.3.6 其它運算符 n條件運算符與條件條件運算符與條件表達式表達式 e1?e2:e3n 括號括號 ( )n方括號方括號 n 對象運算符對象運算符 instanceof boolean b = MyObject instanceof TextField; instanceof用來測定一個對象是否屬于某一個指定類或其子類的實例 條

49、件運算符與條件條件運算符與條件表達式表達式n條件運算符與條件條件運算符與條件表達式表達式 e1?e2:e3其中:e1 為 boolean 類型,e2與e3的類型相同n執(zhí)行順序:n若e1的值為true,e2的值為最終結果n若e1的值為false,e3的值為最終結果例如: y= x=0 ? x: -x /求|x| max= xy ? x: y /求x,y的較大者3.3.7 運算符的優(yōu)先級與結合性n表達式的運算次序表達式的運算次序:取決于表達式中各種運算符的優(yōu)先級。優(yōu)先級高的運算符先運算,優(yōu)先級低的運算符后運算,同一行中的運算符的優(yōu)先級相同。n運算符的結合性運算符的結合性: :決定了并列的相同運算符

50、的先后執(zhí)行順序。3-10 Java運算符的優(yōu)先級與結合性運算符的優(yōu)先級與結合性 右左= += -= *= /= %= =賦值運算14右左? :三目條件運算13左右|邏輯或12左右&邏輯與11左右|按位或,布爾邏輯或10左右按位異或9左右&按位與,布爾邏輯與8左右= = !=相等關系運算7左右 =關系運算6左右 移位運算5左右+ -算術加減運算4左右* / %算術乘除運算3右左+(正號) (負號) + - - !強制類型轉換符單目運算2左右. ( )最高優(yōu)先級1結合性運算符描述優(yōu)先級右左= += -= *= /= %= =賦值運算14右左? :三目條件運算13左右|邏輯或12左右

51、&邏輯與11左右|按位或,布爾邏輯或10左右按位異或9左右&按位與,布爾邏輯與8左右= = !=相等關系運算7左右 =關系運算6左右 移位運算5左右+ -算術加減運算4左右* / %算術乘除運算3右左+(正號) (負號) + - - !強制類型轉換符單目運算2左右. ( )最高優(yōu)先級1結合性運算符描述優(yōu)先級高高底底Java運算符的優(yōu)先級與結合性運算符的優(yōu)先級與結合性n例如: x y & ! z 相當于 ( x y ) & ( ! z ) x + y + z 等價于 ( x + y ) + z ! !x 等價于 !( ! x ) a b + 3 等價于 a (b

52、+ 3) 3.3.8 混合運算時數(shù)據(jù)類型的轉換 n當表達式中出現(xiàn)了多種類型數(shù)據(jù)的混合運算時,需要進行類型轉換。nJava的類型轉換是一種加寬轉換:n隱含轉換隱含轉換:從占用內(nèi)存較少的短數(shù)據(jù)類型轉化成占用內(nèi)存較多的長數(shù)據(jù)類型時,可以不做顯式的類型轉換聲明;n強制類型轉換強制類型轉換:而從較長的數(shù)據(jù)類型轉換成較短的數(shù)據(jù)類型時,必須做強制類型轉換。 例如例如, ,long lVallong lVal= =10001000; ;int ivalint ival=200;=200;lVallVal= =ivalival; ;Double d1=Double d1=123.5f123.5f; ;基本類型數(shù)

53、據(jù)占有的內(nèi)存寬度數(shù)據(jù)類型數(shù)據(jù)類型關鍵字關鍵字占用位數(shù)占用位數(shù)取值范圍取值范圍布爾型布爾型boolean8true, false字符型字符型char16u 0000 u FFFF 字節(jié)型字節(jié)型byte8-128127短整型短整型short16-3276832767整型整型int32-2147483648 2147483647長整型長整型long64-2-63263-1浮點型浮點型float321.40129846432481707e-453.40282346638528860e+38 雙精度型雙精度型double644.94065645841246544e-3241.79769313486231

54、570e+308d 混合運算時數(shù)據(jù)類型的轉換n算術運算符、賦值運算符、關系運算符、邏輯運算符和位運算符,這些二元運算符要求兩個操作數(shù)的類型一致。如果類型不一致,編譯系統(tǒng)會自動對數(shù)據(jù)進行類型轉換 n隱含轉換隱含轉換的規(guī)則的規(guī)則: 低 高 byte short char int float double混合運算時數(shù)據(jù)類型的轉換n強制類型轉換強制類型轉換:將表達式的類型強制性地轉換成某一數(shù)據(jù)類型。n強制類型轉換的格式: (數(shù)據(jù)類型)表達式 n通過強制類型轉換,可將數(shù)據(jù)范圍寬的數(shù)據(jù)轉換成范圍低的數(shù)據(jù),但這可能會導致溢出或精度的下降。 混合運算時數(shù)據(jù)類型的轉換n例例3-63-6數(shù)據(jù)轉換類型的代碼數(shù)據(jù)轉換

55、類型的代碼 int iValint iVal=258;=258;long lVallong lVal=1000;=1000;short sValshort sVal=12;=12;byte bValbyte bVal = 2; = 2;char cValchar cVal = a; = a;float fValfloat fVal = 5.67f; = 5.67f;double dValdouble dVal = .1234; = .1234;lVal=iVal; dVal = fVallVal=iVal; dVal = fVal; ; /自動轉換自動轉換, , lVallVal的值是的值是2

56、58258。dValdVal的值是的值是5.675.67 System.out.println(lVal+,+dVal);bVal=(byte) iVal; /*當值當值258被強制轉換為被強制轉換為byte變量時,其結果是變量時,其結果是258除以除以256的余數(shù)的余數(shù)2;*/System.out.println(bVal);iVal=(int)lVal; /強制轉換強制轉換iVal=cVal+1; /*自動轉換。自動轉換。 將將a對應的對應的16 位的位的Unicode值值97轉換為轉換為32位的位的int型型 ,與與1 相加,相加,iVal的值是的值是98*/System.out.pri

57、ntln(iVal);lVal=(long) fVal; /變量變量fVal 被強制轉換為被強制轉換為int型,舍棄了小數(shù)部分。型,舍棄了小數(shù)部分。LVal的值是的值是5System.out.println(lVal);dVal = (fVal * bVal) + (iVal / cVal) - (dVal * sVal); System.out.println(dVal); bVal = (byte) (bVal * 2);System.out.println(bVal); bVal = bValbVal = bVal * * 2 2 ; ; /Compiling Error. Cannot

58、 assign an int/Compiling Error. Cannot assign an int to a byte to a byte bValbVal = (byte) = (byte) (bVal(bVal * * 2) 2); /; / / /強制轉換強制轉換3.3.9 3.3.9 語句和塊語句和塊n一個基本的語句以分號; ;結尾。n語句包括:聲明語句、表達式語句、選擇語句、循環(huán)語句、跳轉語句、空語句、方法調(diào)用語句和復合語句。語句和塊語句和塊n1 1、表達式語句、表達式語句一個合法的表達式加上分號.n2 2、空語句、空語句空語句形式: 例如:a + b;a + b * c +

59、f; /這是一條空語句語句和塊語句和塊n3 3、復合語句(語句塊)復合語句(語句塊) 將多條語句用 括起來,就構成復合語句。例如, int x,y,z; x = 5;y = 6;z = x + y;3.4 算法的基本控制結構算法的基本控制結構算法的基本控制結構有三種:順序結構、選擇結構、循環(huán)結構.這三種基本結構就構成了程序的控制流程。例如,根據(jù)輸入的例如,根據(jù)輸入的x 值,求出值,求出y值:值: - 1 (x0)要統(tǒng)計出要統(tǒng)計出1+2+3+.+n1+2+3+.+n之和之和sum=0; sum=0; sum=sum+m;sum=sum+m; 重復做累加(m從1 到n)圖圖3-4 3-4 結構化程

60、序設計的三種基本結構結構化程序設計的三種基本結構 算法的基本控制結構算法的基本控制結構truefalsefalsetrue算法的基本控制結構算法的基本控制結構 與算法的基本控制結構相關的與算法的基本控制結構相關的Java語句語句: 分支語句:if-else, switch 循環(huán)語句:while, do-while, for 與程序轉移有關的其它語句:break, continue, return3.4.1分支語句 n分支語句提供了一種控制機制,使得程序根據(jù)相應的條件去執(zhí)行對應的語句.nif語句nswitch語句(1) if (表達式) 語句1例:if ( x y) z=x; else z=y;例: if (x0) y=1;else if (x=0) y=0;else if (x-10) y= -1; -10 x5) if (y5) System.out.println(“x and y are 5”);else System.out.println(“x is 5) if (y5) System.out.println(“x and y are

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論