java基礎(chǔ)第2節(jié)基本語法_第1頁
java基礎(chǔ)第2節(jié)基本語法_第2頁
java基礎(chǔ)第2節(jié)基本語法_第3頁
java基礎(chǔ)第2節(jié)基本語法_第4頁
java基礎(chǔ)第2節(jié)基本語法_第5頁
已閱讀5頁,還剩136頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第2節(jié)

java基本語法本節(jié)內(nèi)容2.1關(guān)鍵字2.2標(biāo)識符2.3變量基本數(shù)據(jù)類型基本數(shù)據(jù)類型轉(zhuǎn)換2.4運(yùn)算符2.5程序流程控制2.6數(shù)組2.7包的導(dǎo)入(補(bǔ)充)2.1關(guān)鍵字關(guān)鍵字的定義和特點(diǎn)定義:被Java語言賦予了特殊含義,用做專門用途的字符串(單詞)特點(diǎn):關(guān)鍵字中所有字母都為小寫用于定義數(shù)據(jù)類型的關(guān)鍵字classinterfaceenumbyteshortintlongfloatdoublecharbooleanvoid用于定義數(shù)據(jù)類型值的關(guān)鍵字truefalsenull用于定義流程控制的關(guān)鍵字ifelseswitchcasedefaultwhiledoforbreakcontinuereturn用于定義訪問權(quán)限修飾符的關(guān)鍵字privateprotectedpublic用于定義類,函數(shù),變量修飾符的關(guān)鍵字abstractfinalstaticsynchronized用于定義類與類之間關(guān)系的關(guān)鍵字extendsimplements用于定義建立實(shí)例及引用實(shí)例,判斷實(shí)例的關(guān)鍵字newthissuperinstanceof用于異常處理的關(guān)鍵字trycatchfinallythrowthrows用于包的關(guān)鍵字packageimport其他修飾符關(guān)鍵字nativestrictfptransientvolatileassert保留字Java保留字:現(xiàn)有Java版本尚未使用,但以后版本可能會作為關(guān)鍵字使用。自己命名標(biāo)記符時(shí)要避免使用這些保留字

byValue、cast、future、generic、inner、operator、outer、rest、var、goto、const2.2標(biāo)識符標(biāo)識符:Java對各種變量、方法和類等要素命名時(shí)使用的字符序列稱為標(biāo)識符凡是自己可以起名字的地方都叫標(biāo)識符。定義合法標(biāo)識符規(guī)則:由26個(gè)英文字母大小寫,0-9,_或$組成數(shù)字不可以開頭。不可以使用關(guān)鍵字和保留字,但能包含關(guān)鍵字和保留字。Java中嚴(yán)格區(qū)分大小寫,長度無限制。標(biāo)識符不能包含空格。注意:在起名字時(shí),為了提高閱讀性,要盡量有意義,“見名知意”。Java中的名稱命名規(guī)范Java中的名稱命名規(guī)范:包名:多單詞組成時(shí)所有字母都小寫:xxxyyyzzz類名、接口名:多單詞組成時(shí),所有單詞的首字母大寫:XxxYyyZzz變量名、方法名:多單詞組成時(shí),第一個(gè)單詞首字母小寫,第二個(gè)單詞開始每個(gè)單詞首字母大寫:xxxYyyZzz常量名:所有字母都大寫。多單詞時(shí)每個(gè)單詞用下劃線連接:XXX_YYY_ZZZ2.3變量變量的概念:內(nèi)存中的一個(gè)存儲區(qū)域該區(qū)域有自己的名稱(變量名)和類型(數(shù)據(jù)類型)Java中每個(gè)變量必須先聲明,后使用該區(qū)域的數(shù)據(jù)可以在同一類型范圍內(nèi)不斷變化使用變量注意:變量的作用域:一對{}之間有效 初始化值定義變量的格式:數(shù)據(jù)類型變量名=初始化值變量是通過使用變量名來訪問這塊區(qū)域的值12名字float?boolean?int?(補(bǔ)充)程序的執(zhí)行過程程序代碼操作系統(tǒng)代碼內(nèi)存硬盤棧(stack)堆(heap)靜態(tài)域常量池(方法區(qū))局部變量、對象聲明的引用靜態(tài)變量2.找到main方法開始執(zhí)行3.執(zhí)行過程中的內(nèi)存管理1.load到內(nèi)存區(qū)字符串常量new出來的類或數(shù)組的實(shí)例(含成員變量)變量的分類-按數(shù)據(jù)類型對于每一種數(shù)據(jù)都定義了明確的具體數(shù)據(jù)類型,在內(nèi)存中分配了不同大小的內(nèi)存空間。數(shù)據(jù)類型基本數(shù)據(jù)類型引用數(shù)據(jù)類型數(shù)值型字符型(char)布爾型(boolean)整數(shù)類型(byte,short,int,long)浮點(diǎn)類型(float,double)類(class)接口(interface)數(shù)組([])字符串在這里補(bǔ)充:變量的分類-按聲明的位置的不同在方法體外,類體內(nèi)聲明的變量稱為成員變量。在方法體內(nèi)部聲明的變量稱為局部變量?!褡⒁猓憾咴诔跏蓟捣矫娴漠愅?

同:都有生命周期

