第二章程序數(shù)據(jù)變量和計(jì)算_第1頁
第二章程序數(shù)據(jù)變量和計(jì)算_第2頁
第二章程序數(shù)據(jù)變量和計(jì)算_第3頁
第二章程序數(shù)據(jù)變量和計(jì)算_第4頁
第二章程序數(shù)據(jù)變量和計(jì)算_第5頁
已閱讀5頁,還剩51頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第二章程序數(shù)據(jù)變量和計(jì)算第一頁,共五十六頁,編輯于2023年,星期四第二章程序、數(shù)據(jù)、變量和計(jì)算本章將介紹Java語言的基礎(chǔ)知識,包括基本語言要素、基本數(shù)據(jù)類型、變量、數(shù)組、運(yùn)算符等。扎實(shí)地掌握這些內(nèi)容對后續(xù)學(xué)習(xí)是很有必要的。第二頁,共五十六頁,編輯于2023年,星期四標(biāo)識符(Identifier)保留字(ReservedWord)1、Java語言基本元素第三頁,共五十六頁,編輯于2023年,星期四程序員對程序中的各個(gè)元素加以命名時(shí)使用的命名記號稱為標(biāo)識符(identifier)包括:類名、變量名、常量名、方法名、…

Java語言中,標(biāo)識符是以字母,下劃線(_),美元符($)開始的一個(gè)字符序列,后面可以跟字母,下劃線,美元符,數(shù)字。合法的標(biāo)識符

identifieruserNameUser_Name_sys_value$change非法的標(biāo)識符

2mail room# class

Java語言是一種區(qū)分大小寫字母

republican≠Republican1、Java語言基本元素 ——標(biāo)識符第四頁,共五十六頁,編輯于2023年,星期四具有專門的意義和用途,不能當(dāng)作一般的標(biāo)識符使用,這些標(biāo)識符稱為保留字(reservedword)。

abstractbreakbytebooleancatchcaseclasscharcontinuedefaultdoubledoelseextendsfalsefinalfloatforfinally ifimportimplementsintinterfaceinstanceoflonglengthnativenewnullpackageprivateprotectedpublicfinalreturnswitchsynchronizedshortstaticsupertrytruethisthrowthrowsthreadsafetransientvoidwhile1、Java語言基本元素 ——保留字第五頁,共五十六頁,編輯于2023年,星期四數(shù)據(jù)和返回值類型:int,void,return……包/類/成員/接口:package,class,interface訪問控制:public,private,protected循環(huán)及循環(huán)控制:if,switch,break例外處理:throw,try,finally保留詞(無含義但不能使用):goto,const1、Java語言基本元素 ——保留字:基本分類第六頁,共五十六頁,編輯于2023年,星期四在Java中,true、false和null都是小寫的。區(qū)別于C++中大寫的TRUE、FALSE和NULL。所有的數(shù)據(jù)類型所占用的字節(jié)數(shù)都是固定的,并且和實(shí)現(xiàn)無關(guān)的,因此在Java中沒有sizeof操作符。1、Java語言基本元素 ——保留字:注意事項(xiàng)第七頁,共五十六頁,編輯于2023年,星期四2、Java數(shù)據(jù)類型

常量(Constant)變量(Variable)數(shù)據(jù)類型(DataType)基本數(shù)據(jù)類型(PrimaryDataTypes)復(fù)合數(shù)據(jù)類型(CompositeDataTypes)第八頁,共五十六頁,編輯于2023年,星期四Java中的常量值是用文字串表示的,它區(qū)分為不同的類型,如整型常量123,實(shí)型常量1.23,字符常量‘a(chǎn)’,布爾常量true、false以及字符串常量"Thisisaconstantstring."。與C、C++不同,Java中不能通過#define命令把一個(gè)標(biāo)識符定義為常量,而是用關(guān)鍵字final來定義2、Java數(shù)據(jù)類型 ——常量(Constant

)第九頁,共五十六頁,編輯于2023年,星期四定義常量的語法格式(C、C++

#define命令

)

finalTypevarName=value[,varName[=value]…];

