版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第三章Java語言基礎(chǔ)第三章Java語言基礎(chǔ)1Java基本語法Java的標(biāo)識符、關(guān)鍵字、數(shù)據(jù)類型Java的常量與變量Java的各種運算符及表達(dá)式Java控制語句Java的數(shù)組和字符串本章內(nèi)容Java基本語法本章內(nèi)容23.1Java語言的基本語法Unicode字符集:16位編碼標(biāo)準(zhǔn)3.1.1標(biāo)識符(identifier)標(biāo)識符是賦予變量、常量、數(shù)組名、文件名類或方法、對象的名稱由字母、數(shù)字、_和$組成,其中字母可以是Unicode字符集中的字符,如大、小寫英文字母、漢字、日文片假名和朝鮮文等,數(shù)字為0到9標(biāo)識符的第一個字符不能是數(shù)字長度不限,但不宜過長區(qū)分大小寫不能用關(guān)鍵字3.1Java語言的基本語法Unicode字符集:16位編3在Java規(guī)范中約定:關(guān)鍵字、變量名、對象名、方法名、包名通常全部字母小寫;如果由多個單詞構(gòu)成標(biāo)識符,則首字母小寫,其后單詞首字母大寫,如toString;類名首字母大寫,如FirstJava;常量名全部字母均大寫,如BOOK。在Java規(guī)范中約定:4下面是幾個有效的標(biāo)識符:identifierthisoneUserName User_name_system_varl$max下面是幾個非法的變量名:3maxroom#class 指出哪些標(biāo)識符是不準(zhǔn)確的,說明原因here_therethisthatit2tol_it(變量名不能以數(shù)字開頭)(包含非法字符“#”)(“class”為保留字)下面是幾個有效的標(biāo)識符:(變量名不能以數(shù)字開頭)(包含非法字5Java語言中一些被賦以特定的含義、并用做專門用途的單詞稱為關(guān)鍵字所有Java關(guān)鍵字都是小寫的goto和const雖然從未使用,但也作被為Java關(guān)鍵字保留TURE、FALSE、NULL等都不是Java關(guān)鍵字3.1.2關(guān)鍵字(keyword)TURE、FALSE、NULL是合法的Java標(biāo)識符嗎?Java語言中一些被賦以特定的含義、并用做專門用途的單詞稱為6關(guān)鍵字-1原始數(shù)據(jù)類型byteshortintlongfloatdoublecharboolean循環(huán)關(guān)鍵字dowhileforbreakcontinue分支關(guān)鍵字ifelseswitchcasedefaultbreak方法、變量和類修飾符privatepublicprotectedfinalstaticabstractsynchronizedvolatile關(guān)鍵字-1原始數(shù)據(jù)類型分支關(guān)鍵字7異常處理trycatchfinallythrowthrows對象相關(guān)關(guān)鍵字 newextendsimplementsclassinstanceofthissuperinterface
字面值常量falsetruenull方法相關(guān)關(guān)鍵字returnvoid包相關(guān)關(guān)鍵字packageimport關(guān)鍵字-2異常處理字面值常量關(guān)鍵字-28圓括號“()“:用于方法參數(shù)、控制語句、數(shù)據(jù)類型轉(zhuǎn)換中括號“[]“:用于數(shù)組大括號"{}“:用于構(gòu)造語句塊逗號“,”:在方法聲明或調(diào)用時的參數(shù)列表中用于分隔多個參數(shù),也可在一條聲明語句中同時聲明多個屬性或局部變量時起分隔作用分號“;”:Java語句必須以分號作為結(jié)束標(biāo)記,for循環(huán)語句中使用分號來分隔不同的成份空格"“:Java程序源代碼中各組成部分之間可以插入任意數(shù)量的空格,包括換行圓點“.“:用于訪問對象成員(屬性或方法)3.1.3分隔符圓括號“()“:用于方法參數(shù)、控制語句、數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型布爾(boolean)數(shù)值類型類數(shù)組字符(char)字節(jié)(byte)短整數(shù)(short)整數(shù)(int)浮點類型單精度浮點數(shù)(float)雙精度浮點數(shù)(double)數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型枚舉接口定點類型長整數(shù)(long)圖3-1Java數(shù)據(jù)類型3.1.4數(shù)據(jù)類型布爾(boolean)數(shù)值類型類數(shù)組字符10邏輯類型只有兩個取值:true和false8位注意:Java語言中boolean類型只允許使用boolean值,在整數(shù)類型和boolean類型之間無轉(zhuǎn)換計算
1.布爾型booleanbool.java邏輯類型1.布爾型booleanbool.java112.整數(shù)類型:byte,short,int,long所有Java編程語言中的整數(shù)類型都是帶符號的數(shù)字,不存在無符號整數(shù)長度不變類型長度字節(jié)數(shù)取值范圍byte8位1字節(jié)-128~127short16位2字節(jié)-32768~32767int32位4字節(jié)-2147483648~2147483647long64位8字節(jié)-9223372036854775808~92233720368547758072.整數(shù)類型:byte,short,int,long所有12整型常量:十進(jìn)制:123、234八進(jìn)制:077、011//首位為“0”十六進(jìn)制:0x12ABC//首位為“0x”整型常量默認(rèn)為int長整型常量:后面加L或lTestInteger.java整型常量:TestInteger.java13float型:常量:123.34f、12.76F、123.0fdouble型:常量:123.34d、123.43(d可以省略)、123.0D、2.08E25浮點型常量默認(rèn)為double
3.浮點類型float,double浮點類型長度字節(jié)數(shù)取值范圍float32位4字節(jié)-3.40282347E+38F~3.40282347E+38Fdouble64位8字節(jié)-1.7976931348623157E+308~1.7976931348623157E+308Sa.javafloat型:3.浮點類型float,double浮點14使用char類型可表示單個字符,用單引號括起來16位字符常量:用英文單引號括起來的單個字符。如:’a’、’漢’用英文單引號括起來的十六進(jìn)制字符代碼值,格式為:’\u****’,其中\(zhòng)u是約定的前綴,****為4位十六進(jìn)制數(shù),是該字符在unicode字符集中的序號,如:’\u0061’、’\u004b’。轉(zhuǎn)義字符
4.字符類型char
轉(zhuǎn)義字符含義\’單引號\”雙引號\b退格\t制表符\r回車符\n換行符\\反斜杠轉(zhuǎn)義字符.java使用char類型可表示單個字符,用單引號括起來4.字符類型15注意:用雙引號引用的文字,就是我們平時所說的字符串類型字符串類型不是原始類型,而是一個類(class)——String類String類被用來表示字符序列注意:165.類型轉(zhuǎn)換將一種數(shù)據(jù)類型的常量或變量轉(zhuǎn)換到另外的一種數(shù)據(jù)類型,稱為類型轉(zhuǎn)換類型轉(zhuǎn)換有兩種:隱式類型轉(zhuǎn)換(自動類型轉(zhuǎn)換)顯式類型轉(zhuǎn)換(強制類型轉(zhuǎn)換)5.類型轉(zhuǎn)換將一種數(shù)據(jù)類型的常量或變量轉(zhuǎn)換到另外的一種數(shù)據(jù)類17(1)隱式類型轉(zhuǎn)換
在實際中常會將一種類型的值賦給另外一種變量類型。如果這兩種類型是兼容的,Java將執(zhí)行自動類型轉(zhuǎn)換。簡單的說,當(dāng)把占用位數(shù)較短的數(shù)據(jù)轉(zhuǎn)化成占用位數(shù)較長的數(shù)據(jù)時,Java執(zhí)行自動類型轉(zhuǎn)換,不需要在程序中作特別的說明。例如inti=10;longj=i;類型轉(zhuǎn)換從低到高級的優(yōu)先關(guān)系:
byteshortintlongfloatdouble
char低高(1)隱式類型轉(zhuǎn)換在實際中常會將一18(2)強制類型轉(zhuǎn)換不是所有的數(shù)據(jù)類型都允許隱式自動轉(zhuǎn)換。例如,下面的語句把long型數(shù)據(jù)賦值給int型數(shù)據(jù),在編譯時就會發(fā)生錯誤:longi=10;intj=i;//精度失真改為:longi=10;intj=(int)i;
(2)強制類型轉(zhuǎn)換不是所有的數(shù)據(jù)類型都19(數(shù)據(jù)類型)變量名經(jīng)過強制類型轉(zhuǎn)換,將得到一個在“()”中聲明的數(shù)據(jù)類型的數(shù)據(jù),該數(shù)據(jù)是從指定變量所包含的數(shù)據(jù)轉(zhuǎn)換而來的。值得注意的是,指定變量本身不會發(fā)生任何變化。注意:布爾型不能和其它類型進(jìn)行轉(zhuǎn)換;優(yōu)先級高的值—>優(yōu)先級低的值——精度失真
強制類型轉(zhuǎn)換的格式是:(數(shù)據(jù)類型)變量名強制類型轉(zhuǎn)換的格式是:20賦值時,必須按照”變量類型的優(yōu)先級高于所賦數(shù)值的優(yōu)先級”的原則,否則出錯。例:floatf=8.36;(出錯)改為:floatf=(float)8.36;或:floatx=8.36f;或:doubled=8.36;賦值時,必須按照”變量類型的優(yōu)先級高于所賦數(shù)值的21表3-5基本數(shù)據(jù)類型的轉(zhuǎn)換charch;byteb;shorts;inti;longk;floatf;doubled;charch;ch=(char)b;ch=(char)s;ch=(char)i;ch=(char)k;ch=(char)f;ch=(char)d;byteb;b=(byte)ch;b=(byte)s;b=(byte)i;b=(byte)k;b=(byte)f;b=(byte)dshorts;s=(short)ch;s=b;s=(short)i;s=(short)k;s=(short)f;s=(short)d;inti;i=ch;i=b;i=s;i=(int)k;i=(int)f;i=(int)d;longk;k=ch;k=b;k=s;k=i;k=(long)f;k=(long)d;floatf;f=ch;f=b;f=s;f=i;f=k;f=(float)d;doubled;d=ch;d=b;d=s;d=i;d=k;d=f;表3-5基本數(shù)據(jù)類型的轉(zhuǎn)換charch;byteb;sh22類型提升下面的代碼能通過編譯嗎?bytea=100;byteb=100;bytec=100;inty=a*b*csystem.out.println(y);所有的byte、short型值被提升到int若有一個操作數(shù)是long型,整個表達(dá)式被提升到long型若有一個操作數(shù)是float型,整個表達(dá)式被提升到float型若有一個操作數(shù)是double型,整個表達(dá)式被提升到double型類型提升下面的代碼能通過編譯嗎?所有的byte、short型23常量:程序執(zhí)行中其值不能改變的量直接常量符號常量:常量名一般大寫finalfloatPI=3.14;publicfinalintMAX=10;變量:在程序執(zhí)行期間可根據(jù)需要經(jīng)常變化的值必須先聲明和初始化(賦初值),然后才可以使用[修飾符]<類型><變量名>[=初始化表達(dá)式];intx,y,z=10;publicStringstr1=“姓名”;3.1.5常量和變量常量:程序執(zhí)行中其值不能改變的量3.1.5常量和變量24變量的四個基本屬性變量名變量的數(shù)據(jù)類型變量的當(dāng)前值變量存儲單元的地址變量的四個基本屬性25上機練習(xí)編寫Java應(yīng)用程序,測試并體會各種原始類型數(shù)據(jù)的定義,賦值和輸出。 輸出可采用下述形式的語句:
//其中x是變量名,如a,b,c等。使用char型的三種常量聲明方式為char型變量賦值并輸出。System.out.println("x="+x);【例3-4】VariableDeclaration.java上機練習(xí)編寫Java應(yīng)用程序,測試并體會各種原始類型數(shù)據(jù)的定263.1.6運算符與表達(dá)式運算符:表示運算類型操作數(shù):參與運算Java常用運算符:算術(shù)運算符:+,-,*,/,%,++,--關(guān)系運算符:>,<,>=,<=,==,!=布爾邏輯運算符:!,&,|,^,&&,||位運算符:&,|,^,~,>>,<<,>>>賦值運算符:= 擴展賦值運算符:+=,-=,*=,/=條件運算符:?:實例運算符:instanceof3.1.6運算符與表達(dá)式運算符:表示運算類型271.運算符算術(shù)運算符:加號(+)、減號(-)、乘號(*)除號(/)、取模(%)、自增運算符(++)、自減運算符(--)注意:整數(shù)除法會直接砍掉小數(shù),而不是進(jìn)位取模運算結(jié)果的符號與第一個操作數(shù)的符號相同取模運算符%的操作數(shù)可以為浮點數(shù):37.2%10=7.21.運算符算術(shù)運算符:28Java對加運算符進(jìn)行了擴展,使它能夠進(jìn)行字符串的連接,如:“abc”+“def”的運算結(jié)果為串"abcdef"前綴++、--與后綴++、--的區(qū)別:++i在使用i之前,使i的值加1--i在使用i之前,使i的值減1
i++在使用i之后,使i的值加1i--在使用i之后,使i的值減1例如:inta=5,x,y,m,n;x=++a;y=a--;m=a++;n=a--;程序依次執(zhí)行以后x,y,m,n,a的值是多少?Java對加運算符進(jìn)行了擴展,使它能夠進(jìn)行字符串的連接,如:29關(guān)系運算符:>、<、>=、<=、==、!=二元運算符,用來比較任意類型的兩個值,返回布爾類型的值true或false如:10<9//結(jié)果為false3!=5//結(jié)果為true建議不要直接比較兩個浮點數(shù)是否相等Math.abs(f1-f2)<ee可以是一個大于0且適當(dāng)小的浮點數(shù)
關(guān)系運算符:>、<、>=、<=、==、!=30布爾邏輯運算符:&、|、!、^、&&、||&、|、^、&&、||為二元運算符,!為一元運算符邏輯運算符可以用來連接關(guān)系表達(dá)式,如:2>8&&8>2^:異或,異真同假&&、||:條件與、條件或(短路與、短路或)如果||左邊表達(dá)式的值為true,則整個表達(dá)式的結(jié)果為true,不必再計算右邊的表達(dá)式如果&&左邊表達(dá)式的值為false,則整個表達(dá)式的結(jié)果為false,不必再計算右邊的表達(dá)式布爾邏輯運算符:&、|、!、^、&&、||31表3-6布爾邏輯運算真值表OP1OP2OP1&&OP2OP1||OP2OP1^OP2!OP1OP1&OP2OP1|OP2falsefalsefalsefalsefalsetruefalsetruefalsetruetruetruetruefalsefalsetruetruefalsetruetruetruetruefalsefalse表3-6布爾邏輯運算真值表OP2OP1&&OP2OP1||32位運算符:&、|、~、^、>>、>>>和<<用于對整數(shù)或字符的二進(jìn)制位進(jìn)行布爾運算按位與運算(&):0&0=0,0&1=0,1&0=0,1&1=1按位或運算(|):0|0=0,0|1=1,1|0=1,1|1=1位運算符:&、|、~、^、>>、>>>和<<33按位異或運算(^):異真同假0^0=0,0^1=1,1^0=1,1^1=0按位取反運算(~):~0=1,~1=0左移位運算符(<<):執(zhí)行左移位。右邊的空位補0。在不產(chǎn)生溢出的情況下,數(shù)據(jù)左移1位相當(dāng)于乘以2:inta=64,b;//a的二進(jìn)制表示1000000b=a<<1; //b=128按位異或運算(^):異真同假34帶符號右移運算符(>>):左邊按符號位補0或1。例如: inta=16,b;//a的二進(jìn)制表示10000 b=a>>2; //b=4不帶符號位的右移(>>>):左邊補0帶符號右移運算符(>>):左邊按符號位補0或1。例如:35賦值運算符:=二元運算,左邊的操作元為變量,不能是常量復(fù)合賦值操作:x+=10=與==的區(qū)別!賦值運算符:=36三元條件運算符(?:):x?y:z;運算的規(guī)則是:先計算表達(dá)式x的值,若x為真,則整個運算的結(jié)果是表達(dá)式y(tǒng)的值;若x為假,則整個運算的結(jié)果是表達(dá)式z的值三元條件運算符(?:):37從兩個數(shù)中找出較大的數(shù)的功能。inta=3,b=4;intmax=a>b?a:b;
max的值為4。三元條件運算是可以嵌套的,如:以下語句中,max表示的是a、b、c三個數(shù)中的最大值,其值為5
inta=3,b=4,c=5;intmax=(a>b?a:b)>c?(a>b?a:b):c;從兩個數(shù)中找出較大的數(shù)的功能。inta=3,b=4,38實例運算符:instanceof一元運算符判斷一個指定對象是否是一個指定類(或它的子類)的實例:objinstanceofmyclass其中obj是一個對象,myclass是一個類,若obj是myclass類的對象,則運算結(jié)果是true,否則是false實例運算符:instanceof392.表達(dá)式用Java運算符將操作數(shù)連接起來的、符合Java語法規(guī)則的式子運算符的優(yōu)先級決定了表達(dá)式中多個運算執(zhí)行的先后順序,優(yōu)先級高的先運算,優(yōu)先級低的后運算,優(yōu)先級相同的則由運算符的結(jié)合性確定其計算順序運算符的結(jié)合性決定了同一優(yōu)先級的多個運算符的運算順序,包括左結(jié)合(從左向右)和右結(jié)合(從右向左)可以用圓括號改變表達(dá)式中運算符的運算次序,圓括號中的表達(dá)式稱為子表達(dá)式
2.表達(dá)式用Java運算符將操作數(shù)連接起來的、符合Java語40表3-8Java運算符列表優(yōu)先級分類運算符結(jié)合性描述1(高)二元.[]()左結(jié)合成員、括號new++--后置自增、自減2++---~!右結(jié)合前置自增、自減,取負(fù),取反內(nèi)存分配3二元*/%左結(jié)合乘、除4+-加、減5<<>>>>>移位6<><=>=instanceof關(guān)系、實例7==!=關(guān)系8&邏輯9^10|11&&12||13三元?:右結(jié)合條件14二元=+=-=*=/=%=&=^=|=<<=>>=>>>=賦值15(低)二元,左結(jié)合逗號表3-8Java運算符列表分類運算符結(jié)合性描述1(高)二元413.2控制語句
1.java語言語句的分類:方法調(diào)用語句:如System.out.println(“Hellojava”);表達(dá)式語句:由一個表達(dá)式構(gòu)成一個語句,如賦值語句:intx=2;復(fù)合語句:用{}把一些語句括起來構(gòu)成復(fù)合語句package語句和import語句:package語句指明了該源文件定義的類所在的包import語句可以引入所需要的類空語句:;控制語句3.2控制語句1.java語言語句的分類:42控制語句順序結(jié)構(gòu)選擇語句循環(huán)語句轉(zhuǎn)移語句表達(dá)式語句空語句復(fù)合語句條件語句if開關(guān)語句switchwhiledo-whileforbreakcontinuereturn控制語句順序結(jié)構(gòu)選擇語句循環(huán)語句轉(zhuǎn)移語句表達(dá)式語句空語句復(fù)合433.2.1順序語句順序結(jié)構(gòu)語句包括:表達(dá)式語句空語句復(fù)合語句。語句1…語句n3.2.1順序語句順序結(jié)構(gòu)語句包括:語句1…語句n443.2.2選擇語句又稱條件語句,通過判定條件的真假來決定執(zhí)行某個分支語句if單分支語句:if(表達(dá)式){ 語句組;}3.2.2選擇語句又稱條件語句,通過判定條件的真假來決定執(zhí)行45二路分支結(jié)構(gòu):
if(表達(dá)式){語句組1}else{語句組2}例如:if(a>b)c=a;elsec=b;布爾表達(dá)式?語句1語句2truefalse入口點出口點【例3-5】MaxMin.java二路分支結(jié)構(gòu):布爾表達(dá)式?語句1語句2truefalse入口46if語句嵌套:if(表達(dá)式1){語句組1;}elseif(表達(dá)式2){語句組2;}elseif(表達(dá)式3)……elseif(表達(dá)式n){語句組n}else{語句組n+1}【例3-7】StatementNestedScore.javaif語句嵌套:【例3-7】47switch語句:switch(表達(dá)式){case判斷值1:語句塊1;break;case判斷值2:語句塊2;break;case判斷值3:語句塊3;break;……case判斷值n:語句塊ndefault:語句塊n+1;}表達(dá)式語句1語句n值1入口點出口點圖3-5switch結(jié)構(gòu)值2值n語句2…switch語句:表達(dá)式語句1語句n值1入口點出口點圖3-548switch后面括號中表達(dá)式的值必須是符合byte,char,short,int類型的常量表達(dá)式,而不能用浮點類型或long類型,也不能為一個字符串。一個switch語句可以代替?zhèn)€if—else語句組成的分支結(jié)構(gòu),而switch語句從思路上顯得更清晰?!纠?-9】SwitchSeason.javaswitch后面括號中表達(dá)式的值必須是符合byte,cha49While循環(huán)語句while(布爾表達(dá)式){
一條語句或者多條語句;}3.2.3循環(huán)語句布爾表達(dá)式?語句truefalse入口點出口點【例3-10】WhileSum.javaWhile循環(huán)語句3.2.3循環(huán)語句布爾表達(dá)式?語句tru50do-while語句
do
{
一條語句或者多條語句;
}while(布爾表達(dá)式);布爾表達(dá)式?語句false入口點出口點true【例3-12】DoWhileSum.javado-while語句
do
{
一條語句或者多條語句51for循環(huán)語句for(表達(dá)式1;表達(dá)式2;表達(dá)式3){
一條語句或者多條語句;}表達(dá)式2表達(dá)式1false入口點出口點圖3-8for語句執(zhí)行流程true語句表達(dá)式3【例3-15】ForSum.javafor循環(huán)語句表達(dá)式2表達(dá)式1false入口點出口點圖3-852return格式1:return;一般若方法為void類型,return可省略格式2:return返回值;該格式返回值可以是基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,但必須和方法的類型一致,否則編譯無法通過3.2.4轉(zhuǎn)移語句return3.2.4轉(zhuǎn)移語句53break終止switch語句的執(zhí)行,跳出switch語句,執(zhí)行switch語句后面的語句;終止循環(huán)語句序列,跳出循環(huán)結(jié)構(gòu),即跳出while、for等語句;與標(biāo)號配合使用從內(nèi)層循環(huán)或者內(nèi)層語句塊退出【例3-18】BreakStatement.javabreak【例3-18】54continue用于循環(huán)結(jié)束本次循環(huán),轉(zhuǎn)入下一次循環(huán)與標(biāo)號配合使用中斷內(nèi)層循環(huán)【例3-19】ContinueStatement.javacontinue【例3-19】553.3數(shù)組3.3.1一維數(shù)組按序排列的同類數(shù)據(jù)元素的集合稱為數(shù)組
一維數(shù)組的定義:數(shù)組類型[]數(shù)組名或數(shù)組類型數(shù)組名[]例如:intstudent[];int[]student;int[]c,d,e;intc[],d[],e[];推薦前者聲明時不能指定數(shù)組長度3.3數(shù)組3.3.1一維數(shù)組推薦前者聲明時不能指定數(shù)組長56用new初始化一維數(shù)組使用new分配內(nèi)存空間,并按照數(shù)組的類型,為每一個數(shù)組元素建立默認(rèn)值。格式:數(shù)組名=new數(shù)組元素的類型[數(shù)組元素的個數(shù)]例如:
inta[]; a=newint[6]
或
inta[]=newint[6];
或 inta[]=newint[]{1,2,3,4,5,6};
動態(tài)初始化有確定值初始化時不能指定數(shù)組長度new時必須指定數(shù)組長度用new初始化一維數(shù)組使用new分配內(nèi)存空間,并按照數(shù)組的類57獲取一維數(shù)組元素個數(shù)Java語言自動為每個數(shù)組變量提供length屬性保存數(shù)組存儲單元個數(shù)數(shù)組名.length例如:
inta[]=newint[6]; intl=a.length;獲取一維數(shù)組元素個數(shù)Java語言自動為每個數(shù)組變量提供len58一維數(shù)組元素的引用和運算引用格式:數(shù)組名[下標(biāo)]inta[]=newint[10];//創(chuàng)建數(shù)組intb=a[0]+a[9];//使用數(shù)組元素數(shù)組下標(biāo)為從0到9。如果使用了a[10],程序運行時將提示錯誤:java.lang.ArrayIndexOutOfBoundsException一維數(shù)組元素的引用和運算引用格式:數(shù)組名[下標(biāo)]59第1章-數(shù)據(jù)庫概論課件60可以在聲明數(shù)組的同時,給數(shù)組元素賦初值。所賦初值的個數(shù)決定數(shù)組元素的個數(shù)格式:數(shù)據(jù)類型數(shù)組名[]={初值表}例如:inta[]={1,2,3,4,5,6};賦初值初始化數(shù)組靜態(tài)初始化不能指定數(shù)組長度可以在聲明數(shù)組的同時,給數(shù)組元素賦初值。所賦初值的個數(shù)決定數(shù)61使用new動態(tài)分配存儲單元后,將自動對數(shù)組元素進(jìn)行初始化數(shù)據(jù)類型初始化值數(shù)據(jù)類型初始化值byte、short、int、long0char‘\u0000’float0.0fbooleanfalsedouble0.0引用數(shù)據(jù)類型null使用new動態(tài)分配存儲單元后,將自動對數(shù)組元素進(jìn)行初始化數(shù)62例:求數(shù)組元素的最小值classqiumin{ publicstaticvoidmain(Stringargs[]){ inta[]={5,8,2,4,1,9,78};//通過賦初值初始化數(shù)組 System.out.println("Theminis:"+minnum(a)); } staticintminnum(intnum[]){ intmin=num[0]; for(inti=0;i<num.length;i++){ if(min>num[i]) min=num[i]; } returnmin; }}public呢?源文件名?能編譯嗎?編譯后的類文件名?能執(zhí)行嗎?例:求數(shù)組元素的最小值classqiumin{public63【例3-20】使用new創(chuàng)建有10個整數(shù)元素的數(shù)組//InitArray.javapublicclassInitArray{ publicstaticvoidmain(Stringargs[]) { intarray[];array=newint[10];System.out.printf("%s%8s\n","數(shù)組元素","對應(yīng)的值");for(inti=0;i<array.length;i++)System.out.printf("%5d%8d\n",i,array[i]); }}intarray[]=newint[10];【例3-20】使用new創(chuàng)建有10個整數(shù)元素的數(shù)組//Ini64【例3-21】使用new創(chuàng)建有10個整數(shù)元素的數(shù)組//InitArray1.javapublicclassInitArray1{ publicstaticvoidmain(Stringargs[]){
intarray[]={32,27,64,18,95,14,90,70,60,37}; System.out.printf("%s%8s\n","數(shù)組元素","對應(yīng)的值");for(inti=0;i<array.length;i++)
System.out.printf("%5d%8d\n",i,array[i]);}}數(shù)組的遍歷for(inti:array)
System.out.printf("%8d\n",i);foreach循環(huán);循環(huán)array中的每個元素【例3-21】使用new創(chuàng)建有10個整數(shù)元素的數(shù)組//Ini65【例3-22】用數(shù)組分析調(diào)查結(jié)果//StudentPoll.java
publicclassStudentPoll{publicstaticvoidmain(Stringargs[]){intresponses[]={1,2,6,4,8,5,9,7,8,10,1,6,3,8,6,10, 3,8,2,7,6,5,7,6,8,6,7,5,6,6,5,6,7,5,6,4,8,6,8,10};//聲明長度為11的數(shù)組,用于統(tǒng)計1-10的打分人數(shù)intfrequency[]=newint[11];for(inti=0;i<responses.length;i++)//統(tǒng)計1-10中的值并把相應(yīng)的結(jié)果保存到frequency數(shù)組中
++frequency[responses[i]];System.out.printf("%s%10s\n","打分值","多少人次");for(intj=1;j<frequency.length;j++)//輸出分析結(jié)果System.out.printf("%6d%10d\n",j,frequency[j]);}}要求:40名學(xué)生對某個食堂的飯菜質(zhì)量進(jìn)行1~10的打分(1表示非常差,10是非常好)。使用數(shù)組將40個結(jié)果輸入整型數(shù)組,并對打分結(jié)果進(jìn)行分析?!纠?-22】用數(shù)組分析調(diào)查結(jié)果//StudentPoll663.3.2二維數(shù)組數(shù)組元素中的值是數(shù)組即為多維數(shù)組二維數(shù)組較常用二維數(shù)組聲明格式:數(shù)組類型數(shù)組名[][]或數(shù)組類型[][]數(shù)組名例如:
intarray_name[][]; 或 int[][]array_name;
聲明時不能指明數(shù)組長度3.3.2二維數(shù)組數(shù)組元素中的值是數(shù)組即為多維數(shù)組聲明時不能67二維數(shù)組的初始化聲明的同時進(jìn)行初始化:數(shù)據(jù)類型數(shù)組名[][]=new數(shù)據(jù)類型[行數(shù)][列數(shù)]或數(shù)據(jù)類型[][]數(shù)組名=new數(shù)據(jù)類型[行數(shù)][列數(shù)]例如: inta[][]=newint[5][6];或 int[][]a=newint[5][6];new時必須指明數(shù)組長度二維數(shù)組的初始化聲明的同時進(jìn)行初始化:new時必須指明數(shù)68通過賦初值初始化二維數(shù)組格式:數(shù)據(jù)類型數(shù)組名[][]={{初值表},{初值表},…,{初值表}}例如:inta[][]={{65,34,78},{81,56,92},{56,87,90},{92,69,75}}通過賦初值初始化二維數(shù)組格式:69二維數(shù)組的引用和運算二維數(shù)組元素的引用格式為: 數(shù)組名[下標(biāo)1][下標(biāo)2]下標(biāo)1,下標(biāo)2分為二維數(shù)組的第一、二維下標(biāo),同一維數(shù)組一樣,也可為整型常量和表達(dá)式,數(shù)組下標(biāo)從0開始二維數(shù)組元素個數(shù):數(shù)組名.length——數(shù)組的行數(shù)數(shù)組名[i].length——數(shù)組的列數(shù)二維數(shù)組的引用和運算二維數(shù)組元素的引用格式為:70【例3-23】二維數(shù)組使用//TwoDimensionalArray.java//使用二維數(shù)組存儲數(shù)據(jù)并輸出二維數(shù)組中的元素。
publicclassTwoDimensionalArray{ publicstaticvoidmain(Stringargs[]){intarray1[][]={{10,2,30},{20,5,60}}; intarray2[][]={{11,21},{31},{32,5,61}};System.out.println("數(shù)組array1的數(shù)組元素為:");for(introw=0;row<array1.length;row++){ for(intcolumn=0;column<array1[row].length;column++) System.out.println(array1[row][column]);}System.out.println("數(shù)組array2的數(shù)組元素為:"); for(introw=0;row<array2.length;row++){ for(intcolumn=0;column<array2[row].length;column++) System.out.println(array2[row][column]);}}}【例3-23】二維數(shù)組使用//TwoDimensionalA71例:輸出二維數(shù)組各元素的值
classQ{ publicstaticvoidmain(Stringargs[]){inta[][]={{1,2,3},{4,5,6},{7,8,9}};System.out.println("數(shù)組a各元素的值為:");for(inti=0;i<3;i++){for(intj=0;j<3;j++)System.out.print(a[i][j]+"\t");
System.out.println();
}}}例:輸出二維數(shù)組各元素的值classQ{72不規(guī)則二維數(shù)組為二維數(shù)組申請存儲空間,既可以一次申請所需的全部空間,也可以分多次申請。例如: intmat[][]=newint[2][3];//一次申請二維數(shù)組的全部空間多次申請空間的語句序列如下,與上述語句效果相同:intmat[][];mat=newint[2][];mat[0]=newint[3];mat[1]=newint[3];mat有2個元素,每個元素都是int類型的一維數(shù)組若令mat[1]=newint[2];mat[0]與mat[1]長度不等,即mat的兩行長度不等,成為不規(guī)則數(shù)組不規(guī)則二維數(shù)組為二維數(shù)組申請存儲空間,既可以一次申請所需的73第1章-數(shù)據(jù)庫概論課件743.4字符串
3.4.1聲明字符串變量Java使用java.lang包中的String類來創(chuàng)建一個字符串變量。因此,字符串變量是類類型變量,是一個對象,某個具體的字符串是String類的一個實例。3.4字符串3.4.1聲明字符串變量75聲明及初始化聲明格式1:
Stringname;//聲明一個String類的變量(對象)name=newString(“沈陽小”);//申請分配空間或者
Stringname=newString(“沈陽小”);聲明格式2:
Stringname;name="沈陽小";或者Stringname="沈陽小";一般習(xí)慣使用格式2聲明及初始化聲明格式1:一般習(xí)慣使用格式276(1)字符串賦值:可以為其賦一個字符串常量,也可以將一個字符串變量或表達(dá)式的值賦值給字符串變量:S1=“Chinesepeople”;S2=S1;S3=“alotof“+S2;運算符“+”的將前后兩個字符串連接起來。3.4.2字符串的運算(1)字符串賦值:3.4.2字符串的運算77(2)字符串連接:“+”可以將兩個字符串連接起來:Stringstr="中"+"國";//字符串str的值為"中國"str1+="efgh";只有+=能用于字符串變量,其它復(fù)合賦值運算符行str1-=“efgh”;//語法錯誤當(dāng)字符串與其它類型的值執(zhí)行連接運算時,Java自動將其它類型轉(zhuǎn)換為字符串:inti=96;Stringstr="Java程序設(shè)計考分為"+i;//str的值為"Java程序設(shè)計考分為96"Stringstr="Java程序設(shè)計實訓(xùn)成績?yōu)?+'A';//str的值為"Java程序設(shè)計實訓(xùn)成績?yōu)锳
"(2)字符串連接:78(3)字符串關(guān)系運算:按照字符串中的字符次序依次比較,結(jié)果確定,就停止比較:"ABZ"<"ACX";//結(jié)果為true,由第2個字符得到比較結(jié)果"ABC">"A";//結(jié)果為true,較長的字符串較長字符串和字符不能比較(3)字符串關(guān)系運算:793.4.3String類的常用方法方法說明length()返回字符串的長度equals(ObjectanObject)將給定字符串與當(dāng)前字符串相比較,若相等返回true,否則返回falsesubstring(intbeginIndex)返回字符串中從beginIndex開始的子串substring(intbeginIndex,intendIndex)返回從beginIndex開始到endIndex的子串charAt(intindex)返回index指定位置的字符indexOf(Stringstr)返回str在字符串中第一次出現(xiàn)的位置replace(charoldChar,charnewChar)以newChar字符替換串中所有oldChar字符trim()去掉字符串的首尾空格3.4.3String類的常用方法方法說明length()80【例3-25】使用String類中的方法判斷回文字符串/*算法一:分別從前向后和從后向前依次獲得原串str的一個字符ch1、ch2,比較ch1和ch2,如果不等,則肯定不是,yes=false,立即退出循環(huán),否則繼續(xù)比較,直到字符全部比較完,yes仍為true,才能肯定str是回文串*/publicclassRotorString{publicstaticvoidmain(Stringargs[]){Stringstr="rotor";if(args.length>0)//獲取命令行參數(shù),str=args[0];System.out.println("str="+str); //算法一:booleanyes=true;intn=str.length();//獲取字符串長度inti=0;charch1,ch2;while(yes&&(i<n/2)){ch1=str.charAt(i);//獲取最前的字符ch2=str.charAt(n-i-1);//獲取最后的字符System.out.println("ch1="+ch1+"ch2="+ch2);if(ch1==ch2)i++;//比較兩個字符 elseyes=false;}
System.out.println(“算法一:”+yes);
}}/*算法二:將原串str反轉(zhuǎn)成temp串,再比較兩串,若相等則是回文字符串*/Stringtemp="",sub1="";for(i=0;i<n;i++){sub1=str.substring(i,i+1);//獲取子串
temp=sub1+temp;//連接字符串
}System.out.println("temp="+temp);System.out.println(“算法二:”+str.equals(temp));//比較字符串【例3-25】使用String類中的方法判斷回文字符串/*81本章小結(jié)基本數(shù)據(jù)類型控制語句數(shù)組字符串本章小結(jié)基本數(shù)據(jù)類型82第三章Java語言基礎(chǔ)第三章Java語言基礎(chǔ)83Java基本語法Java的標(biāo)識符、關(guān)鍵字、數(shù)據(jù)類型Java的常量與變量Java的各種運算符及表達(dá)式Java控制語句Java的數(shù)組和字符串本章內(nèi)容Java基本語法本章內(nèi)容843.1Java語言的基本語法Unicode字符集:16位編碼標(biāo)準(zhǔn)3.1.1標(biāo)識符(identifier)標(biāo)識符是賦予變量、常量、數(shù)組名、文件名類或方法、對象的名稱由字母、數(shù)字、_和$組成,其中字母可以是Unicode字符集中的字符,如大、小寫英文字母、漢字、日文片假名和朝鮮文等,數(shù)字為0到9標(biāo)識符的第一個字符不能是數(shù)字長度不限,但不宜過長區(qū)分大小寫不能用關(guān)鍵字3.1Java語言的基本語法Unicode字符集:16位編85在Java規(guī)范中約定:關(guān)鍵字、變量名、對象名、方法名、包名通常全部字母小寫;如果由多個單詞構(gòu)成標(biāo)識符,則首字母小寫,其后單詞首字母大寫,如toString;類名首字母大寫,如FirstJava;常量名全部字母均大寫,如BOOK。在Java規(guī)范中約定:86下面是幾個有效的標(biāo)識符:identifierthisoneUserName User_name_system_varl$max下面是幾個非法的變量名:3maxroom#class 指出哪些標(biāo)識符是不準(zhǔn)確的,說明原因here_therethisthatit2tol_it(變量名不能以數(shù)字開頭)(包含非法字符“#”)(“class”為保留字)下面是幾個有效的標(biāo)識符:(變量名不能以數(shù)字開頭)(包含非法字87Java語言中一些被賦以特定的含義、并用做專門用途的單詞稱為關(guān)鍵字所有Java關(guān)鍵字都是小寫的goto和const雖然從未使用,但也作被為Java關(guān)鍵字保留TURE、FALSE、NULL等都不是Java關(guān)鍵字3.1.2關(guān)鍵字(keyword)TURE、FALSE、NULL是合法的Java標(biāo)識符嗎?Java語言中一些被賦以特定的含義、并用做專門用途的單詞稱為88關(guān)鍵字-1原始數(shù)據(jù)類型byteshortintlongfloatdoublecharboolean循環(huán)關(guān)鍵字dowhileforbreakcontinue分支關(guān)鍵字ifelseswitchcasedefaultbreak方法、變量和類修飾符privatepublicprotectedfinalstaticabstractsynchronizedvolatile關(guān)鍵字-1原始數(shù)據(jù)類型分支關(guān)鍵字89異常處理trycatchfinallythrowthrows對象相關(guān)關(guān)鍵字 newextendsimplementsclassinstanceofthissuperinterface
字面值常量falsetruenull方法相關(guān)關(guān)鍵字returnvoid包相關(guān)關(guān)鍵字packageimport關(guān)鍵字-2異常處理字面值常量關(guān)鍵字-290圓括號“()“:用于方法參數(shù)、控制語句、數(shù)據(jù)類型轉(zhuǎn)換中括號“[]“:用于數(shù)組大括號"{}“:用于構(gòu)造語句塊逗號“,”:在方法聲明或調(diào)用時的參數(shù)列表中用于分隔多個參數(shù),也可在一條聲明語句中同時聲明多個屬性或局部變量時起分隔作用分號“;”:Java語句必須以分號作為結(jié)束標(biāo)記,for循環(huán)語句中使用分號來分隔不同的成份空格"“:Java程序源代碼中各組成部分之間可以插入任意數(shù)量的空格,包括換行圓點“.“:用于訪問對象成員(屬性或方法)3.1.3分隔符圓括號“()“:用于方法參數(shù)、控制語句、數(shù)據(jù)類型轉(zhuǎn)換3.1913.1.4數(shù)據(jù)類型布爾(boolean)數(shù)值類型類數(shù)組字符(char)字節(jié)(byte)短整數(shù)(short)整數(shù)(int)浮點類型單精度浮點數(shù)(float)雙精度浮點數(shù)(double)數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型枚舉接口定點類型長整數(shù)(long)圖3-1Java數(shù)據(jù)類型3.1.4數(shù)據(jù)類型布爾(boolean)數(shù)值類型類數(shù)組字符92邏輯類型只有兩個取值:true和false8位注意:Java語言中boolean類型只允許使用boolean值,在整數(shù)類型和boolean類型之間無轉(zhuǎn)換計算
1.布爾型booleanbool.java邏輯類型1.布爾型booleanbool.java932.整數(shù)類型:byte,short,int,long所有Java編程語言中的整數(shù)類型都是帶符號的數(shù)字,不存在無符號整數(shù)長度不變類型長度字節(jié)數(shù)取值范圍byte8位1字節(jié)-128~127short16位2字節(jié)-32768~32767int32位4字節(jié)-2147483648~2147483647long64位8字節(jié)-9223372036854775808~92233720368547758072.整數(shù)類型:byte,short,int,long所有94整型常量:十進(jìn)制:123、234八進(jìn)制:077、011//首位為“0”十六進(jìn)制:0x12ABC//首位為“0x”整型常量默認(rèn)為int長整型常量:后面加L或lTestInteger.java整型常量:TestInteger.java95float型:常量:123.34f、12.76F、123.0fdouble型:常量:123.34d、123.43(d可以省略)、123.0D、2.08E25浮點型常量默認(rèn)為double
3.浮點類型float,double浮點類型長度字節(jié)數(shù)取值范圍float32位4字節(jié)-3.40282347E+38F~3.40282347E+38Fdouble64位8字節(jié)-1.7976931348623157E+308~1.7976931348623157E+308Sa.javafloat型:3.浮點類型float,double浮點96使用char類型可表示單個字符,用單引號括起來16位字符常量:用英文單引號括起來的單個字符。如:’a’、’漢’用英文單引號括起來的十六進(jìn)制字符代碼值,格式為:’\u****’,其中\(zhòng)u是約定的前綴,****為4位十六進(jìn)制數(shù),是該字符在unicode字符集中的序號,如:’\u0061’、’\u004b’。轉(zhuǎn)義字符
4.字符類型char
轉(zhuǎn)義字符含義\’單引號\”雙引號\b退格\t制表符\r回車符\n換行符\\反斜杠轉(zhuǎn)義字符.java使用char類型可表示單個字符,用單引號括起來4.字符類型97注意:用雙引號引用的文字,就是我們平時所說的字符串類型字符串類型不是原始類型,而是一個類(class)——String類String類被用來表示字符序列注意:985.類型轉(zhuǎn)換將一種數(shù)據(jù)類型的常量或變量轉(zhuǎn)換到另外的一種數(shù)據(jù)類型,稱為類型轉(zhuǎn)換類型轉(zhuǎn)換有兩種:隱式類型轉(zhuǎn)換(自動類型轉(zhuǎn)換)顯式類型轉(zhuǎn)換(強制類型轉(zhuǎn)換)5.類型轉(zhuǎn)換將一種數(shù)據(jù)類型的常量或變量轉(zhuǎn)換到另外的一種數(shù)據(jù)類99(1)隱式類型轉(zhuǎn)換
在實際中常會將一種類型的值賦給另外一種變量類型。如果這兩種類型是兼容的,Java將執(zhí)行自動類型轉(zhuǎn)換。簡單的說,當(dāng)把占用位數(shù)較短的數(shù)據(jù)轉(zhuǎn)化成占用位數(shù)較長的數(shù)據(jù)時,Java執(zhí)行自動類型轉(zhuǎn)換,不需要在程序中作特別的說明。例如inti=10;longj=i;類型轉(zhuǎn)換從低到高級的優(yōu)先關(guān)系:
byteshortintlongfloatdouble
char低高(1)隱式類型轉(zhuǎn)換在實際中常會將一100(2)強制類型轉(zhuǎn)換不是所有的數(shù)據(jù)類型都允許隱式自動轉(zhuǎn)換。例如,下面的語句把long型數(shù)據(jù)賦值給int型數(shù)據(jù),在編譯時就會發(fā)生錯誤:longi=10;intj=i;//精度失真改為:longi=10;intj=(int)i;
(2)強制類型轉(zhuǎn)換不是所有的數(shù)據(jù)類型都101(數(shù)據(jù)類型)變量名經(jīng)過強制類型轉(zhuǎn)換,將得到一個在“()”中聲明的數(shù)據(jù)類型的數(shù)據(jù),該數(shù)據(jù)是從指定變量所包含的數(shù)據(jù)轉(zhuǎn)換而來的。值得注意的是,指定變量本身不會發(fā)生任何變化。注意:布爾型不能和其它類型進(jìn)行轉(zhuǎn)換;優(yōu)先級高的值—>優(yōu)先級低的值——精度失真
強制類型轉(zhuǎn)換的格式是:(數(shù)據(jù)類型)變量名強制類型轉(zhuǎn)換的格式是:102賦值時,必須按照”變量類型的優(yōu)先級高于所賦數(shù)值的優(yōu)先級”的原則,否則出錯。例:floatf=8.36;(出錯)改為:floatf=(float)8.36;或:floatx=8.36f;或:doubled=8.36;賦值時,必須按照”變量類型的優(yōu)先級高于所賦數(shù)值的103表3-5基本數(shù)據(jù)類型的轉(zhuǎn)換charch;byteb;shorts;inti;longk;floatf;doubled;charch;ch=(char)b;ch=(char)s;ch=(char)i;ch=(char)k;ch=(char)f;ch=(char)d;byteb;b=(byte)ch;b=(byte)s;b=(byte)i;b=(byte)k;b=(byte)f;b=(byte)dshorts;s=(short)ch;s=b;s=(short)i;s=(short)k;s=(short)f;s=(short)d;inti;i=ch;i=b;i=s;i=(int)k;i=(int)f;i=(int)d;longk;k=ch;k=b;k=s;k=i;k=(long)f;k=(long)d;floatf;f=ch;f=b;f=s;f=i;f=k;f=(float)d;doubled;d=ch;d=b;d=s;d=i;d=k;d=f;表3-5基本數(shù)據(jù)類型的轉(zhuǎn)換charch;byteb;sh104類型提升下面的代碼能通過編譯嗎?bytea=100;byteb=100;bytec=100;inty=a*b*csystem.out.println(y);所有的byte、short型值被提升到int若有一個操作數(shù)是long型,整個表達(dá)式被提升到long型若有一個操作數(shù)是float型,整個表達(dá)式被提升到float型若有一個操作數(shù)是double型,整個表達(dá)式被提升到double型類型提升下面的代碼能通過編譯嗎?所有的byte、short型105常量:程序執(zhí)行中其值不能改變的量直接常量符號常量:常量名一般大寫finalfloatPI=3.14;publicfinalintMAX=10;變量:在程序執(zhí)行期間可根據(jù)需要經(jīng)常變化的值必須先聲明和初始化(賦初值),然后才可以使用[修飾符]<類型><變量名>[=初始化表達(dá)式];intx,y,z=10;publicStringstr1=“姓名”;3.1.5常量和變量常量:程序執(zhí)行中其值不能改變的量3.1.5常量和變量106變量的四個基本屬性變量名變量的數(shù)據(jù)類型變量的當(dāng)前值變量存儲單元的地址變量的四個基本屬性107上機練習(xí)編寫Java應(yīng)用程序,測試并體會各種原始類型數(shù)據(jù)的定義,賦值和輸出。 輸出可采用下述形式的語句:
//其中x是變量名,如a,b,c等。使用char型的三種常量聲明方式為char型變量賦值并輸出。System.out.println("x="+x);【例3-4】VariableDeclaration.java上機練習(xí)編寫Java應(yīng)用程序,測試并體會各種原始類型數(shù)據(jù)的定1083.1.6運算符與表達(dá)式運算符:表示運算類型操作數(shù):參與運算Java常用運算符:算術(shù)運算符:+,-,*,/,%,++,--關(guān)系運算符:>,<,>=,<=,==,!=布爾邏輯運算符:!,&,|,^,&&,||位運算符:&,|,^,~,>>,<<,>>>賦值運算符:= 擴展賦值運算符:+=,-=,*=,/=條件運算符:?:實例運算符:instanceof3.1.6運算符與表達(dá)式運算符:表示運算類型1091.運算符算術(shù)運算符:加號(+)、減號(-)、乘號(*)除號(/)、取模(%)、自增運算符(++)、自減運算符(--)注意:整數(shù)除法會直接砍掉小數(shù),而不是進(jìn)位取模運算結(jié)果的符號與第一個操作數(shù)的符號相同取模運算符%的操作數(shù)可以為浮點數(shù):37.2%10=7.21.運算符算術(shù)運算符:110Java對加運算符進(jìn)行了擴展,使它能夠進(jìn)行字符串的連接,如:“abc”+“def”的運算結(jié)果為串"abcdef"前綴++、--與后綴++、--的區(qū)別:++i在使用i之前,使i的值加1--i在使用i之前,使i的值減1
i++在使用i之后,使i的值加1i--在使用i之后,使i的值減1例如:inta=5,x,y,m,n;x=++a;y=a--;m=a++;n=a--;程序依次執(zhí)行以后x,y,m,n,a的值是多少?Java對加運算符進(jìn)行了擴展,使它能夠進(jìn)行字符串的連接,如:111關(guān)系運算符:>、<、>=、<=、==、!=二元運算符,用來比較任意類型的兩個值,返回布爾類型的值true或false如:10<9//結(jié)果為false3!=5//結(jié)果為true建議不要直接比較兩個浮點數(shù)是否相等Math.abs(f1-f2)<ee可以是一個大于0且適當(dāng)小的浮點數(shù)
關(guān)系運算符:>、<、>=、<=、==、!=112布爾邏輯運算符:&、|、!、^、&&、||&、|、^、&&、||為二元運算符,!為一元運算符邏輯運算符可以用來連接關(guān)系表達(dá)式,如:2>8&&8>2^:異或,異真同假&&、||:條件與、條件或(短路與、短路或)如果||左邊表達(dá)式的值為true,則整個表達(dá)式的結(jié)果為true,不必再計算右邊的表達(dá)式如果&&左邊表達(dá)式的值為false,則整個表達(dá)式的結(jié)果為false,不必再計算右邊的表達(dá)式布爾邏輯運算符:&、|、!、^、&&、||113表3-6布爾邏輯運算真值表OP1OP2OP1&&OP2OP1||OP2OP1^OP2!OP1OP1&OP2OP1|OP2falsefalsefalsefalsefalsetruefalsetruefalsetruetruetruetruefalsefalsetruetruefalsetruetruetruetruefalsefalse表3-6布爾邏輯運算真值表OP2OP1&&OP2OP1||114位運算符:&、|、~、^、>>、>>>和<<用于對整數(shù)或字符的二進(jìn)制位進(jìn)行布爾運算按位與運算(&):0&0=0,0&1=0,1&0=0,1&1=1按位或運算(|):0|0=0,0|1=1,1|0=1,1|1=1位運算符:&、|、~、^、>>、>>>和<<115按位異或運算(^):異真同假0^0=0,0^1=1,1^0=1,1^1=0按位取反運算(~):~0=1,~1=0左移位運算符(<<):執(zhí)行左移位。右邊的空位補0。在不產(chǎn)生溢出的情況下,數(shù)據(jù)左移1位相當(dāng)于乘以2:inta=64,b;//a的二進(jìn)制表示1000000b=a<<1; //b=128按位異或運算(^):異真同假116帶符號右移運算符(>>):左邊按符號位補0或1。例如: inta=16,b;//a的二進(jìn)制表示10000 b=a>>2; //b=4不帶符號位的右移(>>>):左邊補0帶符號右移運算符(>>):左邊按符號位補0或1。例如:117賦值運算符:=二元運算,左邊的操作元為變量,不能是常量復(fù)合賦值操作:x+=10=與==的區(qū)別!賦值運算符:=118三元條件運算符(?:):x?y:z;運算的規(guī)則是:先計算表達(dá)式x的值,若x為真,則整個運算的結(jié)果是表達(dá)式y(tǒng)的值;若x為假,則整個運算的結(jié)果是表達(dá)式z的值三元條件運算符(?:):119從兩個數(shù)中找出較大的數(shù)的功能。inta=3,b=4;intmax=a>b?a:b;
max的值為4。三元條件運算是可以嵌套的,如:以下語句中,max表示的是a、b、c三個數(shù)中的最大值,其值為5
inta=3,b=4,c=5;intmax=(a>b?a:b)>c?(a>b?a:b):c;從兩個數(shù)中找出較大的數(shù)的功能。inta=3,b=4,120實例運算符:instanceof一元運算符判斷一個指定對象是否是一個指定類(或它的子類)的實例:objinstanceofmyclass其中obj是一個對象,myclass是一個類,若obj是myclass類的對象,則運算結(jié)果是true,否則是false實例運算符:instanceof1212.表達(dá)式用Java運算符將操作數(shù)連接起來的、符合Java語法規(guī)則的式子運算符的優(yōu)先級決定了表達(dá)式中多個運算執(zhí)行的先后順序,優(yōu)先級高的先運算,優(yōu)先級低的后運算,優(yōu)先級相同的則由運算符的結(jié)合性確定其計算順序運算符的結(jié)合性決定了同一優(yōu)先級的多個運算符的運算順序,包括左結(jié)合(從左向右)和右結(jié)合(從右向左)可以用圓括號改變表達(dá)式中運算符的運算次序,圓括號中的表達(dá)式稱為子表達(dá)式
2.表達(dá)式用Java運算符將操作數(shù)連接起來的、符合Java語122表3-8Java運算符列表優(yōu)先級分類運算符結(jié)合性描述1(高)二元.[]()左結(jié)合成員、括號new++--后置自增、自減2++---~!右結(jié)合前置自增、自減,取負(fù),取反內(nèi)存分配3二元*/%左結(jié)合乘、除4+-加、減5<<>>>>>移位6<><=>=instanceof關(guān)系、實例7==!=關(guān)系8&邏輯9^10|11&&12||13三元?:右結(jié)合條件14二元=+=-=*=/=%=&=^=|=<<=>>=>>>=賦值15(低)二元,左結(jié)合逗號表3-8Java運算符列表分類運算符結(jié)合性描述1(高)二元1233.2控制語句
1.java語言語句的分類:
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度紡織品ODM定制與合作合同
- 2024年建筑工程材料供需協(xié)議
- 2024三方合作經(jīng)營協(xié)議合同
- 2024年度環(huán)保型涂料生產(chǎn)與銷售合同
- 2024年城市基礎(chǔ)設(shè)施合作合同
- 2024年辦公桌租賃協(xié)議
- 2024年度體育賽事贊助與推廣合同
- 2024年度智慧校園建設(shè)與運營合同
- 2024家居裝飾墻地磚采購協(xié)議
- 2024年建筑安裝安全協(xié)議
- 【公開課】《農(nóng)業(yè)專題復(fù)習(xí)》【課件】
- 第7課《大雁歸來》課件(共15張ppt) 部編版語文八年級下冊
- 培訓(xùn)的方式和方法課件
- 三年級下冊口算天天100題(A4打印版)
- 三基選擇題(東南大學(xué)出版社)
- 2021年大唐集團(tuán)招聘筆試試題及答案
- DBJ53/T-39-2020 云南省民用建筑節(jié)能設(shè)計標(biāo)準(zhǔn)
- 2022版義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)解讀課件PPT模板
- 實驗五 PCR擴增課件
- 馬拉松運動醫(yī)療支援培訓(xùn)課件
- 中醫(yī)藥宣傳手冊
評論
0/150
提交評論