異:局部變量除形參外,需顯式初始化。成員變量局部變量實(shí)例變量(不以static修飾)類變量(以static修飾)形參(方法簽名中定義的變量)方法局部變量(在方法內(nèi)定義)代碼塊局部變量(在代碼塊內(nèi)定義)所有變量整數(shù)類型:byte、short、int、longJava各整數(shù)類型有固定的表數(shù)范圍和字段長度,不受具體OS的影響,以保證java程序的可移植性。java的整型常量默認(rèn)為int型,聲明long型常量須后加‘l’或‘L’類型占用存儲空間表數(shù)范圍byte1字節(jié)=8bit-128~127short2字節(jié)-215~215-1int4字節(jié)-231~231-1long8字節(jié)-263~263-1浮點(diǎn)類型:float、double與整數(shù)類型類似,Java浮點(diǎn)類型也有固定的表數(shù)范圍和字段長度,不受具體OS的影響。Java的浮點(diǎn)型常量默認(rèn)為double型,聲明float型常量,須后加‘f’或‘F’。浮點(diǎn)型常量有兩種表示形式:十進(jìn)制數(shù)形式:如:5.12512.0f.512(必須有小數(shù)點(diǎn))科學(xué)計(jì)數(shù)法形式:如:5.12e2512E2100E-2類型占用存儲空間表數(shù)范圍單精度float4字節(jié)-3.403E38~3.403E38雙精度double8字節(jié)-1.798E308~1.798E308字符類型:charchar型數(shù)據(jù)用來表示通常意義上“字符”(2字節(jié))字符型常量的三種表現(xiàn)形式:字符常量是用單引號(‘’)括起來的單個(gè)字符,涵蓋世界上所有書面語的字符。例如:charc1='a';charc2='中';charc3='9';

Java中還允許使用轉(zhuǎn)義字符‘\’來將其后的字符轉(zhuǎn)變?yōu)樘厥庾址统A?。例如:charc3=‘\n’;//'\n'表示換行符直接使用Unicode

值來表示字符型常量:‘\uXXXX’。其中,XXXX代表一個(gè)十六進(jìn)制整數(shù)。如:\u000a表示\n。char類型是可以進(jìn)行運(yùn)算的。因?yàn)樗紝?yīng)有Unicode碼。ASCII碼在計(jì)算機(jī)內(nèi)部,所有數(shù)據(jù)都使用二進(jìn)制表示。每一個(gè)二進(jìn)制位(bit)有0和1兩種狀態(tài),因此8個(gè)二進(jìn)制位就可以組合出256種狀態(tài),這被稱為一個(gè)字節(jié)(byte)。一個(gè)字節(jié)一共可以用來表示256種不同的狀態(tài),每一個(gè)狀態(tài)對應(yīng)一個(gè)符號,就是256個(gè)符號,從0000000到11111111。ASCII碼:上個(gè)世紀(jì)60年代,美國制定了一套字符編碼,對英語字符與二進(jìn)制位之間的關(guān)系,做了統(tǒng)一規(guī)定。這被稱為ASCII碼。ASCII碼一共規(guī)定了128個(gè)字符的編碼,比如空格“SPACE”是32(二進(jìn)制00100000),大寫的字母A是65(二進(jìn)制01000001)。這128個(gè)符號(包括32個(gè)不能打印出來的控制符號),只占用了一個(gè)字節(jié)的后面7位,最前面的1位統(tǒng)一規(guī)定為0。缺點(diǎn):不能表示所有字符。相同的編碼表示的字符不一樣:比如,130在法語編碼中代表了é,在希伯來語編碼中卻代表了字母Gimel(?)Unicode編碼亂碼:世界上存在著多種編碼方式,同一個(gè)二進(jìn)制數(shù)字可以被解釋成不同的符號。因此,要想打開一個(gè)文本文件,就必須知道它的編碼方式,否則用錯(cuò)誤的編碼方式解讀,就會出現(xiàn)亂碼。Unicode:一種編碼,將世界上所有的符號都納入其中。每一個(gè)符號都給予一個(gè)獨(dú)一無二的編碼,使用Unicode沒有亂碼的問題。Unicode的缺點(diǎn):Unicode只是一個(gè)符號集,它只規(guī)定了符號的二進(jìn)制代碼,卻沒有規(guī)定這個(gè)二進(jìn)制代碼應(yīng)該如何存儲:無法區(qū)別Unicode和ASCII:計(jì)算機(jī)無法區(qū)分三個(gè)字節(jié)表示一個(gè)符號還是分別表示三個(gè)符號UTF-8UTF-8是在互聯(lián)網(wǎng)上使用最廣的一種Unicode的實(shí)現(xiàn)方式。UTF-8是一種變長的編碼方式。它可以使用1-6個(gè)字節(jié)表示一個(gè)符號,根據(jù)不同的符號而變化字節(jié)長度。UTF-8的編碼規(guī)則:對于單字節(jié)的UTF-8編碼,該字節(jié)的最高位為0,其余7位用來對字符進(jìn)行編碼(等同于ASCII碼)。對于多字節(jié)的UTF-8編碼,如果編碼包含n個(gè)字節(jié),那么第一個(gè)字節(jié)的前n位為1,第一個(gè)字節(jié)的第n+1位為0,該字節(jié)的剩余各位用來對字符進(jìn)行編碼。在第一個(gè)字節(jié)之后的所有的字節(jié),都是最高兩位為"10",其余6位用來對字符進(jìn)行編碼。

布爾類型:booleanboolean類型適于邏輯運(yùn)算,一般用于程序流程控制:if條件控制語句;while循環(huán)控制語句;do-while循環(huán)控制語句;for循環(huán)控制語句;boolean類型數(shù)據(jù)只允許取值true和false,無null。不可以0或非0的整數(shù)替代false和true,這點(diǎn)和C語言不同?;緮?shù)據(jù)類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換:容量小的類型自動(dòng)轉(zhuǎn)換為容量大的數(shù)據(jù)類型。數(shù)據(jù)類型按容量大小排序?yàn)椋河卸喾N類型的數(shù)據(jù)混合運(yùn)算時(shí),系統(tǒng)首先自動(dòng)將所有數(shù)據(jù)轉(zhuǎn)換成容量最大的那種數(shù)據(jù)類型,然后再進(jìn)行計(jì)算。byte,short,char之間不會相互轉(zhuǎn)換,他們?nèi)咴谟?jì)算時(shí)首先轉(zhuǎn)換為int類型。當(dāng)把任何基本類型的值和字符串值進(jìn)行連接運(yùn)算時(shí)(+),基本類型的值將自動(dòng)轉(zhuǎn)化為字符串類型。charbyteshortintlongfloatdouble練習(xí)1Stringstr1=4;//判斷對錯(cuò):錯(cuò)Stringstr2=3.5f+“”;//判斷str2對錯(cuò):對System.out.println(str2);//輸出:3.5System.out.println(3+4+“Hello!”);//輸出:7Hello!System.out.println(“Hello!”+3+4);//輸出:Hello!34System.out.println(‘a(chǎn)’+1+“Hello!”);//輸出:98Hello!System.out.println(“Hello”+‘a(chǎn)’+1);//輸出:Hello!a1強(qiáng)制類型轉(zhuǎn)換自動(dòng)類型轉(zhuǎn)換的逆過程,將容量大的數(shù)據(jù)類型轉(zhuǎn)換為容量小的數(shù)據(jù)類型。使用時(shí)要加上強(qiáng)制轉(zhuǎn)換符(()),但可能造成精度降低或溢出,格外要注意。通常,字符串不能直接轉(zhuǎn)換為基本類型,但通過基本類型對應(yīng)的包裝類則可以實(shí)現(xiàn)把字符串轉(zhuǎn)換成基本類型。如:Stringa=“43”;inti=Integer.parseInt(a);boolean類型不可以轉(zhuǎn)換為其它的數(shù)據(jù)類型。補(bǔ)充:String類值null可以賦值給任何引用類型(類、接口、數(shù)組)的變量,用以表示這個(gè)引用類型變量中保存的地址為空。String類屬于引用類型,可用null賦值。String類是一個(gè)典型的不可變類,String對象創(chuàng)建出來就