關(guān)鍵字

類型常量名常量值finalintglobalAccount=100,nationalAccount=50;finaldoublePI=3.14159布爾常量truefalse整型常量一般常量:32bit長整型常量:64bit(88L)十進(jìn)制數(shù):非0開頭的正負(fù)整數(shù)105,-23八進(jìn)制數(shù):0開頭的正負(fù)整數(shù)017(15),-023(-19)十六進(jìn)制:0x開頭的正負(fù)整數(shù)0x2F(47),-0xa8(-168)2、Java數(shù)據(jù)類型 ——常量(Constant

)第十頁,共五十六頁,編輯于2023年,星期四浮點(diǎn)常量一般浮點(diǎn)常量(32bit)3.14F6.18E3F雙精度浮點(diǎn)數(shù)(64bit)7.56D6.02E23(D可?。ヽhar型常量:用單引號界定‘’,‘a(chǎn)’采用Unicode碼,從‘\u0000’-‘\uFFFF’,其中‘\u00’-‘\uFF’為ASCII碼字符串常量:用雙引號界定“HELLO,WORLD”+號的特殊用法“Hello”+“World”即“HelloWorld”若a=4,則“a=”+a即“a=4”2、Java數(shù)據(jù)類型 ——常量(Constant

)第十一頁,共五十六頁,編輯于2023年,星期四特殊字符引用方法對應(yīng)Unicode碼 意義 ‘\b’ ‘\u0008’ 退格 ‘\t’ ‘\u0009’橫向跳格、水平制表符tab‘\n’ ‘\u000a’ 換行 ‘\r’ ‘\u000d’ 回車 ‘\”’ ‘\u0022’ 雙引號‘\’’ ‘\u0027’ 單引號‘\\’ ‘\u005c’ 反斜線2、Java數(shù)據(jù)類型 ——常量(Constant

)第十二頁,共五十六頁,編輯于2023年,星期四程序中的基本存儲單元變量聲明:先聲明,后使用聲明變量的格式(包括變量名、變量類型和作用域幾個(gè)部分)typevariableName1,variableName2,···;typevariableName1[=initValue],variableName2[=initValue],···;

類型變量名[變量初始值]如:doublea,b,c;intnSecond=10;

2、Java數(shù)據(jù)類型 ——變量第十三頁,共五十六頁,編輯于2023年,星期四Java中變量的缺省初值都是確定的:布爾變量的初值為:false整數(shù)變量的初值為:0浮點(diǎn)數(shù)變量的初值為:0.0引用(復(fù)合)變量的初值為:null在方法實(shí)現(xiàn)中定義的變量必須顯式的初始化。變量的作用域指可訪問變量的一段代碼,在程序中不同的地方聲明的變量具有不同的作用域:局部變量、類變量、方法參數(shù)、例外處理參數(shù)。在一定的作用域內(nèi),變量名必須唯一。2、Java數(shù)據(jù)類型 ——變量第十四頁,共五十六頁,編輯于2023年,星期四Unicode碼字符集是一種標(biāo)準(zhǔn)字符集。開發(fā)Unicode碼字符集的目的是,使得它能對幾乎所有語言所必需的字符進(jìn)行編碼例2、Java數(shù)據(jù)類型 ——變量名和Unicode碼第十五頁,共五十六頁,編輯于2023年,星期四Javatypesystemprimitivereferencenullcharnumericbooleanclassinterfacearrayintegralfloating-pointbyteshortintlongfloatdouble2、Java數(shù)據(jù)類型 ——數(shù)據(jù)類型基本數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型第十六頁,共五十六頁,編輯于2023年,星期四所有基本類型所占的位數(shù)都是確定的,并不因操作系統(tǒng)的不同而不同。所有基本類型的關(guān)鍵詞都是小寫的。數(shù)據(jù)類型 所占位數(shù) 數(shù)的范圍 缺省數(shù)值

char 16 0~65535‘\u0000’byte 8 -27~27-10short 16 -215~215-1 0int 32 -231~231-1 0long 64 -263~263-1 0float 32 3.4e-038~3.4e+0380.0F

double 64 1.7e-308~1.7e+3080.0Dboolean8falseortruefalse2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型第十七頁,共五十六頁,編輯于2023年,星期四布爾型數(shù)據(jù)只有兩個(gè)值true和false,且它們不對應(yīng)于任何整數(shù)值

布爾型變量的定義如: booleanb=true; 布爾型數(shù)據(jù)只能參與邏輯關(guān)系運(yùn)算:&&||==!=!示例:

Boolean.java2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:布爾類型(boolean)注意:boolean型變量不同于其他基本數(shù)據(jù)類型,它不能強(qiáng)制轉(zhuǎn)換成其他基本數(shù)據(jù)類型,而且其他數(shù)據(jù)基本類型也不能轉(zhuǎn)換成boolean型第十八頁,共五十六頁,編輯于2023年,星期四char型變量存儲一個(gè)字符,每個(gè)字符在內(nèi)存中占用16位,兩個(gè)字節(jié)。(Unicode)字符常量是用單引號括起來的一個(gè)字符‘a(chǎn)’‘B’‘\n’‘\u0030’說明和初始化字符變量:charmyCharacter=‘X’;這條語句用字母‘X’的Unicode碼字符表示初始化變量。

2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:字符類型(char)第十九頁,共五十六頁,編輯于2023年,星期四——字符轉(zhuǎn)義序列通過指定轉(zhuǎn)義序列中字符代碼的十六進(jìn)制表示,編程者可以定義Unicode碼字符\表示轉(zhuǎn)義序列開始。把\u放在由4個(gè)十六進(jìn)制數(shù)字表示的字符前,為該Unicode碼字符建立轉(zhuǎn)義序列。例由于字母X的Unicode編碼為0x0058,所以:charmyCharacter=‘X’;charmyCharacter=‘\u0058’;第二十頁,共五十六頁,編輯于2023年,星期四特殊字符的常量表示法:反斜線(Backslash) ‘\\’退格(Backspace) ‘\b’回車(Carriagereturn) ‘\r’進(jìn)紙符(Formfeed) ‘\f’制表符(Formfeed) ‘\t’換行(Newline) ‘\n’單引號(Singlequote) ‘\’’八進(jìn)制數(shù)(‘\0’~‘\377’) ‘\DDD’Unicode字符 ‘\uHHHH’2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:字符類型(char)第二十一頁,共五十六頁,編輯于2023年,星期四

char型變量,內(nèi)存分配給2個(gè)字節(jié),占16位,最高位不是符號位,沒有負(fù)數(shù)的char。char型變量的取值范圍是0~65536。要觀察一個(gè)字符在Unicode表中的順序位置,必須使用int類型顯示轉(zhuǎn)換,不可以使用short型轉(zhuǎn)換,因?yàn)閏har的最高位不是符號位。同樣,要得到一個(gè)0~65536之間的數(shù)所代表的Unicode表中相應(yīng)位置上的字符也必須使用char型顯示轉(zhuǎn)換。下面的例子2中,分別用顯示轉(zhuǎn)換來顯示一些字符在Unicode表中的位置,以及某些位置上的字符。2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:字符類型(char)第二十二頁,共五十六頁,編輯于2023年,星期四字符放入算數(shù)運(yùn)算charmyCharacter=‘X’;myCharacter+=1;‘Y’2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:字符類型(char)

