版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
人民郵電出版社2Java語言基礎語法Java程序設計第章2.2輸入輸出2.3流程控制2.4數(shù)組2.1數(shù)據(jù)類型和運算符號2.5小結(jié)C目錄ONTENTS2.1.1Java數(shù)據(jù)類型在計算機中存儲和處理數(shù)據(jù)要區(qū)分類型,因為不同類型的數(shù)據(jù)在計算機中的存儲和處理方式不同。Java語言本身定義的數(shù)據(jù)類型稱為基本數(shù)據(jù)類型。在基本數(shù)據(jù)類型的基礎上,還可以定義其它數(shù)據(jù)類型,稱為自定義類型,如后面講到的類、接口和枚舉等。Java基本數(shù)據(jù)類型可以分為4個類型,即整型數(shù)、實型數(shù)(浮點數(shù))、布爾型數(shù)和字符型數(shù)。2.1.1Java數(shù)據(jù)類型根據(jù)數(shù)據(jù)占據(jù)的內(nèi)存空間的大小、數(shù)據(jù)的表示范圍和數(shù)據(jù)的表示精度,可以將整型數(shù)和實型數(shù)分為byte(字節(jié)整型)、short(短整型)、int(基本整型)、long(長整型)、float(單精度實型)、double(雙精度實型)。布爾型數(shù)用boolean表示,字符型用char表示。2.1.1Java數(shù)據(jù)類型1、整型數(shù)沒有小數(shù)部分的數(shù)值型數(shù)就是整型數(shù)。(1)字節(jié)整型數(shù)byte用一個字節(jié)(8個二進制數(shù))表示整型數(shù),所以一個字節(jié)型數(shù)表示數(shù)的范圍是:-128~127。(2)短整型short用兩個字節(jié)(16個二進制數(shù))表示整型數(shù),一個短整數(shù)表示數(shù)的范圍是:-32768~32767。2.1.1Java數(shù)據(jù)類型1、整型數(shù)(3)基本整型int用4個字節(jié)(32個二進制數(shù))表示整型數(shù),一個基本整型數(shù)表示數(shù)的范圍是:-231~231-1。(4)長整型long用8個字節(jié)(64個二進制數(shù))表示長整型數(shù),一個長整型數(shù)表示數(shù)的范圍是:-263~263-1
。2.1.1Java數(shù)據(jù)類型給定一個整型數(shù),則它的默認類型是基本整型,如123、-456都是基本整型數(shù)。如果想使一個整數(shù)表示的是長整型數(shù),則可以在整型數(shù)后加L或l,如123L、-456l是長整型數(shù)而不是基本整型數(shù)。沒有單獨表示字節(jié)型數(shù)和短整數(shù)的方法。在定義變量時,如果給變量賦的值不超過相應類型的范圍,則該數(shù)就是相應的類型。如:byteb=123;//字節(jié)型變量b的初值是123shorts=12345;//短整型變量s的初值是123452.1.1Java數(shù)據(jù)類型用八進制表示時,使用數(shù)字0~7,并且以0(數(shù)字0)開頭。如:0123、0447都是八進制數(shù),而0789則是非法數(shù)據(jù)。用十六進制表示時,使用數(shù)字0~9、字母a~f和字母A~F表示,并且以0x或0X(數(shù)字0,大寫或小寫X)開頭。如:0x123、0x45fa、0x97AE等都十六進制數(shù)。用二進制表示時,只使用數(shù)0和1,并且以以0b或0B(數(shù)字0)開頭。如:0b1101、0B010011整型數(shù)還可以用八進制、十六進制和二進制的形式表示。2.1.1Java數(shù)據(jù)類型2、浮點數(shù)帶有小數(shù)點的數(shù)值數(shù)就是浮點數(shù)。如:123.、123.0、123.45都是浮點數(shù)。浮點數(shù)根據(jù)其所表示數(shù)的精度可以將浮點數(shù)分為單精度數(shù)和雙精度數(shù)。給定一個浮點數(shù),則默認為該數(shù)是雙精度度數(shù),如123.0是一個雙精度數(shù)。如果想明確地說明一個數(shù)是雙精度數(shù),可以在數(shù)據(jù)的后面加D或d。如:123.0d、-456.78D都是雙精度數(shù)。2.1.1Java數(shù)據(jù)類型如果在一個浮點數(shù)后面加F或f,明確地表示該數(shù)是一個單精度數(shù)。如:123.0f、-456.78F是單精度數(shù)而不是雙精度數(shù)。浮點數(shù)可以用指數(shù)形式表示。如:123.45e3、-1.25E-5F、12.456e1D123.45e3表示123.45*103。使用指數(shù)形式表示浮點數(shù)時,e或E的前面必須有數(shù)字,其后面必須是一個整型數(shù)。如:12.3e、12.3e2.5、e-3等不是合法的指數(shù)形式的浮點數(shù)。2.1.1Java數(shù)據(jù)類型3.布爾型數(shù)boolean布爾型數(shù)是邏輯值,用于表示“真”和“假”。布爾型數(shù)的值用true和false表示。true表示“真”,false表示“假”。2.1.1Java數(shù)據(jù)類型4.字符型數(shù)char用單引號引起的單個字符就是字符型數(shù)。如:‘a(chǎn)’、’X’、’d’、’2’、’8’、’中’、’國’等都是字符型數(shù)。在Java中,任何一個字符型數(shù)都是Unicode字符集中的字符。2.1.1Java數(shù)據(jù)類型在編寫程序時,有些特殊字符無法在程序中輸入,這時可以用轉(zhuǎn)義字符來表示。轉(zhuǎn)義字符是字符’\’和個別字符組合而形成的字符,組合之后的字符表示的是其它字符。轉(zhuǎn)義字符及含義如表2-1所示。轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義\a響玲Bell\’單引號\b退格鍵Backspace\\字符’\’\f換頁formfeed\”雙引號\n換行l(wèi)inefeed\u0000空字符‘’\r回車carriagereturn\ddd三個八進制數(shù)表示的轉(zhuǎn)義字符\t制表鍵Tab\udddd四個十六進制數(shù)表示的轉(zhuǎn)義字符表2-1轉(zhuǎn)義字符及含義2.1.1Java數(shù)據(jù)類型5.字符串型數(shù)字符串是用雙引號引起的若干字符序列。如:“Math”、”ThisisaJavaprogram.””China”、”123”、”Beijing”等都是字符串。字符串中可以包括轉(zhuǎn)義字符。字符串不是基本類型的數(shù)據(jù),但是通常情況下都當作是基本數(shù)據(jù)類型的數(shù)據(jù)使用。具體表示字符串時是用String類(相關內(nèi)容參見7.2)的對象來表示?!纠?.1】轉(zhuǎn)義字符及字符串的使用。Example2_01.java2.1.1Java數(shù)據(jù)類型6.數(shù)據(jù)分隔符如果數(shù)據(jù)比較大或數(shù)據(jù)的位數(shù)比較多,則該數(shù)的可讀性變差,這時可以用“_”對數(shù)據(jù)進行分隔以增加數(shù)據(jù)的可讀性。如:longcreditCardNumber=1234_5678_9012_3456L;longsocialSecurityNumber=999_99_9999L;floatpi=3.14_15F;longhexBytes=0xFF_EC_DE_5E;longhexWords=0xCAFE_BABE;2.1.1Java數(shù)據(jù)類型6.數(shù)據(jù)分隔符longmaxLong=0x7fff_ffff_ffff_ffffL;bytenybbles=0b0010_0101;longbytes=0b11010010_01101001_10010100_10010010;intx3=5_______2;//多個連續(xù)的分隔符2.1.1Java數(shù)據(jù)類型6.數(shù)據(jù)分隔符分隔符“_”只能用于數(shù)字之間,只要有需要就可以使用。但下列情況不可以使用分隔符:數(shù)據(jù)的開始和結(jié)束處不許使用分隔符浮點數(shù)的小數(shù)點旁不允許使用分隔符在數(shù)據(jù)的前綴或后綴(
如F或
L)之前或之后不許使用分隔符字符串中使用“_”當作普通字符2.1.1Java數(shù)據(jù)類型6.數(shù)據(jù)分隔符如:floatpi1=3_.1415F;floatpi2=3._1415F;longsocialSecurityNumber1=999_99_9999_L;intx2=52_;intx4=0_x52;intx5=0x_52;intx7=0x52_;等都是對“_”的不正確使用。2.1.1Java數(shù)據(jù)類型一般地,字節(jié)數(shù)多的數(shù)有較高的精度,字節(jié)數(shù)少的數(shù)的精度較低。
所以,基本數(shù)據(jù)類型中數(shù)值型數(shù)據(jù)按精度從低到高的次序為:byte→short→char→int→long→float→double當不同類型的數(shù)據(jù)進行混合運算時,低精度數(shù)先轉(zhuǎn)換成高精度數(shù)再與高精度數(shù)進行運算,最后得到的數(shù)據(jù)的類型是高精度類型。7.基本數(shù)據(jù)類型數(shù)據(jù)的優(yōu)先次序2.1.2標識符與關鍵字在一個Java程序中,可能有若干個變量、類、對象和接口等元素。為了區(qū)別不同元素,需要給每一個元素一個惟一的名字,以便與其它元素相區(qū)分并標識本身元素。標識符和關鍵字都是元素的名字。在程序中用于標識變量、類、對象和接口等元素的名字稱為標識符。
如:inti;classStudent{//…}i是一個標識符,它表示一個整型變量;Student也是一個標識符,它表示一個類的類名。1.標識符2.1.2標識符與關鍵字關鍵字也是標識符,但是關鍵字是由Java語言定義的、程序員不可以再
重新定義使用的標識符。如上面的int、class都是關鍵字,不能把它們再重新
定義。一般地,標識符指的是用戶自定義的名字,關鍵字是Java語言定義的
名字。2.關鍵字3.變量變量在使用前必須先定義。變量定義的形式:數(shù)據(jù)類型變量列表;如:inta,b;inti,j;變量在參與運算前必須有確定的值,可以通過賦值運算(“=”)把確定的數(shù)據(jù)賦給變量。如上面定義的變量:a=123;變量在定義時可以給變量賦初值,稱為變量初始化。變量初始化的語法形式:數(shù)據(jù)類型變量1=初始1,變量2=初值2,…,變量n=初值n;2.1.2標識符與關鍵字3.變量如:inta=10,b=-35;變量的類型決定了它所保留的值的類型。如:doubled=123;賦值時不能將一個高精度的數(shù)據(jù)賦給一個低精度的變量。如:a=123.45;把一個低精度的數(shù)據(jù)賦給一個高精度的變量是可以的。2.1.2標識符與關鍵字4.數(shù)據(jù)類型轉(zhuǎn)換不同類型的數(shù)據(jù)是不能運算的。為了能夠?qū)崿F(xiàn)不同類型數(shù)據(jù)的運算,在運算前需要先將數(shù)據(jù)轉(zhuǎn)換成同一類型后再進行運算。數(shù)據(jù)類型轉(zhuǎn)換的基本原則是將低精度的數(shù)據(jù)轉(zhuǎn)換成高精度的數(shù)據(jù)(可以避免數(shù)據(jù)的丟失)。數(shù)據(jù)類型轉(zhuǎn)換又可以分為自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換。2.1.2標識符與關鍵字(1)自動類型轉(zhuǎn)換Java編譯器能根據(jù)參與運算的數(shù)據(jù)的數(shù)據(jù)類型自動地將一些數(shù)據(jù)轉(zhuǎn)換為其它類型。如:doubled=123;”再如下面的運算:123+’a’+2*150.0(2)強制類型轉(zhuǎn)換上面的語句:inta=123.45;編譯不能通過。如果將該語句改成:a=(int)123.45;其中的運算“(int)123.45”是一個強制類型轉(zhuǎn)換表達式。強制類型轉(zhuǎn)換的語法形式:(數(shù)據(jù)類型)(表達式)或(數(shù)據(jù)類型)表達式2.1.2標識符與關鍵字2.1.3運算符運算符用于執(zhí)行數(shù)據(jù)的運算。Java中的運算符如表2-2所示。表2-2運算符運算符含義舉例+、-、*、/、%二元算術(shù)運算符2*3.14*radius+、-、++、--一元算術(shù)運算符i++、--j>、>=、<、<=、==、!=關系運算符x>y、a+b==c+d&&、||、!邏輯運算符x>y&&a+b==c+d&、|、~、^、<<、>>、>>>位運算符x&y、a>>2=賦值運算符x=a+b:?條件運算符x>y?x:y+=-=*=/=%=&=^=|=<<=>>=>>>=擴展的賦值運算符x+=a+binstanceof判斷某一對象是否是某個類的實例aStuinstanceofStudent當混合運算時,根據(jù)運算符的優(yōu)先級進行運算。如“a+b*c”,乘法“*”的優(yōu)先級比加法“+”的優(yōu)先級高,所以先計算“b*c”,然后再與“a”做加法運算。結(jié)合性指的是相同優(yōu)先級的運算符進行運算時,是從左側(cè)開始計算還是從右側(cè)開始計算。如果從左側(cè)開始計算稱左結(jié)合,否則稱為右結(jié)合。運算符有兩個性質(zhì),分別是優(yōu)先級和結(jié)合性。2.1.3運算符2.1.3運算符算術(shù)運算符執(zhí)行算術(shù)運算,共有9個運算,其中5個二元運算符,4個一元運算符。(1)二元算術(shù)運算符二元算術(shù)運算符分別是+(加)、-(減)、*(乘)、/(除)和%(取余),其中的+、-、*、/的操作數(shù)可以是任何數(shù)值型數(shù)據(jù)。做除法運算時,整型數(shù)和整型數(shù)相除,結(jié)果是整型數(shù),如1/3=0、5/2=2。取余運算時,兩個操作數(shù)必須是整型數(shù),其結(jié)果是兩個數(shù)相除后的余數(shù),如1%3=1、5%2=1、2%3=2。1.算術(shù)運算符2.1.3運算符1.算術(shù)運算符求余數(shù)可按a%b=a-a/b*b計算,如:System.out.println(11%2);
//結(jié)果為1System.out.println(11%-2);
//結(jié)果為1System.out.println(-11%2);
//結(jié)果為-1System.out.println(-11%-2);
//結(jié)果為-1從結(jié)果看,結(jié)果的符號取決于第1個操作數(shù),所以當兩個整數(shù)取余運算時,可以先計算兩數(shù)絕對值的余數(shù),再根據(jù)第1個操作數(shù)的符號確定結(jié)果的符號。2.1.3運算符在程序中寫算術(shù)表達式時,不能將數(shù)學中的算術(shù)式直接寫在程序中,而應按Java的語法寫表達式。如:在Java中應寫成:(-b+Math.sqrt(b*b-4*a*c))/(2*a)1.算術(shù)運算符2.1.3運算符(2)一元算術(shù)運算符一元算術(shù)運算符分別是+(取正)、-(取負)、++(變量值增加1)和--(變量值減1)。其中+和-的操作數(shù)可以是任何數(shù)值型數(shù)據(jù)。語法形式:+(表達式)或-(表達式)表示將“表達式”的值取正或取負。取正(+)運算較少用。++和--運算符可以使變量增加1或減少1,它們的操作數(shù)一定是變量,不能是表達式。多數(shù)情況下變量都是整型變量。1.算術(shù)運算符2.1.3運算符根據(jù)運算符和操作數(shù)的位置,可以分為前綴運算和后綴運算。運算符在操作數(shù)前稱前綴運算,在后則稱為后綴運算。語法形式(以++為例):++變量或變量++前綴和后綴的運算結(jié)果都可以使變量增加或減少1,但運算過程不同。1.算術(shù)運算符2.1.3運算符如果是前綴運算,先使變量增加1,然后再用這個變量參與其它運算;如果是后綴運算,則先使用這個變量,使用變量后再使變量增加或減少1。如下面的兩組運算:如果單獨使變量增1或減1,如:i++;則不用考慮前綴還是后綴。inti=10,j;inti=10,j;j=++i;j=i++;2.1.3運算符關系運算符用于比較兩個量大小關系的運算,通常用于表示運算條件。關系運算符共有6個,分別是:>(大于)、>=(大于或等于)、<(小于)、<=(小于或等于)、==(等于)和!=(不等于),它們都是二元運算符。由關系運算符連接操作數(shù)所形成的式子稱關系表達式。關系表達式的語法形式:操作數(shù)1關系運算符操作數(shù)2關系運算的結(jié)果是一個邏輯值:true或false。2.關系運算符2.1.3運算符關系運算符中>、>=、<和<=的優(yōu)先級相同,==和!=的優(yōu)先級相同,后兩個的優(yōu)先級小于前四個。算術(shù)運算的優(yōu)先級高于關系運算。下面的關系表達式:a+b>c+d等價于(a+b)>(c+d)x+y==z等價于(x+y)==zb*b-4*a*c>=0等價于(b*b-4*a*c)>=02.關系運算符2.1.3運算符一個關系運算只能表示一個條件。如果一個問題有多個條件,這時可以用邏輯運算將多個條件連接在一起。如算術(shù)不等式:x>y或a<=b寫成等價的Java表達式就要用到邏輯運算:x>y||a<=b邏輯運算符有&&(邏輯與)、||(邏輯或)和?。ㄟ壿嫹牵?.邏輯運算符2.1.3運算符由邏輯運算符連接操作數(shù)所形成的式子就是邏輯表達式。邏輯表達式的語法形式:操作數(shù)1邏輯運算符操作數(shù)2!操作數(shù)“操作數(shù)1”、“操作數(shù)2”和“操作數(shù)”的值的類型必須是邏輯型(布爾型)。邏輯運算的結(jié)果仍然是邏輯值。3.邏輯運算符2.1.3運算符除運算符()、
[]和.外,?。ㄟ壿嫹牵┻\算符的優(yōu)先級比其它運算符的優(yōu)先級都高,&&和||的優(yōu)先級低于關系運算,而&&的優(yōu)先級比||高。如:a>b&&c>d
等價于
(a>b)&&(c>d)!b==c||d<a
等價于
((!b)==c)||(d<a)a+b>c&&x+y<b
等價于
((a+b)>c)&&((x+y)<b)3.邏輯運算符2.1.3運算符計算機內(nèi)部表示數(shù)時是用二進制表示的。有時候想獲得一個數(shù)中的某一位或某幾位,就可以通過位運算來實現(xiàn)。位運算符有&(位與)、|(位或)、~(位反)、^(位異或)、<<(位左移)、>>(位右移,算術(shù)右移)和>>>(無符號右移),其中的“~”是一元運算符,其余的是二元運算符。4.位運算符2.1.3運算符(1)位與運算兩個操作數(shù)的對應二進制位進行與運算。如果對應位都是1,則位與結(jié)果為1,否則為0。例如“25&-12”運算,可以用下面的式子完成計算(以一個字節(jié)為例):(2)位或運算兩個操作數(shù)的對應二進位進行或運算。如果對應位都是0,則位或結(jié)果為0,否則只要有一位為1則結(jié)果為1。例如“25|-12”運算,可以用下面的式子完成計算(以一個字節(jié)為例):2.1.3運算符(3)位反運算一個操作數(shù)的各個二進位按位取反,原來是1的變成0,原來是0的變成1。例如“~-12”運算,可以用下面的式子完成計算(以一個字節(jié)為例):(4)位異或運算兩個操作數(shù)的對應二進位進行異或運算,異或運算是取不同。如果對應位不同,則位異或結(jié)果為1,否則結(jié)果為0。例如“25^-12”運算,可以用下面的式子完成計算(以一個字節(jié)為例):2.1.3運算符(5)位左移運算將一個操作數(shù)的各個二進位順序往左移動若干位。移動后,空出的低位用0填充,移出的高位舍棄不要。位左移運算的表達式形式:操作數(shù)<<移動的位數(shù)例如“-12<<3”運算將-12的各位順序往左移動3位,可以用下面的式子完成計算:結(jié)果為-96,相當于-12*23。<<311110100(-12補碼)
10100000(-96)2.1.3運算符(6)位右移運算>>將一個操作數(shù)的各個二進位順序往右移動若干位。移動后,空出的高位用原來的高位值填充,移出的低位舍棄不要。位左移運算的表達式形式:操作數(shù)>>移動的位數(shù)例如“-12>>3”運算將-12的各位順序往右移動3位,可以用下面的式子完成計算:結(jié)果為-2,相當于-12/23。位右移運算可以使結(jié)果的符號與原操作數(shù)的符號相同,又稱為算術(shù)右移。>>311110100(-12補碼)
11111110(-2)2.1.3運算符(7)無符號位右移運算>>>將一個操作數(shù)的各個二進位順序往右移動若干位。移動后,空出的高位全部用0填充,移出的低位舍棄不要。位右移運算的表達式形式:操作數(shù)>>>移動的位數(shù)例如“-12>>>3”運算將-12的各位順序往右移動3位,可以用下面的式子完成計算:結(jié)果為30。對于負數(shù),無符號右移的結(jié)果與原數(shù)差別較大。無符號右移又稱為邏輯右移。>>>311110100(-12補碼)
00011110(30)2.1.3運算符條件運算符是“?:”,可以根據(jù)條件進行計算。使用時的語法形式:關系或邏輯表達式(條件)?表達式1:表達式2例如,找出整型數(shù)a和b中的大值,可以用關系運算符計算:max=a>b?a:b;或:max=b<a?a:b;條件運算符的優(yōu)先級高于賦值運算符,但低于其它運算符。結(jié)合性是右結(jié)合。5.條件運算符2.1.3運算符賦值運算符執(zhí)行賦值運算??梢詫①x值運算符分為基本的賦值運算符和擴展的賦值運算符。(1)基本的賦值運算符基本的賦值運算符即“=”。由賦值運算符連接操作數(shù)所形成的式子稱賦值表達式。它的語法形式:變量=表達式賦值運算符的左側(cè)必須是變量,右側(cè)是合法的表達式(常數(shù)、單一變量都是表達式的特例)。6.賦值運算符2.1.3運算符(2)擴展的賦值運算符擴展的賦值運算符是由基本的賦值運算符與算術(shù)和位運算符組合而成的運算符。擴展的賦值運算符共11個,包括:+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=和>>>=。擴展的賦值運算符的使用的語法形式:變量擴展的賦值運算符表達式如:x*=a+b它的等價形式:x=x*(a+b)6.賦值運算符2.1.3運算符6.賦值運算符將一個擴展的賦值表達式轉(zhuǎn)換成基本的賦值表達式,可以通過下面的步驟完成:將右側(cè)表達式加括號:x*=(a+b)再將左側(cè)的“x*”移到賦值號右側(cè):=x*(a+b)最后再在賦值號左側(cè)加上變量x:x=x*(a+b)賦值運算符的優(yōu)先級在所有的運算符中最低,也就是,所有其它運算都執(zhí)行完后才能執(zhí)行賦值運算。其結(jié)合性是右結(jié)合。2.1.3運算符instanceof是類型比較運算符,用于判斷某一個對象是否是某一個類或其子類的實例。如果是,則表達式的值為“true”,否則為“false”。它的語法形式:對象instanceof類名類型比較運算符的優(yōu)先級較高,結(jié)合性是左結(jié)合。7.類型比較運算符2.2輸入輸出2.3流程控制2.4數(shù)組2.1數(shù)據(jù)類型和運算符號2.5小結(jié)C目錄ONTENTS程序運行時,可能需要給程序輸入數(shù)據(jù),這時需要用到輸入語句;程序處理完數(shù)據(jù),要將結(jié)果輸出出來,就要用到輸出語句。Java采用流式方式對數(shù)據(jù)進行輸入輸出。Java定義了很多流類,可以通過流類的對象及其中的方法實現(xiàn)數(shù)據(jù)的輸入輸出。2.2輸入輸出2.2.1
輸入從鍵盤(標準輸入設備)輸入數(shù)據(jù),可以用Scanner類的對象及其中的方法(C/C++語言稱為函數(shù))實現(xiàn)輸入。Scanner類的對象的定義形式:Scannerreader=newScanner(System.in);Scanner類中有較多的方法,常用的與基本數(shù)據(jù)類型有關的方法見表
2-4。2.2.1輸入【例2.2】基本數(shù)據(jù)類型數(shù)據(jù)的輸入與輸出。Example2_02.java【例2.3】有若干個學生某一課程的成績,計算這些學生的總成績和平均成績。由于學生人數(shù)未知(如多個班級多個學生),所以無法準確輸入成績數(shù)。這時可以利用方法hasNextXXX()判斷是否還有成績,如果有則繼續(xù)累加,否則計算平均成績。Example2_03.java2.2.2輸出基本數(shù)據(jù)類型可以用PrintStream類中的方法完成輸出。類中有三種常用的方法:voidprint(基本數(shù)據(jù)類型數(shù)據(jù));voidprintln([基本數(shù)據(jù)類型數(shù)據(jù)]);voidprintf(輸出格式控制字符串,輸出項表列);2.2.2輸出1.print()方法print()方法有并且只能有一個基本數(shù)據(jù)類型的數(shù)據(jù),包括字符串類型,它輸出數(shù)據(jù)后不換行。如a=10,可以用System.out.print(“a=”+a);輸出“a=10”。2.println()方法println()方法可以有參數(shù)也可以沒
參數(shù)。如果沒參數(shù),只輸出一個換行。如果有參數(shù),有并且只能有一個基本數(shù)據(jù)類型的參數(shù),輸出該參數(shù)后換行。它的參數(shù)用法與print()方法相同。2.2.2輸出3.printf()方法printf()方法是有格式的數(shù)據(jù)輸出方法,它一次可以按給定的格式輸出較多的數(shù)據(jù)。它的使用形式:printf(String
format,
Object...
args)“format”是用于控制后面輸出項的字符串,“args”是個數(shù)可變的輸出數(shù)據(jù)。“format”的格式如下:[普通字符]%[標志字符][輸出寬度][.小數(shù)位數(shù)]格式控制字符[普通字符]其中的“%”和“格式控制字符”必須有,其余的可有可無?!捌胀ㄗ址卑丛瓨虞敵觥!案袷娇刂谱址比绫?-5所示?!纠?.4】printf()方法的使用。Example2_04.java2.2輸入輸出2.3流程控制2.4數(shù)組2.1數(shù)據(jù)類型和運算符號2.5小結(jié)C目錄ONTENTS2.3.1
順序控制語句【例2.5】給定三角形的三邊長(一定能組成三角形),計算三角形的周長和面積。Example2_05.java順序控制語句是按程序員所寫程序中的語句順序由前往后順序執(zhí)行。2.3.2選擇控制語句利用選擇控制語句,可以使程序有條件地執(zhí)行某些語句,或不執(zhí)行某些語句,而不必按照語句順序執(zhí)行程序。通過選擇語句的使用,可以提高程序的通用性。Java中選擇語句包括if語句和switch語句。可以通過if語句給出條件,只有滿足條件的語句才能被執(zhí)行。if語句可以分為簡單的if語句、if-else語句和if-elseif-else語句。if語句中還可以有if語句,稱為if語句的嵌套。1.if選擇語句2.3.2選擇控制語句(1)簡單的if語句簡單的if語句可以帶有一個條件和子句。根據(jù)子句是一條語句還是多條語句,if語句的語法形式如下:形式1:if(條件表達式)一條語句(if子句)形式2:if(條件表達式){多條語句(if子句)}2.3.2選擇控制語句簡單if語句的執(zhí)行過程如圖所示?!纠?.6】給定兩個正整數(shù),找出這兩個正整數(shù)中的大數(shù)。Example2_06.java【例2.7】重寫例2.5,當給定的三邊長能構(gòu)成三角形時才計算三角形的面積。Example2_07.java2.3.2選擇控制語句(2)if-else語句if-else語句可以實現(xiàn)兩個分支。它的語法形式:if(條件表達式)語句1else語句2執(zhí)行過程如圖所示?!纠?.8】用if-else語句重寫例2.7。Example2_08.java2.3.2選擇控制語句(3)if語句的嵌套如果if或else的子句還包含if語句,稱為if語句的嵌套。用嵌套的if語句可以實現(xiàn)更復雜的判斷,或者將復雜的判斷分成幾個簡單的判斷。if語句的嵌套沒有固定形式,根據(jù)問題的需要進行判斷??梢詫懗鋈缦聨追N形式:形式1:if(條件1)if(條件2)語句形式2:if(條件1)if(條件11)語句1elseif(條件2)語句22.3.2選擇控制語句【例2.9】根據(jù)學生的百分成績給出成績等級。90分以為優(yōu)秀,80分以為良好,70分以為中等,60分以上為及格,低于60分為不及格。Example2_09.java形式3:if(條件1)if(條件11)語句1else語句2形式4:if(條件1){if(條件11)語句1}elseif(條件2)語句22.3.2選擇控制語句(4)if-elseif-else語句if-elseif-else可以實現(xiàn)更多情況的判斷。它的語句形式:if(條件表達式1)語句1elseif(條件表達式2)語句2…elseif(條件表達式n)語句nelse語句n+12.3.2選擇控制語句
它的執(zhí)行過程如圖所示。【例2.10】用if-elseif-else語句改寫例2.9。Example2_10.java(4)if-elseif-else語句2.3.2選擇控制語句switch語句也用于選擇判斷。當判斷條件較多時,用if或嵌套的if語句會降低程序的可讀性,這時可用switch實現(xiàn)多重選擇判斷。switch語句的語法形式:2.switch選擇語句2.3.2選擇控制語句switch(表達式){case常量1:語句組1;case常量2:語句組2;……case常量n:語句組n;default:語句組n+1;}2.switch選擇語句2.3.2選擇控制語句switch語句的執(zhí)行過程如圖所示。【例2.12】用switch語句重寫例2.9。Example2_12.java2.3.2選擇控制語句如果想使某一情況下只執(zhí)行某一語句組,可以在每一語句組后加上“break”語句。switch(表達式){case常量1:語句組1;break;case常量2:語句組2;break;
……case常量n:語句組n;break;default:語句組n+1;}2.3.2選擇控制語句加上“break”語句后switch語句的執(zhí)行過程如圖所示。【例2.13】重寫例2.12,使程序能有正確的運行結(jié)果。Example2_13.java2.3.3循環(huán)控制語句循環(huán)結(jié)構(gòu)根據(jù)一定的條件可以對問題或問題的部分進行反復處理,直到條件不滿足結(jié)束循環(huán)。循環(huán)結(jié)構(gòu)的程序可以更有效地利用計算機。Java語言中有三種循環(huán)語句,分別是while循環(huán)、do-while循環(huán)和for循環(huán)。while循環(huán)是先判斷條件是否為真,如果為真,則執(zhí)行循環(huán)。while循環(huán)的語句形式:1.while循環(huán)形式1:while(循環(huán)條件)一條語句(循環(huán)體)形式2:while(循環(huán)條件){多條語句(循環(huán)體)}2.3.3循環(huán)控制語句while語句的執(zhí)行過程如圖所示。【例2.14】計算1+2+3+…100值。Example2_14.java2.3.3循環(huán)控制語句do-while循環(huán)是先執(zhí)行循環(huán)體,再根據(jù)條件確定是否能再執(zhí)行循環(huán)體。do-while循環(huán)的語句形式:2.do-while循環(huán)形式1:do一條語句(循環(huán)體)while(循環(huán)條件);形式2:do{多條語句(循環(huán)體)}while(循環(huán)條件);2.3.3循環(huán)控制語句執(zhí)行過程如圖所示?!纠?.16】用do-while語句重寫例2.14。Example2_16.java2.3.3循環(huán)控制語句for循環(huán)是三種循環(huán)中使用最靈活、使用最多的循環(huán)。在for循環(huán)中,可以對變量(循環(huán)控制變量)初始化、控制循環(huán)(循環(huán)條件)和使變量變化(循環(huán)控制變量增量)。for循環(huán)的一般語法形式:for(變量初始化表達式;循環(huán)條件表達式;變量增量表達式)循環(huán)體3.for循環(huán)2.3.3循環(huán)控制語句執(zhí)行過程如圖所示?!纠?.18】用for語句重寫例2.14。Example2_18.java【例2.19】判斷一個自然數(shù)是否是素數(shù)。所謂素數(shù)是指,如果一個數(shù)如果只能被1和自身整除,則該數(shù)是素數(shù),又稱質(zhì)數(shù)。Example2_19.java一個數(shù)的因子除該數(shù)本身外不可能大于該數(shù)的一半,循環(huán)條件可以寫成:i<=x/2更快的方法:i<=(int)Math.sqrt(x)2.3.3循環(huán)控制語句for語句中有三個表達式,根據(jù)需要,三個表達式中可以沒有任何一個、沒有任何兩個,甚至三個表達式都可以沒有。形式1:沒有第1個表達式,變量i的初始化在for之前用賦值語句實現(xiàn)。
sum=0; i=1; for(;i<=100;i++) sum+=i;2.3.3循環(huán)控制語句形式2:沒有第2個表達式,循環(huán)結(jié)束的條件在循環(huán)體中判斷,其中的break語句用于結(jié)束循環(huán)。
sum=0; for(i=1;;i++) { sum+=i; if(i>=100) break; }2.3.3循環(huán)控制語句形式3:沒有第3個表達式,變量i的改變放在循環(huán)體中,成為循環(huán)體中的一條語句。
sum=0; for(i=1;i<=100;) { sum+=i; i=i+1; }2.3.3循環(huán)控制語句形式4:沒有第1個表達式和第3個表達式,綜合使用形式1和形式3。
sum=0; i=1; for(;i<=100;) { sum+=i; i++; }2.3.3循環(huán)控制語句形式5:三個表達式都沒有,綜合使用形式1、形式2和形式3。
sum=0; i=1; for(;;) { sum+=i; if(i>=100) break; i++; }2.3.3循環(huán)控制語句形式6:循環(huán)體是空循環(huán)體,累加過程放在第3個表達式中。
for(sum=0,i=1;i<=100;sum+=i,i++);2.3.3循環(huán)控制語句如果循環(huán)體中還有循環(huán)語句,則形成循環(huán)的嵌套。以下是幾種循環(huán)的嵌套形式。4.循環(huán)的嵌套形式1:for(…)while(){…}形式2:while(…)do{…}while(…);2.3.3循環(huán)控制語句如果循環(huán)體中還有循環(huán)語句,則形成循環(huán)的嵌套。以下是幾種循環(huán)的嵌套形式。4.循環(huán)的嵌套【例2.20】給定兩個自然數(shù),找出這兩個然數(shù)之間的所有素數(shù)。Example2_20.java
形式3:dofor(…){…}while(…);
形式4:while(…)while(…){…}2.3.4
選擇控制語句與循環(huán)控制語句的嵌套上面分別講述了選擇控制語句和循環(huán)控制語句。在實際使用時,兩種控制語句經(jīng)?;煊茫x擇語句嵌套循環(huán)語句,或者循環(huán)語句嵌套選擇語句。多數(shù)情況下,都是循環(huán)語句嵌套選擇語句,如例2.20和例2.21中就是循環(huán)語句嵌套了選擇語句。2.3.5break語句與continue語句在前面介紹switch語句時講過break語句。break語句用于switch中可以提前結(jié)束switch語句。break語句更多是用在循環(huán)中。break用在循環(huán)中可以提前結(jié)束它所在的循環(huán),不管后面還有多少次循環(huán)都不再被執(zhí)行了。break語句可以分成基本的break語句和帶標號的break語句。break語句和continue語句都是控制轉(zhuǎn)移語句。1.break語句2.3.5break語句與continue語句(1)基本的break語句基本的break語句的語法形式:break;一定要將這個語句放到循環(huán)體中,否則會出現(xiàn)編譯錯誤?!纠?.22】計算1!+2!+3!+……,直到某一個數(shù)的階乘大于1000_000為止(大于1000_0000的數(shù)不累加)。Example2_22.java2.3.5break語句與continue語句(2)帶標號的break語句基本的break語句使它所在的循環(huán)提前結(jié)束,而帶標號的break語句可以使標號所指的循環(huán)提前結(jié)束。帶標號的break語句的語法形式:標號:……break標號;一般地,帶標號的break語句多用在多重循環(huán)中,用于在內(nèi)層循環(huán)中提前結(jié)束外層的循環(huán)。【例2.23】找出從100開始的若干個素數(shù),直到某一個非素數(shù)的第一個因子大于15為止。Example2_23.java2.3.5break語句與continue語句continue語句用在循環(huán)中,可以使它所在循環(huán)的當前一次循環(huán)提前結(jié)束,即使它下面還有語句也不再執(zhí)行,接著執(zhí)行下一次循環(huán)。continue語句也分為基本的continue語句和帶標號的continue語句。2.continue語句2.3.5break語句與continue語句(1)基本的continue語句基本的continue語句的語法形式:continue;這條語句必須在一個循環(huán)體中?!纠?.24】從鍵盤輸入若干個正整數(shù),將其中不能被3整除的數(shù)累加在一起,并輸出其和,當輸入負數(shù)時結(jié)束。Example2_24.java2.3.5break語句與continue語句(2)帶標號的continue語句帶標號的continue語句使它標號所指的循環(huán)當前一次循環(huán)提前結(jié)束,后面的若干次循環(huán)還能繼續(xù)執(zhí)行。它的語法形式:標號:……continue標號;帶標號的continue語句一般用在多重循環(huán)中,“標號”指向外層循環(huán)。【例2.25】帶標號的continue的使用。Example2_25.java2.2輸入輸出2.3流程控制2.4數(shù)組2.1數(shù)據(jù)類型和運算符號2.5小結(jié)C目錄ONTENTS2.4.1
一維數(shù)組有一個下標的數(shù)組稱為一維數(shù)組。一維數(shù)組在使用前必須先聲明、再創(chuàng)建,最后才能使用數(shù)組。聲明一維數(shù)組有以下幾種常見形式:(1)形式1數(shù)據(jù)類型數(shù)組名[];“數(shù)據(jù)類型”表示數(shù)組中元素的數(shù)據(jù)類型,“數(shù)組名”是標識符,“[]”是下標運算符,例如:inta[];1.聲明數(shù)組2.4.1
一維數(shù)組(2)形式2數(shù)據(jù)類型[]數(shù)組名;[]與數(shù)據(jù)類型和數(shù)組名之間有無空格都可以。例如float[]x;//[]與數(shù)據(jù)類型間有空格float[]x;//[]與數(shù)據(jù)類型間無空格(3)可以一次聲明多個數(shù)組,這時需注意[]的位置。double[]x,y;//[]在數(shù)組名列表前,表示聲明兩個double型數(shù)組x和ydoublex[],y;//[]在x后,表示聲明了double型數(shù)組x,y是普通變量2.4.1
一維數(shù)組必須創(chuàng)建數(shù)組后才能使用數(shù)組。數(shù)組的創(chuàng)建方法:new數(shù)據(jù)類型[數(shù)組長度表達式]“數(shù)據(jù)類型”指的是數(shù)組元素的類型;常量表達式定義數(shù)組長度或元素個數(shù),它可以是常量、變量或者返回值為常量的任意表達式,其值的類型必須是整型。如:newint[10]創(chuàng)建了一個整型數(shù)組,共有10個元素,即a[0]到a[9]。2.創(chuàng)建數(shù)組2.4.1
一維數(shù)組數(shù)組聲明的是數(shù)組的名稱,是引用;創(chuàng)建數(shù)組則是為數(shù)組元素分配內(nèi)存空間。使用數(shù)組就是使用引用訪問元素。使用之前要把數(shù)組名和創(chuàng)建的數(shù)組聯(lián)結(jié)起來:已聲明的數(shù)組名=創(chuàng)建的數(shù)組;如前面已聲明的數(shù)組名a和x,讓它們分別表示一個數(shù)組:a=newint[10];x=newdouble[20];則可以分別通過a和x使用這兩個數(shù)組。2.4.1
一維數(shù)組也可以將數(shù)組的聲明和創(chuàng)建放在一起。如:inta[]=newint[10];doublex[]=newdouble[20];使用數(shù)組元素的形式:數(shù)組名[下標表達式]“下標表達式”的值的類型必須是整型。數(shù)組元素的下標從0開始,最大下標為“數(shù)組元素個數(shù)-1”,元素的下標值必須在這兩個數(shù)以內(nèi)。2.4.1
一維數(shù)組使用數(shù)組應注意以下幾方面問題。使用合法下標。下標有合法范圍,下標在下界和上界之外謂之越界,下標越界導致拋出異常ArrayIndexOutOfBoundsException。(異常的內(nèi)容詳見第6章)數(shù)組創(chuàng)建后,每一個元素都有默認值。對于數(shù)值型數(shù)組,默認值是0(整型、字符型)或0.0(浮點型);對于布爾型數(shù)組,默認值是false。當然,根據(jù)需要,在元素參與運算前應通過賦值的形式使元素有確定的值。在Java中,任何一個數(shù)組(無論什么類型)都有一個“l(fā)ength”屬性,該屬性表示數(shù)組的長度。如:a.length表示數(shù)組a的元素個數(shù)。0102032.4.1
一維數(shù)組使用數(shù)組應注意以下幾方面問題。數(shù)組名作為方法形參時,傳遞的是數(shù)組的引用,可在主調(diào)和被調(diào)方法之間起到“雙向傳遞”數(shù)據(jù)的效果。04【例2.26】一維數(shù)組的使用。將一個數(shù)組中的各個元素賦值并按逆序打印出來。Example2_26.java【例2.27】給定一組數(shù)據(jù),將這組數(shù)據(jù)按由小到大的順序輸出。本題采用下述方法排序。先將最大的數(shù)放到最后面。從第0(下標)個數(shù)開始,兩兩比較,如果前面的數(shù)比后的數(shù)大,則交換兩個數(shù)的值。Example2_27.java2.4.1
一維數(shù)組表達式:newint[10]創(chuàng)建一個有10個元素的整型數(shù)組,同時表達式
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無錫南洋職業(yè)技術(shù)學院《影視剪輯》2023-2024學年第一學期期末試卷
- 2025年度體育場館場地租賃與賽事運營合作協(xié)議3篇
- 2024車站機場候機樓室內(nèi)設計裝修合同
- 二零二五年度商業(yè)地產(chǎn)商鋪租賃服務合同模板6篇
- 2024版醫(yī)療合作合同條款版B版
- 2024項目委托咨詢服務協(xié)議-企業(yè)知識產(chǎn)權(quán)保護服務3篇
- 2025年度餐飲企業(yè)特色調(diào)料研發(fā)與供應合同3篇
- 二零二五年精密儀器供應鏈銷售合作框架合同樣本3篇
- 二零二五年度安防工程材料供應合同3篇
- 2024版分紅合作協(xié)議合同范本
- 勘察工作質(zhì)量及保證措施
- 體外膜肺氧合(ECMO)并發(fā)癥及護理
- 充電樁巡查記錄表
- 心電圖并發(fā)癥預防及處理
- 疏散樓梯安全要求全解析
- 汽車擾流板產(chǎn)品原材料供應與需求分析
- 臨床醫(yī)學院畢業(yè)實習管理-new-new課件
- PLC控制系統(tǒng)合同(2024版)
- CJT 511-2017 鑄鐵檢查井蓋
- ISO15189培訓測試卷及答案
- JJG(交通) 171-2021 超聲式成孔質(zhì)量檢測儀檢定規(guī)程
評論
0/150
提交評論