不可能被改變。創(chuàng)建出的字符串將存放在數(shù)據(jù)區(qū),保證

每個(gè)字符串常量只有一個(gè),不會產(chǎn)生多個(gè)副本。Strings0=“hello”;Strings1=“hello”;Strings2=“he”+“l(fā)lo”;System.out.println(s0==s1);System.out.println(s0==s2);輸出:truetrueStrings3=newString(“hello”);又如何理解呢?練習(xí)1)shorts=5;s=s-2;//判斷:no2)byteb=3;b=b+4;

//判斷:nob=(byte)(b+4);

//判斷:yes3)charc=‘a(chǎn)’;inti=5;doubled=.314;doubleresult=c+i+d;//判斷:yes4)byteb=5;shorts=3;shortt=s+b;

//判斷:no判斷是否能通過編譯進(jìn)制對于整數(shù),有四種表示方式:二進(jìn)制:0,1,滿2進(jìn)1.以0b或0B開頭。十進(jìn)制:0-9,滿10進(jìn)1.

八進(jìn)制:0-7,滿8進(jìn)1.以數(shù)字0開頭表示。十六進(jìn)制:0-9及A-F,滿16進(jìn)1.以0x或0X開頭表示。此處的A-F不區(qū)分大小寫。

如:0x21AF+1=0X21B001234567891011121314150123456789ABCDEF00001101byteb=13;符號位2^02^12^3二進(jìn)制=>十進(jìn)制01111111127底層的存儲格式-13的補(bǔ)碼:-13在底層的存儲格式對于正數(shù):原碼、反碼、補(bǔ)碼三碼合一;10001101-13的原碼反碼:原碼各個(gè)位除符號位外取反11110010-13的反碼補(bǔ)碼:反碼+11111001111110001如下的byte值為?是一個(gè)負(fù)數(shù)的補(bǔ)碼11110000是一個(gè)負(fù)數(shù)的反碼10001111是一個(gè)負(fù)數(shù)的原碼:-15-1510000000-128的補(bǔ)碼10000001-127的補(bǔ)碼1326101131001101十進(jìn)制=>二進(jìn)制:除2取余數(shù)的逆原碼、反碼、補(bǔ)碼所有數(shù)字在計(jì)算機(jī)底層都以二進(jìn)制形式存在。計(jì)算機(jī)以補(bǔ)碼的形式保存所有的整數(shù)。正數(shù)的原碼、反碼、補(bǔ)碼都相同負(fù)數(shù)的補(bǔ)碼是其反碼加1。原碼:直接將一個(gè)數(shù)值換成二進(jìn)制數(shù)。反碼:是對原碼按位取反,只是最高位(符號位)確定為1。Java整數(shù)常量默認(rèn)是int類型,當(dāng)用二進(jìn)制定義整數(shù)時(shí),其第32位是符號位;當(dāng)是long類型時(shí),二進(jìn)制默認(rèn)占64位,第64位是符號位00011101 1*2^4+1*2^3+1*2^2+1*2^0=2901111111127符號位正數(shù)的原碼、反碼、補(bǔ)碼合一10011101-29的原碼11100010-29的反碼11100011-29的補(bǔ)碼:反碼+111101011補(bǔ)碼11101010反碼10010101原碼:是-21的原碼-1除符號位外,取反10000001000000000000101110111000132101163101101十進(jìn)制-

二進(jìn)制:除2取余數(shù)0000000000000000000000000001011123符號位0:正數(shù)1:負(fù)數(shù)可以表示為23的原碼、反碼、補(bǔ)碼10000000000000000000000000010111-23的原碼-23的補(bǔ)碼:由-23的反碼+1-23的反碼:由-23的原碼,除符號位外,各個(gè)位取反1111111111111111111111111110100011111111111111111111111111101001111111111111111111111111110110011111111111111111111111111101100010000000000000000000000000100111-1除符號位外各個(gè)位取反-39-390000000111111110①各位取反+1的二進(jìn)制碼:2^011111111-1的二進(jìn)制碼(反碼)②加1000000000000000000000000000001015的原碼:000000000000000000000000000001015的反碼:00000000000000000000000000000101-5的補(bǔ)碼:10000000000000000000000000000101-5的原碼:11111111111111111111111111111010-5的反碼:5的補(bǔ)碼:1111111111111111111111111111101100011010①數(shù)據(jù)在計(jì)算機(jī)底層是以二進(jìn)制來存儲的。而且就是按照數(shù)據(jù)的補(bǔ)碼來存儲的②數(shù)據(jù)分為:原碼、反碼、補(bǔ)碼③對于正數(shù)來講:原碼、反碼、補(bǔ)碼都是相同的。

