




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第2章數據類型與運算符本章要點目標理解:常量、變量和表達式。掌握:Java中的八種原始數據類型。掌握:運算符和表達式的應用。重點掌握:熟練使用整型、浮點型、字符型常用的數據類型的定義,表示和引用。掌握:算術運算符、關系運算符和邏輯運算符的應用。難點掌握:自增、自減運算符的不同用法。2.1.1常量定義:常量是在程序運行過程中其值始終保持不變的量。聲明常量語法:final數據類型常量名=值;例如:finalintA=12;一般常量用大寫。2.1.2變量定義:變量是在程序運行時值會發生變化的量。聲明變量語法:數據類型變量名1[,變量名2,……];數據類型變量名1[=初值][,變量名2[=初值],…];intk;//聲明一個存放整型且名是k的變量floatx,y;//聲明浮點型變量x,ycharch=‘w’;//聲明字符變量ch,初值為w2.1常量、變量和表達式2.1常量、變量和表達式【例2-1】源程序名“ComputeArea.java”,計算面積示例。
//ComputeArea為類名; publicclassComputeArea{ publicstaticvoidmain(Stringargs[]){
doubleradius,area; //聲明變量; finaldoublePI=3.1415926; //聲明常量; radius=20; //給變量賦值;
area=radius*radius*PI;
System.out.println(“area
is”+area); } }
2.2數據類型每個數據類型都有一個值域,或者叫做范圍。編譯器根據變量或常量的數據類型對其分配存儲空間。Java為數值、字符值和布爾值數據提供了幾種基本數據類型。Java語言的數據類型劃分如圖2-1。數據類型基本數據類型類class數據類型整數類型浮點類型字符類型char布爾類型boolean接口interface數組單精度浮點型float雙精度浮點型double字節型byte短整型short整型int長整型long圖2-1Java語言的數據類型2.2數據類型表2-1Java的基本數據類型數據類型關鍵字占用位數缺省數值取值范圍布爾型boolean8falsetrue,false字符型char16‘\u0000’'\u0000'~'\uFFFF'’字節型byte80–128~127短整型short160–32768~32767整型int320–2147483648~2147483647長整型long640–9223372036854775808~9223372036854775807單精度float320.0F-3.4E38~3.4E38雙精度double640.0D-1.7E308~1.7E3082.2數據類型2.2.1整數類型包括四種類型:byte、short、int、long。整數常量:十進制整數,如,10,-4;八進制整數,以0開頭,如010,-012。十六進制整數,以0x開頭,如0x10,零x。Java默認整數常量類型為int;要表示long類型需要在整數后面加上L或l。整數變量:聲明整數類型變量:int
aintvar //聲明aintvar變量是int類型;long alongvar //聲明alongvar變量是long類型;注意:要根據變量可能處于的最大值選擇合適的整型。2.2.2浮點類型包括兩種類型:float和doubleJava默認的浮點型是double類型;數字后面跟d或D,表示double類型;數字后面跟f或F,表示float類型;2.2數據類型【例2-2】源程序名“TypeMaxValue.java”,數值數據類型的最大值示例。
publicclassTypeMaxValue{
publicstaticvoidmain(Stringargs[])
{ bytelargestByte=Byte.MAX_VALUE; //定義byte類型變量 shortlargestShort=Short.MAX_VALUE; //定義short類型變量
int
largestInteger=Integer.MAX_VALUE; //定義int類型的變量 longlargestLong=Long.MAX_VALUE; //定義long類型的變量 floatlargestFloat=Float.MAX_VALUE; //定義float類型的變量 doublelargestDouble=Double.MAX_VALUE;//定義double類型變量 //在屏幕上顯示對應類型的最大值
System.out.println("最大的byte值是:"+largestByte);
System.out.println("最大的short值是:"+largestShort); System.out.println("最大的integer值是:"+largestInteger);
System.out.println("最大的long值是:"+largestLong);
System.out.println("最大的float值是:"+largestFloat);
System.out.println("最大的double值是:"+largestDouble);}
}2.2數據類型運行結果程序分析Java中每種數據類型都封裝為一個類,通過類型類的MAX_VALUE方法找到各種數值數據類型的取值最大值。2.2數據類型2.2.3字符類型字符型常量字符型常量就是用兩個單引號括起來的一個字符。如‘A’,‘1’,‘’表示空格。FinalcharNAME=‘A’;字符型變量字符型變量是char,用于表示單個字符。charletter=‘d’;charnumchar=‘2’; 字符串常量字符串常量就是括在兩個雙引號之間0個或多個字符組成的序列。Stringmessage=“WelcometoJava!”;//字符串必須用雙引號括住。
注意:字符型變量可以進行增量減量運算。“A”是字符串;而‘A’是字符。2.2數據類型2.2.4布爾類型布爾數據類型的值域包括兩個值:真(true)和假(false)。boolean
doorOpen=true;布爾類型的值不能轉換成任何數據類型,true不等于1,false也不等于0。2.2.5類型之間的轉換自動類型轉換自動轉換按照低級類型轉換成高級類型的規則進行,有系統自動實現。bye->short->int->long->float->double //從左到右依次自動轉換char->int //char類型可以直接轉換成int類型強制類型轉換由高級類型向低級類型轉換叫做強制類型轉換。格式:(目標數據類型)變量名或表達式例如:inta=345; byteb; b=(byte)a;2.2數據類型【例2-3】源程序名“TypeTest.java”,數據類型轉換示例。
publicclassTypeTest{ publicstaticvoidmain(Stringargs[]){
intc; longd=6000; floatf; doubleg=123456789.987654321; c=(int)d;f=(float)g;//導致精度的損失.System.out.println("c="+c);System.out.println("d="+d);System.out.println("f="+f);System.out.println("g="+g);}}2.1簡單數據類型運行結果
程序分析將long類型數據強制轉換為int類型,有些情況可能導致數據溢出。將double類型數據強制轉換為float類型,將導致精度的損失,通過運行結果可以看出。所以,進行數據類型的強制轉換時一定需要慎重。2.2.6轉義序列轉義字符代表一些特殊字符。轉義字符主要通過在字符前加一個反斜杠“\”來實現。常用的轉義字符
轉義字符含
義轉義字符含
義'\b'退格'\uxxxx'用4位16進制數表示字符'\t'制表符tab'\"'雙引號'\r'回車'\''單引號'\n'換行'\\'反斜線'\f'換頁'\ddd'用3位8進制數表示字符2.2數據類型2.3運算符和表達式運算符是表明作何種運算的符號。操作數是被運算的數據。表達式是由操作數和運算符組成的式子。表達式的運算結果稱為表達式的值。Java提供的運算符,按操作數的數目來分,可有:一元運算符:需要一個操作數。++i,--i,+i,-i二元運算符:需要二個操作數。a+b,a-b,a>b三元運算符:需要三個操作數。表達式1?表達式2:表達式3三目表達式的運算規則是:如果表達式1的值為true,則整個表達式的值取表達式2的值。如果表達式1的值為false,則整個表達式的值取表達式3的值。例如,4>3?4:3表達式的值為4。多數二元運算符具有自左向右的結合性,一元運算符具有自右向左結合性。運算符按功能分為8類:算術運算符;關系運算符;邏輯運算符;位運算符;條件運算符;賦值運算符;擴展運算符;其他運算符(分量運算符,下標運算符等)。2.3運算符和表達式2.3.1算術運算符算術運算符可以對數值型和字符型數據進行運算,但不能對布爾類型數據進行運算。表2-3Java定義的算術運算符運算符意義運算符意義+加%求余-減++自增*乘--自減/除基本算術運算符加,減,乘,除;注意:對整數進行“/”除法運算時,所有余數都去掉。doublei1=1.0/2.0;//i1的結果是0.5
inti2=1/2;//i2的結果是0inti3=5/2; //i3的結果是2doublei4=5.0/2.0//i4的結果是2.5 2.3運算符和表達式2.3.1算術運算符模運算符整數,浮點數都可以進行模運算,其結果是整數和浮點數。inti5=42%10 //i5的值為2doublei6=42.5%10//i6的值為2.5自增和自減運算符x++,++x等同于x=x+1;x--,--x等同于x=x-1;++,--前置后置于變量使用不同若運算符是前置于變量的,則變量先加1或減1,再參與表達式中的運算。若運算符是后置于變量的,則變量先參與表達式的運算,再加1或減1。例如:inti=10;intn;n=10*i++;//先算10*i即10*10等于100,再計算機i++,i的值是11,n值是100另例:doublex=1.0;doubley=5.0;doublez=x--+(++y);三行都執行完后,y變為6.0,z變為7.0,而x變為0.0。2.3運算符和表達式2.3.2關系運算符和邏輯運算符關系運算符關系運算又稱比較運算,用來比較兩個同類型數據的大小。關系運算符都是雙目運算符。關系運算的結果是布爾值,即true(真)或false(假)。Java提供的關系運算符見表2-4表。表2-4比較運算符運算符名稱例結果<小于1<3true<=小于等于1<=3true>大于1>2false>=大于等于1>=2false==等于1==2false2.3運算符和表達式邏輯運算符邏輯運算又稱布爾運算,是對布爾值進行運算,其運算結果仍為布爾值。常用的邏輯運算符如表2-5所示。
表2-5邏輯運算符運算符名稱舉例描述!非!x對x進行取反運算。例如,若x為true,結果為false&&與x&&y若x和y都為true,結果才為true||或x||y若x和y都為false,結果才為false^異或x^y假設變量x=1和y=2,則(x>1)^(y==2)的結果為true。2.3運算符和表達式2.3.3位運算符位運算符用于對二進制位(bit)進行運算。位運算符的操作數和結果都是整數。常見的位運算符如表2-6所示。表2-6位運算符運算符名稱應用舉例運算規則~按位取反~x對x每個二進制位取反&按位與x&y對x,y每個對應的二進制位做與運算|按位或x|y對x,y每個對應的二進制位做或運算^按位異或x^y對x,y每個對應的二進制位做異或運算<<按位左移x<<a將x各二進制位左移a位>>按位右移x>>a將x各二進制位右移a位>>>不帶符號的按位右移x>>>a將x各二進制位右移a位,左面的空位要補02.3運算符和表達式2.3.4賦值運算符和條件運算符賦值運算符賦值運算符用于給變量或對象賦值。基本賦值運算符使用形式:變量或對象=表達式“=”的作用是,把右邊表達式的值賦給左邊的變量或對象。例如:j=k=i+2;//運算順序是,先將i加2的值賦給k,再把k的值賦給j。x=12.45;y=2*x+1;i=(int)x;條件賦值運算符:條件賦值運算符(?:)是三元運算符。一般形式:<表達式1>?<表達式2>:<表達式3>A=5;B=A>10?100:1000; //結果B為10002.3運算符和表達式2.3.5擴展運算符擴展運算符是在基本賦值運算符前面加上其他運算符后構成的賦值運算符。Java提供的各種擴展運算符見表2-7所示。表2-7擴展運算符表2-7復合賦值運算符運算符名稱舉例功能+=加賦值運算符a+=ba=a+b-=減賦值運算符a-=ba=a-b*=乘賦值運算符a*=ba=a*b/=除賦值運算符a/=ba=a/b%=取余賦值運算符a%=ba=a%b&=位與賦值運算符a&=ba=a&b|=位或賦值運算符a|=ba=a|b^=位異或賦值運算符a^=ba=a^b<<=算術左移賦值運算符a<<=ba=a<<b>>=算術右移賦值運算符a>>=ba=a>>b2.3運算符和表達式2.3.6其他運算符分量運算符(“.”):意為Sytem類的out方法;實例運算符(instanceof):tinstanceofTread; //用來測試t是否是Tread的一個實例內存分配運算符(new):t=newThread(“T1”);
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論