charachar=0;charbchar=‘\u0028’;achar=(char)(2*bchar+8)X的代碼值0x0058第二十三頁,共五十六頁,編輯于2023年,星期四整型常量1.十進(jìn)制整數(shù) 如123,-456,02.八進(jìn)制整數(shù) 以0開頭,如0123表示十進(jìn)制數(shù)83,-011表示十進(jìn)制數(shù)-9。3.十六進(jìn)制整數(shù) 以0x或0X開頭,如0x123表示十進(jìn)制數(shù)291,-0X12表示十進(jìn)制數(shù)-18。整型變量整型變量的定義如: intx=123; //指定變量x為int型,且賦初值為123byteb=8;shorts=10;longy=123L;longz=123l;2、Java數(shù)據(jù)類型——基本數(shù)據(jù)類型:整數(shù)類型(byte,short,int,long)第二十四頁,共五十六頁,編輯于2023年,星期四64位長整數(shù)以l或L結(jié)尾:12l,-343L,

0xfffffffffL沒有以l或L結(jié)尾的數(shù)字,根據(jù)其實(shí)際值所屬范圍,可以被用作byte,short,或int型整數(shù)以l或L結(jié)尾的數(shù)字,無論其實(shí)際值所屬范圍怎樣,都被用作long型整數(shù)2、Java數(shù)據(jù)類型——基本數(shù)據(jù)類型:整數(shù)類型(byte,short,int,long)第二十五頁,共五十六頁,編輯于2023年,星期四實(shí)型常量1.十進(jìn)制數(shù)形式 由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),如0.123,.123,123.,123.02.科學(xué)計(jì)數(shù)法形式 如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。當(dāng)編程者指定浮點(diǎn)型常量時(shí),按照默認(rèn)方式這些常量將是雙精度類型。當(dāng)編程者希望指定單精度型數(shù)值時(shí),只需在該數(shù)值后加后綴F或f.0.23f,1.23E-4f,