對于負(fù)數(shù)來講:其補(bǔ)碼可以看做是其相反數(shù)的各個(gè)位去反后,再+1得到。符號位1*2^4+1*2^3+1*2^1=26011111111*2^6+1*2^5+…..+1*2^0=12711100101-26的反碼11100110-26的補(bǔ)碼+1270111111110000001在底層byte類型的127存儲如下:(原碼、反碼、補(bǔ)碼一樣)負(fù)數(shù)的補(bǔ)碼:其相反數(shù)的原碼,各個(gè)位取反,再加1.1000000001111111-127127的原碼各個(gè)位取反加11000000110000000-12800000001-1的補(bǔ)碼11111111進(jìn)制間轉(zhuǎn)化進(jìn)制的基本轉(zhuǎn)換十進(jìn)制二進(jìn)制互轉(zhuǎn)二進(jìn)制轉(zhuǎn)成十進(jìn)制乘以2的冪數(shù)十進(jìn)制轉(zhuǎn)成二進(jìn)制除以2取余數(shù)二進(jìn)制八進(jìn)制互轉(zhuǎn)二進(jìn)制十六進(jìn)制互轉(zhuǎn)十進(jìn)制八進(jìn)制互轉(zhuǎn)十進(jìn)制十六進(jìn)制互轉(zhuǎn)十進(jìn)制二進(jìn)制八進(jìn)制十六進(jìn)制00000000000000000000000000001011二進(jìn)制--

十進(jìn)制:1*2^0+1*2^1+1*2^3=11132610110000310十進(jìn)制-

二進(jìn)制:0000110100000000000000000000000011101001153000000000000000000000000111010019E0XE90351二進(jìn)制

八進(jìn)制二進(jìn)制

十六進(jìn)制0357八進(jìn)制:111101011011101111二進(jìn)制:十六進(jìn)制0x3AF1111101000112.4運(yùn)算符運(yùn)算符是一種特殊的符號,用以表示數(shù)據(jù)的運(yùn)算、賦值和比較等。算術(shù)運(yùn)算符賦值運(yùn)算符比較運(yùn)算符(關(guān)系運(yùn)算符)邏輯運(yùn)算符位運(yùn)算符三元運(yùn)算符1.算術(shù)運(yùn)算符運(yùn)算符運(yùn)算范例結(jié)果+正號+33-負(fù)號b=4;-b-4+加5+510-減6-42*乘3*412/除5/51%取模7%52++++自增(前):先運(yùn)算后取值自增(后):先取值后運(yùn)算a=2;b=++a;a=2;b=a++;a=3;b=3a=3;b=2----自減(前):先運(yùn)算后取值自減(后):先取值后運(yùn)算a=2;b=--aa=2;b=a--a=1;b=1a=1;b=2+字符串相加“He”+”llo”“Hello”算術(shù)運(yùn)算符的注意問題如果對負(fù)數(shù)取模,可以把模數(shù)負(fù)號忽略不記,如:5%-2=1。但被模數(shù)是負(fù)數(shù)則不可忽略。此外,取模運(yùn)算的結(jié)果不一定總是整數(shù)。對于除號“/”,它的整數(shù)除和小數(shù)除是有區(qū)別的:整數(shù)之間做除法時(shí),只保留整數(shù)部分而舍棄小數(shù)部分。

例如:intx=3510;x=x/1000*1000;x的結(jié)果是?“+”除字符串相加功能外,還能把非字符串轉(zhuǎn)換成字符串.例如:System.out.println("5+5="+5+5);//打印結(jié)果是?以下二者的區(qū)別:System.out.println('*'+'\t'+'*');System.out.println("*"+'\t'+'*');

練習(xí)1:算術(shù)運(yùn)算符:自加、自減publicclassTestSign{publicstaticvoidmain(String[]args){inti1=10,i2=20;inti=i1++;System.out.print(“i=”+i);System.out.println(“i1=”+i1);i=++i1;System.out.print(“i=”+i);System.out.println(“i1=”+i1);i=i2--;System.out.print(“i=”+i);System.out.println(“i2=”+i2);i=--i2;System.out.print(“i=”+i);System.out.println(“i2=”+i2);}}輸出:i=i1=i=

i1=i=i2=i=i2=2.賦值運(yùn)算符符號:=當(dāng)“=”兩側(cè)數(shù)據(jù)類型不一致時(shí),可以使用自動(dòng)類型轉(zhuǎn)換或使用強(qiáng)制類型轉(zhuǎn)換原則進(jìn)行處理。支持連續(xù)賦值。擴(kuò)展賦值運(yùn)算符:

+=,-=,*=,/=,%=思考1:shorts=3;s=s+2;①s+=2;②

①和②有什么區(qū)別?2.賦值運(yùn)算符思考2:booleanb1=false;//區(qū)分好==和=的區(qū)別。

if(b1=true) System.out.println("結(jié)果為真");else System.out.println("結(jié)果為假");思考3:inti=1;i*=0.1;System.out.println(i);//i++;System.out.println(i);//3.比較運(yùn)算符比較運(yùn)算符的結(jié)果都是boolean型,也就是要么是true,要么是false。比較運(yùn)算符“==”不能誤寫成“=”。運(yùn)算符運(yùn)算范例結(jié)果==相等于4==3false!=不等于

4!=3true<小于4<3false>大于4>3true<=小于等于4<=3false>=大于等于4>=3trueinstanceof檢查是否是類的對象“Hello”instanceofStringtrueaba&ba|b!aa^ba&&ba||btruetruetruetruefalsefalsetruetruetruefalsefalsetruefalsetruefalsetruefalsetruefalsetruetruetruefalsetruefalsefalsefalsefalsetruefalsefalsefalse&—邏輯與|—邏輯或!—邏輯非&&—短路與||—短路或^—邏輯異或4.邏輯運(yùn)算符4.邏輯運(yùn)算符邏輯運(yùn)算符用于連接布爾型表達(dá)式,在Java中不可以寫成3<x<6,應(yīng)該寫成x>3&x<6?!?”和“&&”的區(qū)別:單&時(shí),左邊無論真假,右邊都進(jìn)行運(yùn)算;雙&時(shí),如果左邊為真,右邊參與運(yùn)算,如果左邊為假,那么右邊不參與運(yùn)算?!皘”和“||”的區(qū)別同理,||表示:當(dāng)左邊為真,右邊不參與運(yùn)算。異或(^)與或(|)的不同之處是:當(dāng)左右都為true時(shí),結(jié)果為false。

理解:異或,追求的是“異”!練習(xí)2:請寫出每題的輸出結(jié)果intx=1;inty=1;if(x++==2&++y==2){ x=7;}System.out.println("x="+x+",y="+y);intx=1,y=1;if(x++==2&&++y==2){ x=7;}System.out.println("x="+x+",y="+y);intx=1,y=1;if(x++==1|++y==1){ x=7;}System.out.println("x="+x+",y="+y);intx=1,y=1;if(x++==1||++y==1){ x=7;}System.out.println("x="+x+",y="+y);5.位運(yùn)算符位運(yùn)算是直接對二進(jìn)制進(jìn)行運(yùn)算位運(yùn)算符運(yùn)算符運(yùn)算范例<<左移3<<2=12-->3*2*2=12>>右移3>>1=1-->3/2=1>>>無符號右移3>>>1=1-->3/2=1&與運(yùn)算6&3=2|或運(yùn)算6|3=7^異或運(yùn)算6^3=5~反碼~6=-7注意:無<<<3131<<3000248=31*2*2*231<<2800000000000000000000000000003131>>2=731>>>20000-31-31>>2=-81100-31>>>20000110000000101125&0000010040000110000000101125|00001101130000110000000101125^00001001912~12=-130000110000000101125^00001001900000101^5000011001212^5^12==55.位運(yùn)算符位運(yùn)算符的細(xì)節(jié)<<空位補(bǔ)0,被移除的高位丟棄,空缺位補(bǔ)0。>>被移位的二進(jìn)制最高位是0,右移后,空缺位補(bǔ)0;最高位是1,空缺位補(bǔ)1。>>>被移位二進(jìn)制最高位無論是0或者是1,空缺位都用0補(bǔ)。&二進(jìn)制位進(jìn)行&運(yùn)算,只有1&1時(shí)結(jié)果是1,否則是0;|二進(jìn)制位進(jìn)行|運(yùn)算,只有0|0時(shí)結(jié)果是0,否則是1;^相同二進(jìn)制位進(jìn)行^運(yùn)算,結(jié)果是0;1^1=0,0^0=0不相同二進(jìn)制位^運(yùn)算結(jié)果是1。1^0=1,0^1=1~正數(shù)取反,各二進(jìn)制碼按補(bǔ)碼各位取反負(fù)數(shù)取反,各二進(jìn)制碼按補(bǔ)碼各位取反0111101010001100^11110110nmn^m^1000110001111010m(n^m)^m6.三元運(yùn)算符格式:(條件表達(dá)式)?表達(dá)式1:表達(dá)式2;

為true,運(yùn)算后的結(jié)果是表達(dá)式1;

為false,運(yùn)算后的結(jié)果是表達(dá)式2;表達(dá)式1和表達(dá)式2為同種類型三元運(yùn)算符與if-else的聯(lián)系與區(qū)別: 1)三元運(yùn)算符可簡化if-else語句 2)三元運(yùn)算符要求必須返回一個(gè)結(jié)果。 3)if后的代碼塊可有多個(gè)語句練習(xí):獲取兩個(gè)數(shù)中的較大數(shù)

獲取三個(gè)數(shù)中的較大數(shù)運(yùn)算符的優(yōu)先級●運(yùn)算符有不同的優(yōu)先級,所謂優(yōu)先級就是表達(dá)式運(yùn)算中的運(yùn)算順序。如右表,上一行運(yùn)算符總優(yōu)先于下一行?!裰挥袉文窟\(yùn)算符、三元運(yùn)算符、賦值運(yùn)算符是從右向左運(yùn)算的。.(){};,R—>L++--~!(datatype)L—>R*/%L—>R+-L—>R<<>>>>>L—>R<><=>=instanceofL—>R==!=L—>R&L—>R^L—>R|L—>R&&L—>R||R—>L?:R—>L=*=/=%=+=-=<<=>>=>>>=&=^=|=高低001111006000001111&000011001560&15=120011110000001111&000000110000110100000101m=13n=5^000010008n=m^n00000101m=m^n^00001101n=52.5程序流程控制順序結(jié)構(gòu)程序從上到下逐行地執(zhí)行,中間沒有任何判斷和跳轉(zhuǎn)。分支結(jié)構(gòu)根據(jù)條件,選擇性地執(zhí)行某段代碼。有if…else和switch兩種分支語句。循環(huán)結(jié)構(gòu)根據(jù)循環(huán)條件,重復(fù)性的執(zhí)行某段代碼。有while、do…while、for三種循環(huán)語句。注:JDK1.5提供了foreach循環(huán),方便的遍歷集合、數(shù)組元素。2.5程序流程控制順序結(jié)構(gòu)Java中定義成員變量時(shí)采用合法的前向引用。如:publicclassTest{intnum1=12;intnum2=num1+2;}錯(cuò)誤形式:publicclassTest{intnum2=num1+2;intnum1=12;}if語句三種格式:1.if(true){

執(zhí)行代碼塊;

}2.if(條件表達(dá)式){

執(zhí)行代碼塊;

}

else{

執(zhí)行代碼塊;

}3.if(條件表達(dá)式){

執(zhí)行代碼塊;

}

elseif(條件表達(dá)式){

執(zhí)行代碼塊;

}

……