.18F2、Java數(shù)據(jù)類型——基本數(shù)據(jù)類型:浮點(diǎn)數(shù)類型,實(shí)型(float,double)第二十六頁,共五十六頁,編輯于2023年,星期四實(shí)型變量類型為float或double,float在機(jī)器中占32位,double占64位。實(shí)型變量的定義如:doubled1=127.0; \\賦初值為127doubled2=127; \\賦初值為127floatf1=127.0f; \\必須在數(shù)字后加f或Ffloatf2=4.0e38f; \\錯誤!32位浮點(diǎn)數(shù)不能超過 \\3.4028234663852886e38floatf3=(float)d1; \\必須強(qiáng)制類型轉(zhuǎn)換2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:浮點(diǎn)數(shù)類型,實(shí)型(float,double)第二十七頁,共五十六頁,編輯于2023年,星期四同種數(shù)據(jù)類型轉(zhuǎn)換:短類型

長類型:默認(rèn)長類型短類型:強(qiáng)制例不同數(shù)據(jù)類型轉(zhuǎn)換——字符/數(shù)值:強(qiáng)制 例:inta; longb; charc; b=a; a=(int)b;c=(char)a;a=(int)c布爾型與其他數(shù)據(jù)類型之間不能強(qiáng)制類型轉(zhuǎn)換byteshortintlongfloatdouble2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:數(shù)據(jù)類型轉(zhuǎn)換第二十八頁,共五十六頁,編輯于2023年,星期四importjava.io.*;publicclassa{publicstaticvoidmain(Stringargs[]){inti=65;charc=‘a(chǎn)’,cc=‘劉’;System.out.println(i); 65System.out.println((char)i); ASystem.out.println(c); aSystem.out.println((int)c); 97 System.out.println(cc); 劉System.out.println((int)cc); 21016System.out.println((char)29579); 王}}2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:數(shù)據(jù)類型轉(zhuǎn)換第二十九頁,共五十六頁,編輯于2023年,星期四數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則:不能對boolean類型進(jìn)行類型轉(zhuǎn)換。不能把對象類型轉(zhuǎn)換成不相關(guān)類的對象。在把容量大的類型轉(zhuǎn)換為容量小的類型時(shí)必須使用強(qiáng)制類型轉(zhuǎn)換。2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:數(shù)據(jù)類型轉(zhuǎn)換第三十頁,共五十六頁,編輯于2023年,星期四例如