else{

執(zhí)行代碼塊;

}分支語句1:if-else語句if-else語句應(yīng)用舉例publicclassTestAge{publicstaticvoidmain(Stringargs[]){ intage=75; if(age<0){ System.out.println("不可能!");}elseif(age>250){ System.out.println("是個(gè)妖怪!");}else{ System.out.println(“人家芳齡"+age+",馬馬乎乎啦!");}

}}分支結(jié)構(gòu)2:switch語句 switch(變量){ case常量1:

語句1; break; case常量2:

語句2; break; …… case常量N:

語句N; break; default:

語句; break; }switch語句應(yīng)用舉例 publicclassTest{ publicstaticvoidmain(Stringargs[]){ inti=1; switch(i){ case0: System.out.println("zero"); break; case1: System.out.println("one"); break; default: System.out.println("default"); break; } } }switch語句應(yīng)用舉例

publicclassTest{ publicstaticvoidmain(Stringargs[]){ Stringseason=“summer”; switch(season){ case“spring”: System.out.println(“春暖花開"); break; case“summer”: System.out.println(“夏日炎炎"); break; case“autumn”: System.out.println(“秋高氣爽"); break; case“winter”: System.out.println(“冬雪皚皚"); break; default: System.out.println(“季節(jié)輸入有誤"); break; }}}switch語句有關(guān)規(guī)則switch(表達(dá)式)中表達(dá)式的返回值必須是下述幾種類型之一:byte,short,char,int,枚舉,String;case子句中的值必須是常量,且所有case子句中的值應(yīng)是不同的;default子句是可任選的,當(dāng)沒有匹配的case時(shí),執(zhí)行defaultbreak語句用來在執(zhí)行完一個(gè)case分支后使程序跳出switch語句塊;如果沒有break,程序會順序執(zhí)行到switch結(jié)尾switch和if語句的對比if和switch語句很像,具體什么場景下,應(yīng)用哪個(gè)語句呢?如果判斷的具體數(shù)值不多,而且符合byte、

short、int、

char這四種類型。雖然兩個(gè)語句都可以使用,建議使用swtich語句。因?yàn)樾噬愿?。其他情況:對區(qū)間判斷,對結(jié)果為boolean類型判斷,使用if,if的使用范圍更廣。循環(huán)結(jié)構(gòu)循環(huán)語句功能在某些條件滿足的情況下,反復(fù)執(zhí)行特定代碼的功能循環(huán)語句的四個(gè)組成部分初始化部分(init_statement)循環(huán)條件部分(test_exp)循環(huán)體部分(body_statement)迭代部分(alter_statement)循環(huán)語句分類for循環(huán)while循環(huán)do/while循環(huán)for循環(huán)語句語法格式

for(初始化表達(dá)式①;布爾值測試表達(dá)式②⑤⑦;更改表達(dá)式){ 語句或語句塊③⑥

; }1234應(yīng)用舉例

publicclassForLoop{ publicstaticvoidmain(Stringargs[]){ intresult=0; for(inti=1;i<=100;i++){ result+=i; } System.out.println("result="+result); } }while循環(huán)語句語法格式

[初始化語句] while(布爾值測試表達(dá)式){ 語句或語句塊; [更改語句;] }應(yīng)用舉例

publicclassWhileLoop{ publicstaticvoidmain(Stringargs[]){ intresult=0; inti=1; while(i<=100){ result+=i; i++; } System.out.println("result="+result); } }

do-while循環(huán)語句語法格式

[初始化語句] do{ 語句或語句塊; [更改語句;]

}while(布爾值測試表達(dá)式);應(yīng)用舉例

publicclassWhileLoop{ publicstaticvoidmain(Stringargs[]){ intresult=0,i=1; do{ result+=i; i++; }while(i<=100); System.out.println("result="+result); } }循環(huán)語句練習(xí)編寫程序一:求1到100之間所有偶數(shù)的和。用for和while語句分別完成。編寫程序二:從鍵盤讀入個(gè)數(shù)不確定的整數(shù),并判斷讀入的正數(shù)和負(fù)數(shù)的個(gè)數(shù),輸入為0時(shí)結(jié)束程序。補(bǔ)充:最簡單無限循環(huán)格式:while(true),for(;;),無限循環(huán)存在的原因是并不知道循環(huán)多少次,需要根據(jù)某些條件,來控制循環(huán)。classPositiveNegative{ publicstaticvoidmain(String[]args){ //while(true) Scannerscanner=newScanner(System.in); inta=0;//統(tǒng)計(jì)正數(shù)的個(gè)數(shù)

intb=0;//統(tǒng)計(jì)負(fù)數(shù)的個(gè)數(shù)

for(;;){ System.out.println("請輸入一個(gè)整數(shù):"); intz=scanner.nextInt(); if(z>0) a++; elseif(z<0) b++; else break;}

System.out.println("正數(shù)的個(gè)數(shù)為:"+a); System.out.println("負(fù)數(shù)的個(gè)數(shù)為:"+b);}}嵌套循環(huán)將一個(gè)循環(huán)放在另一個(gè)循環(huán)體內(nèi),就形成了嵌套循環(huán)。其中,for,while,do…while均可以作為外層循環(huán)和內(nèi)層循環(huán)。實(shí)質(zhì)上,嵌套循環(huán)就是把內(nèi)層循環(huán)當(dāng)成外層循環(huán)的循環(huán)體。當(dāng)只有內(nèi)層循環(huán)的循環(huán)條件為false時(shí),才會完全跳出內(nèi)層循環(huán),才可結(jié)束外層的當(dāng)次循環(huán),開始下一次的循環(huán)。設(shè)外層循環(huán)次數(shù)為m次,內(nèi)層為n次,則內(nèi)層循環(huán)體實(shí)際上需要執(zhí)行m*n=mn次。例題:1)九九乘法表2)1—100之間的所有質(zhì)數(shù)特殊流程控制語句1break語句break語句用于終止某個(gè)語句塊的執(zhí)行

{…… break; …… }break語句出現(xiàn)在多層嵌套的語句塊中時(shí),可以通過標(biāo)簽指明要終止的是哪一層語句塊

label1: {…… label2: {…… label3: {…… breaklabel2; …… } } }

特殊流程控制語句1break語句用法舉例

publicclassTestBreak{ publicstaticvoidmain(Stringargs[]){ for(inti=0;i<10;i++){ if(i==3) break; System.out.println("i="+i); } System.out.println("GameOver!"); }}特殊流程控制語句2continue語句continue語句用于跳過某個(gè)循環(huán)語句塊的一次執(zhí)行continue語句出現(xiàn)在多層嵌套的循環(huán)語句體中時(shí),可以通過標(biāo)簽指明要跳過的是哪一層循環(huán)continue語句用法舉例

publicclassContinueTest{ publicstaticvoidmain(Stringargs[]){ for(inti=0;i<100;i++){ if(i%10==0) continue; System.out.println(i); }}}特殊流程控制語句3return:并非專門用于結(jié)束循環(huán)的,它的功能是結(jié)束一個(gè)方法。當(dāng)一個(gè)方法執(zhí)行到一個(gè)return語句時(shí),這個(gè)方法將被結(jié)束。與break和continue不同的是,return直接結(jié)束整個(gè)方法,不管這個(gè)return處于多少層循環(huán)之內(nèi)特殊流程控制語句說明break只能用于switch語句和循環(huán)語句中。continue只能用于循環(huán)語句中。二者功能類似,但continue是終止本次循環(huán),break是終止本層循環(huán)。break、continue之后不能有其他的語句,因?yàn)槌绦蛴肋h(yuǎn)不會執(zhí)行其后的語句。標(biāo)號語句必須緊接在循環(huán)的頭部。標(biāo)號語句不能用在非循環(huán)語句的前面。2.6數(shù)組數(shù)組是多個(gè)相同類型數(shù)據(jù)的組合,實(shí)現(xiàn)對這些數(shù)據(jù)的統(tǒng)一管理數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括基本數(shù)據(jù)類型和引用數(shù)據(jù)類型數(shù)組屬引用類型,數(shù)組型數(shù)據(jù)是對象(object),數(shù)組中的每個(gè)元素相當(dāng)于該對象的成員變量棧:stack堆:heap方法區(qū)靜態(tài)域內(nèi)存的基本結(jié)構(gòu)存放局部變量,對象的引用new出來的東西常量池棧:stack堆:heap存放局部變量,對象的引用new出來的東西int[]scores=newint[4];scores[0]=89;scores[3]=90;scores:0x223300000x22338990String[]strs=newString[4];strs[0]="AA";strs[1]="BB";strs:0x2244nullnullnullnull0x2244AABBString[]strs1=newString[]{“AA”,”BB”};str1:0x3344nullnull0x3344AABB一維數(shù)組聲明一維數(shù)組的聲明方式:typevar[]或type[]var;例如:

inta[]; int[]a1; doubleb[]; Mydate[]c;//對象數(shù)組Java語言中聲明數(shù)組時(shí)不能指定其長度(數(shù)組中元素的數(shù)),例如:inta[5];//非法一維數(shù)組初始化動(dòng)態(tài)初始化:數(shù)組聲明且為數(shù)組元素分配空間與賦值的操作分開進(jìn)行int[]arr=newint[3];arr[0]=3;arr[1]=9;arr[2]=8;靜態(tài)初始化:在定義數(shù)組的同時(shí)就為數(shù)組元素分配空間并賦值。inta[]=newint[]{3,9,8};int[]a={3,9,8};MyDatedates[];dates=newMyDate[3];dates[0]=newMyDate(22,7,1964);dates[1]=newMyDate(1,1,2000);dates[2]=newMyDate(22,12,1964);MyDatedates[]={newMyDate(22,7,1964),newMyDate(1,1,2000),newMyDate(22,12,1964)}棧(stack)堆(heap)方法區(qū)字符串常量池靜態(tài)域Java內(nèi)存的結(jié)構(gòu)int[]scores=newint[3];scores[0]=78;scores[1]=88;scores[2]=98;String[]names=newString[3];names[0]=“商文通”;names[1]=“湯化峰”;scores:0x23AB棧堆0000x23AB788898names:0x1234nullnullnull0x1234商文通湯化峰int[]myInt=newint[5];for(inti=0;i<myInt.length;i++){ sysout(myInt[i]); myInt[i]=2*i+1; sysout(myInt[i]);}棧stack堆heap:程序new出來的東西myInt:0x1234135790x1234md:0x5435nullnullnullnull0x5435heap:存放程序new出來的“東西”stack:存放聲明的引用,局部變量199012120x98760x987619912121999114200035int[]score=newint[10];score[1]=88;score[3]=56;棧stack堆heapscore:0x2332newint[10];00000000000x23328856String[]str=newString[3];str[2]="AA";str:0x1234nullnullnull0x1234AAscore=newint[3];0000x44440x4444創(chuàng)建基本數(shù)據(jù)類型數(shù)組(1)

publicclassTest{publicstaticvoidmain(Stringargs[]){ int[]s; s=newint[10]; for(inti=0;i<10;i++){ s[i]=2*i+1; System.out.println(s[i]); }}}Java中使用關(guān)鍵字new創(chuàng)建數(shù)組對象創(chuàng)建基本數(shù)據(jù)類型一維數(shù)組對象main棧內(nèi)存s堆內(nèi)存處內(nèi)存狀態(tài)創(chuàng)建基本數(shù)據(jù)類型一維數(shù)組對象main棧內(nèi)存s0int[]對象000000000堆內(nèi)存處內(nèi)存狀態(tài)

publicclassTest{publicstaticvoidmain(Stringargs[]){ int[]s; s=newint[10]; //int[]s=newint[10];//基本數(shù)據(jù)類型數(shù)組如果沒有賦初值,

//Java自動(dòng)給他們賦默認(rèn)值。

for(inti=0;i<10;i++){ s[i]=2*i+1; System.out.println(s[i]); }}}創(chuàng)建基本數(shù)據(jù)類型數(shù)組(2)main棧內(nèi)存s1int[]對象35791113151719堆內(nèi)存publicclassTest{publicstaticvoidmain(Stringargs[]){ int[]s; s=newint[10]; for(inti=0;i<10;i++){ s[i]=2*i+1; System.out.println(s[i]); }}}處內(nèi)存狀態(tài)創(chuàng)建基本數(shù)據(jù)類型一維數(shù)組對象創(chuàng)建基本數(shù)據(jù)類型數(shù)組(3)創(chuàng)建對象數(shù)組(1)創(chuàng)建元素為引用類型(對象)的數(shù)組classMyDate{privateintday;privateintmonth;privateintyear;publicMyDate(intd,intm,inty){ day=d;month=m;year=y;}publicvoiddisplay(){ System.out.println(year+"-"+month+"-"+day);}}publicclassTest{publicstaticvoidmain(Stringargs[]){ MyDate[]m; m=newMyDate[10]; for(inti=0;i<10;i++){ m[i]=newMyDate(i+1,i+1,1990+i); m[i].display(); }}}main棧內(nèi)存m堆內(nèi)存創(chuàng)建元素為引用類型(對象)的數(shù)組演示處內(nèi)存狀態(tài)創(chuàng)建對象數(shù)組(2)main棧內(nèi)存mnullMyDate[]對象nullnullnullnullnullnullnullnullnull堆內(nèi)存處內(nèi)存狀態(tài)創(chuàng)建元素為引用類型(對象)的數(shù)組演示創(chuàng)建對象數(shù)組(3)publicclassTest{publicstaticvoidmain(Stringargs[]){ MyDate[]m; m=newMyDate[10]; for(inti=0;i<10;i++){ m[i]=newMyDate(i+1,i+1,1990+i); m[i].display(); }}}Java中使用關(guān)鍵字new創(chuàng)建數(shù)組對象main棧內(nèi)存m*****MyDate[]對象**********nullnullnullnullnullnullnull堆內(nèi)存111990221991331992for循環(huán)執(zhí)行三次后內(nèi)存狀態(tài)創(chuàng)建對象數(shù)組(4)

publicclassTest{publicstaticvoidmain(Stringargs[]){ MyDate[]m; m=newMyDate[10]; for(inti=0;i<10;i++){ m[i]=newMyDate(i+1,i+1,1990+i); m[i].display(); }}}stackheapmyDate:****************111990221991331992441993數(shù)組元素的默認(rèn)初始化數(shù)組是引用類型,它的元素相當(dāng)于類的成員變量,因此數(shù)組一經(jīng)分配空間,其中的每個(gè)元素也被按照成員變量同樣的方式被隱式初始化。例如:publicclassTest{publicstaticvoidmain(Stringargv[]){inta[]=newint[5];

System.out.println(a[3]); //a[3]的默認(rèn)值為0}}對于基本數(shù)據(jù)類型而言,默認(rèn)初始化值各有不同對于引用數(shù)據(jù)類型而言,默認(rèn)初始化值為null(注意與0不同!)數(shù)組元素的引用定義并用運(yùn)算符new為之分配空間后,才可以引用數(shù)組中的每個(gè)元素;數(shù)組元素的引用方式:數(shù)組名[數(shù)組元素下標(biāo)]

數(shù)組元素下標(biāo)可以是整型常量或整型表達(dá)式。如a[3],b[i],c[6*i];數(shù)組元素下標(biāo)從0開始;長度為n的數(shù)組合法下標(biāo)取值范圍:0—>n-1;如inta[]=newint[3];可引用的數(shù)組元素為a[0]、a[1]、a[2]每個(gè)數(shù)組都有一個(gè)屬性length指明它的長度,例如:a.length指明數(shù)組a的長度(元素個(gè)數(shù))數(shù)組一旦初始化,其長度是不可變的Student[]stu=newStudent[5];stu[i]=newStudent();stu:0x1234nullnullnullnullnull0x1234heap:new出來的東西number:1state:5score:780x3344stu[0]=0x3344d:0x9988t:0x8877newPritimive()falsefalsefalsenewboolean[3]0x99880x8877truetruetrue3.從鍵盤讀入學(xué)生成績,找出最高分,并輸出學(xué)生成績等級。成績>=最高分-10等級為’A’成績>=最高分-20等級為’B’成績>=最高分-30等級為’C’其余等級為’D’提示:先讀入學(xué)生人數(shù),根據(jù)人數(shù)創(chuàng)建int數(shù)組,存放學(xué)生成績。多維數(shù)組二維數(shù)組[][]:數(shù)組中的數(shù)組格式1(動(dòng)態(tài)初始化):int[][]arr=newint[3][2];定義了名稱為arr的二維數(shù)組二維數(shù)組中有3個(gè)一維數(shù)組每一個(gè)一維數(shù)組中有2個(gè)元素一維數(shù)組的名稱分別為arr[0],arr[1],arr[2]

給第一個(gè)一維數(shù)組1腳標(biāo)位賦值為78寫法是:arr[0][1]=78;格式2(動(dòng)態(tài)初始化):int[][]arr=newint[3][];二維數(shù)組中有3個(gè)一維數(shù)組。

每個(gè)一維數(shù)組都是默認(rèn)初始化值null(注意:區(qū)別于格式1)

可以對這個(gè)三個(gè)一維數(shù)組分別進(jìn)行初始化

arr[0]=newint[3];arr[1]=newint[1];arr[2]=newint[2];注:int[][]arr=newint[][3];//非法String[][]names;names=newString[2][];names[0]=newString[5];names[1]=newString[3];names[0]names[5]String[][]names;names=newString[6][5];…names[0][3]int[][]i=newint[3][];i[0]=newint[3];i[1]=newint[2];i[2]=newint[4];i[1][0]=90;i[2][1]=100;i:0x4455nullnullnull0x44550000x66770x667700000090100格式3(靜態(tài)初始化):int[][]arr=newint[][]{{3,8,2},{2,7},{9,0,1,6}};定義一個(gè)名稱為arr的二維數(shù)組,二維數(shù)組中有三個(gè)一維數(shù)組每一個(gè)一維數(shù)組中具體元素也都已初始化第一個(gè)一維數(shù)組arr[0]={3,8,2};

第二個(gè)一維數(shù)組arr[1]={2,7};

第三個(gè)一維數(shù)組arr[2]={9,0,1,6};

第三個(gè)一維數(shù)組的長度表示方式:arr[2].length;注意特殊寫法情況:int[]x,y[

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論