intx=(int)34.89;輸出x將是34,強(qiáng)制轉(zhuǎn)換運(yùn)算可能導(dǎo)致精度的損失。當(dāng)把一個(gè)整數(shù)賦值給一個(gè)byte、short、int或long型變量時(shí),不可以超出這些變量的取值范圍,否則必須進(jìn)行類型轉(zhuǎn)換運(yùn)算。下面我們看一個(gè)例子:2、Java數(shù)據(jù)類型 ——基本數(shù)據(jù)類型:數(shù)據(jù)類型轉(zhuǎn)換第三十一頁,共五十六頁,編輯于2023年,星期四在Java中,引用(reference)指向一個(gè)對象在內(nèi)存中的位置,本質(zhì)上它是一種帶有很強(qiáng)的完整性和安全性限制的指針。當(dāng)你聲明某個(gè)類、接口或數(shù)組類型的變量時(shí),那個(gè)變量的值總是某個(gè)對象的引用或者是null。指針就是簡單的地址而已,引用除了表示地址而外,還是被引用的數(shù)據(jù)對象的縮影,還提供其他信息。指針可以有++、--運(yùn)算,引用不可以運(yùn)算。引用型變量只支持有限的邏輯判斷:相等判斷(是否同一個(gè)對象的引用):==!=theObject==null otherObject!=theObject2、Java數(shù)據(jù)類型 ——復(fù)合(引用)數(shù)據(jù)類型第三十二頁,共五十六頁,編輯于2023年,星期四運(yùn)算符(Operator)和表達(dá)式(Expression)注釋(Comment)語句(Statement)代碼段(CodeBlock)作用域(Scope)3、Java語言的結(jié)構(gòu)第三十三頁,共五十六頁,編輯于2023年,星期四(1)運(yùn)算符算術(shù)運(yùn)算符:+,―,*,/,%,++,――關(guān)系運(yùn)算符:>,<,>=,<=,==,!=布爾邏輯運(yùn)算符:!,&&,||位運(yùn)算符:>>,<<,>>>,&,|,^,~賦值運(yùn)算符:=,及其擴(kuò)展賦值運(yùn)算符如+=,―=,*=,/=等。條件運(yùn)算符:?:3、Java語言的結(jié)構(gòu) ——運(yùn)算符和表達(dá)式第三十四頁,共五十六頁,編輯于2023年,星期四其它分量運(yùn)算符·,下標(biāo)運(yùn)算符[],實(shí)例運(yùn)算符instanceof,內(nèi)存分配運(yùn)算符new,強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型),方法調(diào)用運(yùn)算符()…由于數(shù)據(jù)類型的長度是確定的,所以沒有長度運(yùn)算符sizeof。3、Java語言的結(jié)構(gòu) ——運(yùn)算符和表達(dá)式第三十五頁,共五十六頁,編輯于2023年,星期四(2)表達(dá)式表達(dá)式是由操作數(shù)和運(yùn)算符按一定的語法形式組成的符號序列。一個(gè)常量或一個(gè)變量名字是最簡單的表達(dá)式,其值即該常量或變量的值;表達(dá)式的值還可以用作其他運(yùn)算的操作數(shù),形成更復(fù)雜的表達(dá)式。例: x num1+num2 a*(b+c)+d 3.14 x<=(y+z) x&&y||z3、Java語言的結(jié)構(gòu) ——運(yùn)算符和表達(dá)式第三十六頁,共五十六頁,編輯于2023年,星期四(3)運(yùn)算符的優(yōu)先次序1) .,

[],() 9) &2) ++,--,!,~,instanceof 10) ^3) new(type) 11) |4) *,/,% 12) &&5) +,- 13) ||6) >>,>>>,<< 14) ?:7) >,<,>=,<= 15) =,+=,-=,*=,/=,%=,^=8) ==,!= 16) &=,|=,<<=,>>=,>>>=3、Java語言的結(jié)構(gòu) ——運(yùn)算符和表達(dá)式第三十七頁,共五十六頁,編輯于2023年,星期四舉例://單行注釋,簡單的解釋語句含義./*多行注釋,用來說明更多的內(nèi)容,包括算法等.……*/3、Java語言的結(jié)構(gòu) ——注釋第三十八頁,共五十六頁,編輯于2023年,星期四一個(gè)由分號(;)結(jié)尾的單一命令是一條語句(Statement),一條語句一般是一行代碼,但也可以占多行代碼。inta=1;//變量定義及初始化語句用大括號({……})圍起來的多條語句構(gòu)成一個(gè)代碼段(Codeblock);classAclass{ for(inti=0;i<=1;i++){…… …… } }3、Java語言的結(jié)構(gòu) ——語句和代碼段第三十九頁,共五十六頁,編輯于2023年,星期四作用域(Scope)決定了變量可使用的范圍成員變量(Globalvariables):變量可以在整個(gè)類中被訪問;例本地變量(Localvariables):變量只能在定義其的代碼段中被訪問。例作用域規(guī)則:在一個(gè)代碼段中定義的變量只能在該代碼段或者該代碼段的子代碼段中可見。3、Java語言的結(jié)構(gòu) ——作用域第四十頁,共五十六頁,編輯于2023年,星期四classScoping{intx=0;voidmethod1(){inty;y=x;//OK.method1可以訪問y.}voidmethod2(){intz=1;z=y;//Error.y在method2的作用域之外定義}}3、Java語言的結(jié)構(gòu) ——作用域第四十一頁,共五十六頁,編輯于2023年,星期四位運(yùn)算符用來對二進(jìn)制位進(jìn)行操作,分為左移位操作和右移位操作。(1)左移位運(yùn)算符左移位運(yùn)算的符號為:<<,是雙目運(yùn)算符。左移位運(yùn)算符左面的操作元稱作被移位數(shù),右面的操作數(shù)稱作移位量,操作元必須是整型類型的數(shù)據(jù)。假設(shè)a是一個(gè)被移位的整型數(shù)據(jù),n是位移量。a<<n運(yùn)算的結(jié)果是通過將a的所有位都左移n位,每左移一個(gè)位,左邊的高階位上的0或1被移出丟棄,并用0填充右邊的低位。3、Java語言的結(jié)構(gòu) ——移位運(yùn)算符第四十二頁,共五十六頁,編輯于2023年,星期四

對于byte或short型數(shù)據(jù),a<<n的運(yùn)算結(jié)果是int型精度。當(dāng)進(jìn)行a<<2運(yùn)算時(shí),計(jì)算系統(tǒng)首先將a升級為int型數(shù)據(jù),對于正數(shù)將高位用0填充;負(fù)數(shù)用1填充,然后在進(jìn)行移位運(yùn)算。例如,對于bytea=-8;11111000在進(jìn)行a<<1運(yùn)算時(shí),首先將11111000生級為int型,將高位用1填充:11111111111111111111111111111000然后在進(jìn)行移位運(yùn)算得到-16:111111111111111111111111111100003、Java語言的結(jié)構(gòu) ——移位運(yùn)算符第四十三頁,共五十六頁,編輯于2023年,星期四

因此,如果把a(bǔ)<<1的結(jié)果賦值給一個(gè)byte型變量就必須進(jìn)行強(qiáng)制轉(zhuǎn)換運(yùn)算:byteb=(byte)(a<<1);在進(jìn)行a<<n運(yùn)算時(shí),如果a是byte、short或int型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%32的結(jié)果m,然后進(jìn)行a<<m運(yùn)算。例如,a<<33的計(jì)算結(jié)果與a<<1相同。對于long型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%64的結(jié)果m,然后進(jìn)行a<<m運(yùn)算。3、Java語言的結(jié)構(gòu) ——移位運(yùn)算符第四十四頁,共五十六頁,編輯于2023年,星期四(2)右移位運(yùn)算符右移位運(yùn)算的符號為:>>,是雙目運(yùn)算符。假設(shè)a是一個(gè)被移位的整型數(shù)據(jù),n是位移量。a>>n運(yùn)算的結(jié)果是通過將a的所有位都右移n位,每右移一個(gè)位,右邊的低階位被移出丟棄,并用0或1填充左邊的高位,a是正數(shù)用0填充,負(fù)數(shù)時(shí)用1填充。因此,a每右移一次,如果該數(shù)的每一計(jì)算有效位都沒有從低位移出時(shí),就相當(dāng)于將a除以2并舍棄了余數(shù)。整數(shù)不斷右移位的最后結(jié)果一定是0,而負(fù)數(shù)不斷右移位的最后結(jié)果是-1。對于byte或short型數(shù)據(jù),a>>n的運(yùn)算結(jié)果是int型精度。3、Java語言的結(jié)構(gòu) ——移位運(yùn)算符第四十五頁,共五十六頁,編輯于2023年,星期四

在進(jìn)行a>>n運(yùn)算時(shí),如果a是byte、short或int型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%32的結(jié)果m,然后進(jìn)行a>>m運(yùn)算,例如,a>>33的計(jì)算結(jié)果與a>>1相同。對于long型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%64的結(jié)果m,然后進(jìn)行a>>m運(yùn)算。在下面的例子中,用戶輸入移位運(yùn)算的兩個(gè)操作元,程序給出右移和左移后的結(jié)果。3、Java語言的結(jié)構(gòu) ——移位運(yùn)算符第四十六頁,共五十六頁,編輯于2023年,星期四

(1)“按位與”運(yùn)算符“&”是雙目運(yùn)算符,對兩個(gè)整型數(shù)據(jù)a、b按位進(jìn)行運(yùn)算,運(yùn)算結(jié)果是一個(gè)整型數(shù)據(jù)c。運(yùn)算法則是:如果a、b兩個(gè)數(shù)據(jù)對應(yīng)位都是1,則c的該位是1,否則是0。(2)“按位或”運(yùn)算符“|”是雙目運(yùn)算符。對兩個(gè)整型數(shù)據(jù)a、b按位進(jìn)行運(yùn)算,運(yùn)算結(jié)果是一個(gè)整型數(shù)據(jù)c。運(yùn)算法則是:如果a、b兩個(gè)數(shù)據(jù)對應(yīng)位都是0,則c的該位是0,否則是1。(3)“按位非”運(yùn)算符“~”是單目運(yùn)算符。對一個(gè)整型數(shù)據(jù)a按位進(jìn)行運(yùn)算,運(yùn)算結(jié)果是一個(gè)整型數(shù)據(jù)c。運(yùn)算法則是:如果a對應(yīng)位是0,則c的該位是1,否則是0。3、Java語言的結(jié)構(gòu) ——位運(yùn)算符第四十七頁,共五十六頁,編輯于2023年,星期四(4)“按位異或”運(yùn)算符“^”是雙目運(yùn)算符。對兩個(gè)整型數(shù)據(jù)a、b按位進(jìn)行運(yùn)算,運(yùn)算結(jié)果是一個(gè)整型數(shù)據(jù)c。運(yùn)算法則是:如果a、b兩個(gè)數(shù)據(jù)對應(yīng)位相同,則c的該位是0,否則是1。

在下面的例子中,利用“異或”運(yùn)算的性質(zhì),對幾個(gè)字符進(jìn)行加密并輸出密文,然后再解密。3、Java語言的結(jié)構(gòu) ——位運(yùn)算符第四十八頁,共五十六頁,編輯于2023年,星期四

條件運(yùn)算符是一個(gè)3目運(yùn)算符,它的符號是:“?:”,需要連接3個(gè)操作元,用法如下:op1?op2:op3要求第一個(gè)操作元op1的值必須是boolean型數(shù)據(jù)。運(yùn)算法則是:當(dāng)op1的值是true時(shí),op1?op2:op3運(yùn)算的結(jié)果是op2的值;當(dāng)op1的值是false時(shí),op1?op2:op3運(yùn)算的結(jié)果是op3的值。例如,12>8?100:200的結(jié)果是100;12<8?100:200的結(jié)果是200。3、Java語言的結(jié)構(gòu) ——條件運(yùn)算符第四十九頁,共五十六頁,編輯于2023年,星期四運(yùn)算符例—移位移位>>帶符號右移:左側(cè)空出位全用符號位填充<<左移:符號位被擠掉x二進(jìn)制補(bǔ)碼表示 x<<2x>>2 30 00011110 0111100000000111 -17 11101111 1011110011111011 128>>1128/21=64256>>4256/24=16-256>>4-256/24=-16128<<1128*21=25616<<216

溫馨提示

  • 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

提交評論