第2章-基礎(chǔ)數(shù)據(jù)類型_第1頁
第2章-基礎(chǔ)數(shù)據(jù)類型_第2頁
第2章-基礎(chǔ)數(shù)據(jù)類型_第3頁
第2章-基礎(chǔ)數(shù)據(jù)類型_第4頁
第2章-基礎(chǔ)數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2023/2/11第二章數(shù)據(jù)類型、運算符和表達(dá)式第二章數(shù)據(jù)類型、運算符和表達(dá)式2.1數(shù)據(jù)類型與變量2.2運算符與表達(dá)式2.3優(yōu)先級與基本數(shù)據(jù)類型轉(zhuǎn)換2.4引用類型與引用變量2.5Math類的常量與方法第二章數(shù)據(jù)類型、運算符和表達(dá)式2.1數(shù)據(jù)類型與變量2.1.1關(guān)鍵字與標(biāo)識符2.1.2數(shù)據(jù)類型2.1.3常量2.1.4變量2023/2/142.1.1Java中的標(biāo)識符標(biāo)識符可以用來標(biāo)識變量名、類名、類中的方法名和文件名等.標(biāo)識符組成:(1)

字母,(2)數(shù)字,(3)下劃線“_”和(4)美元符號“$”;首字符必須是(1)

字母,(2)下劃線“_”和(3)美元符號“$”;所有標(biāo)識符是區(qū)分大小寫的;除去關(guān)鍵字、false、true和null;2023/2/15問題:是/不是標(biāo)識符?myVariable

9pinsMYVARIABLEia+ctesting1-2-3_myvariablejava¨MyVariable$myvariable

_9pinsIt's貓Java中的標(biāo)識符編程規(guī)范

類名和接口名:首字母大寫,其余字母小寫,如SamDoc;方法名和變量名:首字母小寫,其余的字母大寫,如bothEyesOfDoll;包名:字母全部小寫,如com.abc.dollapp;常量名:采用大寫形式,單詞之間以下劃線“_”隔開,如DEFAULT_COLOR_DOL。

2023/2/17Java關(guān)鍵字具有特殊含義的字符序列例如:public、static和class

具有特殊用途,不能作為變量名、方法名和類名2023/2/18Java關(guān)鍵字(48個)abstract default if private thisboolean do implements protected throwbreak double import public throwsbyte else instanceof return transientcase extends int short trycatch final interface static voidchar finally long strictfp volatileclass float native super whileconst for new switchcontinue goto package synchronized2023/2/192.1.2數(shù)據(jù)類型2023/2/110基本數(shù)據(jù)類型所有基本類型所占的位數(shù)都是確定的,并不因操作系統(tǒng)的不同而不同。數(shù)據(jù)類型 所占位數(shù) 數(shù)的范圍

boolean1true,falsechar 16 0~65535byte

8

-27~27-1short 16 -215~215-1

int 32 -231~231-1 long 64 -263~263-1float 32 3.4e-038

~3.4e+038double 64 1.7e-308

~1.7e+3082023/2/111舉例2-1【例2-1】幾種常見數(shù)據(jù)類型舉例2.1.3常量在Java語言中,將程序運行時不能被修改的量稱為常量,分為常數(shù)和標(biāo)識符常量。標(biāo)識符常量實際上是變量,只是在它的值初始化后,就不允許再修改。它需要先聲明后使用,即給一個常數(shù)取具有具體含義的名字。常數(shù)是Java源程序種表示的常數(shù)值,如:123、1.25、0x10、false、‘a(chǎn)’等,均表示為具體的值。在Java中,常量分為整型、浮點型、布爾型、字符型和字符串等。2023/2/113整型數(shù)據(jù)——byte,short,int,long1.十進制整數(shù) 如123,-456,02.八進制整數(shù) 以0開頭,如0123表示十進制數(shù)83,-011表示十進制數(shù)-9。3.十六進制整數(shù) 以0x或0X開頭,如0x123表示十進制數(shù)291,-0X12表示十進制數(shù)-18。2023/2/114浮點型(實型)數(shù)據(jù)——float,double1.十進制數(shù)形式 由數(shù)字和小數(shù)點組成,且必須有小數(shù)點,如0.123,.123,123.,123.02.科學(xué)計數(shù)法形式 如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須為整數(shù)。2023/2/115布爾類型——boolean布爾型數(shù)據(jù)只有兩個值true和false,且它們不對應(yīng)于任何整數(shù)值2023/2/116字符類型——char字符常量字符常量是用單引號括起來的一個字符,如‘a(chǎn)’,‘A’,‘學(xué)’;字符串常量字符串常量是用雙引號括起來的多個字符,如“aA”,“學(xué)生”,”學(xué)”字符常量對于字符常量來說,Java語言中字符采用Unicode字符集的編碼方案,可表示的字符范圍0—65535。字符型常量值有兩種表示方法。對于可輸入字符,用單引號將字符括起來,如‘a(chǎn)’,‘編’等。對于不可輸入字符,采用轉(zhuǎn)義字符表示。轉(zhuǎn)義字符在JAVA中轉(zhuǎn)義字符有:八進制轉(zhuǎn)義序列:\+1到3位八進制數(shù)字;范圍‘\000’~‘\377’;\0:空字符Unicode轉(zhuǎn)義字符:\u+四個十六進制數(shù)字;0~65535;\u0000:空字符特殊的字符Java語言中還包含特殊字符有3個分別是:雙引號(\"),單引號(\'),反斜線(\\)??刂谱址?個,分別是:回車(\r),換行(\n),走紙換頁(\f),橫向跳格(\t),退格(\b)等。2023/2/1202.1.4變量變量在計算機內(nèi)部對應(yīng)著一個存儲單元,而且總是具有某種數(shù)據(jù)類型:基本數(shù)據(jù)類型或引用數(shù)據(jù)類型變量總是具有與其數(shù)據(jù)類型相對應(yīng)的值每個變量均具有:名字、類型、一定大小的存儲單元以及值變量名對應(yīng)內(nèi)存的位置2023/2/121Java變量必須屬于某種類型變量值也必須與變量類型相匹配例如:int

studentNumber; //聲明單個變量doublevelocity,distance; //聲明多個變量studentNumber=30; //給變量賦以整數(shù)30int

studentNumber=30;//聲明變量,并賦初值變量名稱的命名規(guī)則在Java語言中,使用小寫字母來為變量開頭,構(gòu)成變量的其他單詞再以大寫字母開頭,例如rightSide,leftCorner或nAmount。匈牙利標(biāo)記法則,在變量名稱的開頭以變量的類型采用不同的前綴,例如,聲明有年齡變量,int

intAge;2023/2/123變量圖例:int

sum=0;Strings=“HelloWorld!”;sum0sf789a1HelloWorld!變量作用域說明在Java中使用變量時,要注意到每一個變量都有一個作用域,即一個變量在程序中能有效使用代碼區(qū)域或集合,它只能在程序的特定范圍內(nèi)使用,類似于C和C++語言。變量的作用域從它被說明的地方開始到它所在的代碼塊結(jié)束處,通常使用大括號{}來定義代碼塊。2.2運算符與表達(dá)式2.2.1賦值運算2.2.2算術(shù)運算2.2.3關(guān)系運算2.2.4位運算2.2.5邏輯運算2.2.6其它運算2.2.1賦值運算由賦值運算符組成的表達(dá)式成為賦值表達(dá)式,作用是對指定變量進行賦值運算。變量名=表達(dá)式在JAVA語言中可以存在以下的形式:

a=0;b=0; 或者a=b=0;這種關(guān)系傳遞下去,形成連續(xù)多次賦值.2023/2/1272.2.2算術(shù)運算符算術(shù)運算符用于數(shù)學(xué)表達(dá)式中,其操作數(shù)只能是整型或浮點型,分為一元和二元運算。

算術(shù)運算符包括:+,-,*,/,++,--,%沒有指數(shù)運算

Math.pow(2.0,3.0);//2.03.0整數(shù)除法:截去余數(shù)

7/5結(jié)果為1取模:返回余數(shù)

7%5結(jié)果為2一元運算符一元運算符,參與運算的操作數(shù)只有1個,結(jié)合性是右結(jié)合性,運算結(jié)果改變了變量的值。op++(先使用再加)op--(先使用再減)++op(先加再使用)--op(先減再使用)-op(正負(fù)值取反)【例2-2】常用一元運算符二元運算符二元運算符,參與運算的操作數(shù)有2個,該運算符不改變操作數(shù)的值,而是返回一個必須賦給變量的值,它具有左結(jié)合性。Op1+op2Op1–op2Op1*op2Op1/op2Op1%op2Op1+=op2Op1-=op2Op1*=op2Op1/=op2Op1%=op2【例2-3】二元運算符舉例2023/2/1302.2.3關(guān)系運算符六個關(guān)系運算符:<、>、<=、>=、==和!=返回布爾類型的值:true和false。它們都是雙操作數(shù)運算符。

例如: 1>2;//false 3.5!=1;//true 51.5>=23.0; //true 24==3*8;//true

booleantest1=(10<10);//test1=false;【例2-4】常見關(guān)系運算符舉例2.2.4位運算符位運算符針對二進制進行操作,操作數(shù)應(yīng)是整數(shù)類型,其運算結(jié)果也是整數(shù)類型,包括:~0/1取反,一元運算符>>右移指定的位數(shù)<<左移指定的位數(shù)>>>右移指定的位數(shù),左側(cè)移入填0&按位與|按位或^按位異或以上運算符,除了取反運算符是一元運算符,其余均為二元運算符。【例2-5】位運算符舉例2023/2/1322.2.5布爾邏輯運算符六個布爾邏輯運算符:

& (邏輯與AND)

| (邏輯或OR)

^ (邏輯異或XOR)! (邏輯非NOT)單目運算符,即只有一個操作數(shù)

&& (條件與AND)|| (條件或OR)【例2-6】布爾運算符舉例2023/2/133條件運算符“?:”的表達(dá)式形式為“op1?op2:op3”op1:布爾表達(dá)式例如:intk=((i>=0)?1:-1);2023/2/1342.2.6其它運算符其它運算符包括:(類型)、.、[]、()、instanceof和new例如:inta=51;charc=(char)a;2.3優(yōu)先級和基本數(shù)據(jù)類型的轉(zhuǎn)換2.3.1運算符的優(yōu)先級和結(jié)合性2.3.2自動轉(zhuǎn)換2.3.3強制轉(zhuǎn)換2.3.1運算符優(yōu)先級優(yōu)先級是指同一表達(dá)式中多個運算符被執(zhí)行的次序,在表達(dá)式求值時,先按運算符的優(yōu)先級別由高到低的次序執(zhí)行。例如,表達(dá)式

a=b+c*d/(e^f)

2023/2/137運算符的優(yōu)先次序1).,

[],()2)++,--,!,~,instanceof

3)new(type) 4)*,/,% 5)+,- 6)>>,>>>,<< 7)>,<,>=,<=8)==,!= 9) &10) ^11) |12) &&13) ||14) ?:15)=,+=,-=,*=,/=,%=,^=16) &=,|=,<<=,>>=,>>>=在很多時候,由于表達(dá)式過于復(fù)雜,可以通過加括號的方法明確為編譯器指定運算方式,同時提高程序的可讀性。例如:a|4+c>>b&7||b>a%3(a|(((4+c)>>b)&7))||(b>(a%3))2.3.2自動轉(zhuǎn)換Java中變量的數(shù)據(jù)類型在變量定義時就已被確定,因此不能隨意地轉(zhuǎn)換成其他的數(shù)據(jù)類型,但Java允許它的用戶有限度地進行數(shù)據(jù)類型轉(zhuǎn)換處理。轉(zhuǎn)換的方式可分為“自動類型轉(zhuǎn)換”和“強制類型轉(zhuǎn)換”兩種當(dāng)一個表達(dá)式中存在多種參與運算的數(shù)據(jù)類型時,如整型、實型和字符型數(shù)據(jù)需要進行混合運算時,表達(dá)式中間計算結(jié)果可能會超出操作碼的范圍,在這種情況下Java自動提升類型范圍,首先需要把不同類型的數(shù)據(jù)轉(zhuǎn)化為同一類型,然后才能進行運算。自動類型轉(zhuǎn)換提升規(guī)則一般提升的規(guī)則按照以下:byte和short自動提升為int;其中操作碼是long,表達(dá)式自動提升為long;其中操作碼是float,表達(dá)式自動提升為float;其中操作碼是double,表達(dá)式自動提升為double。寬精度類型專戶這種不會丟失數(shù)據(jù)精度的轉(zhuǎn)換,又稱為“寬類型轉(zhuǎn)換”。兩個不同類型的數(shù)據(jù)轉(zhuǎn)換的時候,當(dāng)滿足1)兩個數(shù)據(jù)類型是兼容的,2)目標(biāo)數(shù)據(jù)類型比源類型大的條件將執(zhí)行寬類型轉(zhuǎn)換。【例2-7】寬精度類型轉(zhuǎn)化舉例類型自動轉(zhuǎn)換表源類型目標(biāo)類型byteshort,char,int,long,float,doubleshortint,long,float,doublecharint,long,float,doubleintlong,float,doublelongfloat,doublefloatdouble2023/2/144數(shù)據(jù)類型轉(zhuǎn)換自動類型轉(zhuǎn)換整型、實型、字符型數(shù)據(jù)可以混合運算。運算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進行運算,轉(zhuǎn)換從低級到高級:低----------------------------------------------------->高byte,short,char—>int—>long—>float—>double

如果從高級轉(zhuǎn)換成低級,則需要強制類型轉(zhuǎn)換,但會導(dǎo)致溢出或精度下降。如:inti=8;byteb=(byte)i;

操作數(shù)1類型

操作數(shù)2類型

轉(zhuǎn)換后的類型byte、short、char int

int

byte、short、char、int long long

byte、short、char、int、long float float

byte、short、char、int、long、float double double2.3.3強制轉(zhuǎn)換并不是所有的數(shù)據(jù)類型都可以進行自動類型轉(zhuǎn)換,當(dāng)目標(biāo)數(shù)據(jù)類型的字節(jié)數(shù)小于該數(shù)據(jù)類型進行轉(zhuǎn)換的時候一般稱為“窄類型轉(zhuǎn)換”,這樣數(shù)值的范圍會減小,即在轉(zhuǎn)換過程中會損失部分?jǐn)?shù)值精度。【例2-8】強制類型轉(zhuǎn)換舉例強制轉(zhuǎn)換這類不能自動轉(zhuǎn)換,則必須強制類型轉(zhuǎn)換,表示將表達(dá)式值的類型強轉(zhuǎn)換偽目的類型,格式是:(target_type)value

(目的類型)表達(dá)式例如:

inta; byteb; b=(byte)a;2.4引用類型和引用變量

Java中數(shù)據(jù)類型分為兩大類:是基本類型和對象類型。相應(yīng)的,變量也就有兩種類型:基本類型和引用類型?;绢愋偷闹稻褪且粋€數(shù)字、一個字符或一個布爾值。引用類型是一個對象類型的啊,它的值是指向內(nèi)存空間的引用,即地址,所指向的內(nèi)存中保存著變量所表示的一個值或一組值?;绢愋团e例基本類型舉例說明:

int

a;

a=250;

//聲明變量a的同時,系統(tǒng)給a分配了空間。引用類型舉例(1)引用類型只給變量分配了引用空間,數(shù)據(jù)空間沒有分配,因為誰都不知道數(shù)據(jù)是什么,整數(shù),字符?我們看一個錯誤的例子:

MyDatetoday;

today.day=4;

//發(fā)生錯誤,因為today對象的數(shù)據(jù)空間未分配。引用類型舉例(2)引用類型變量在聲明后必須通過實例化開辟數(shù)據(jù)空間,才能對變量所指向的對象進行訪問。例如:

MyDatetoday;

//將變量分配一個保存引用的空間 today=newMyDate(); //這句話是2步,首先執(zhí)行newMyDate(),引用類型舉例(3)而引用變量的賦值,例如:

MyDatea,b;

//在內(nèi)存開辟兩個引用空間 a

=

newMyDate();

//開辟MyDate對象的數(shù)據(jù)空間,空間的首地址賦給a b

=

a;

//將a存儲空間中的地址寫到b的存儲空間中引用類型舉例(4)2.5Math類的常量和方法為了滿足數(shù)學(xué)運算的需要,JAVA提供了專用的類包java.Math,包括了簡明的整數(shù)算術(shù)以及十進制算術(shù)的基本函數(shù),這部分函數(shù)均為公開靜態(tài)(publicstatic)方法可直接被調(diào)用,用于幾何學(xué)、三角學(xué)以及幾種常用用途方法的浮點函數(shù),來執(zhí)行各類數(shù)學(xué)運算。Math類的兩個常量Math類定義兩個雙精度常量,分別是: doubleE--------常量e(2.7182818284590452354) doublePI--------常量pi(3.14159265358979323846)表示方法為Math.PI

記錄的圓周率,Math.E記錄e的常量。例如:計算半徑為R的圓周長,2*R*Math.PI三角函數(shù)publicstaticdoublesin(doublea)------三角函數(shù)正弦。publicstaticdoublecos(doublea)------三角函數(shù)余弦。publicstaticdoubletan(doublea)------三角函數(shù)正切。publicstaticdoubleasin(doublea)------三角函數(shù)反正弦。返回角的反正弦,范圍在-pi/2到pi/2之間。publicstaticdoubleacos(doublea)------三角函數(shù)反余弦。返回角的反余弦,范圍在0.0到pi之間。publicstaticdoubleatan(doublea)------三角函數(shù)反正切。返回角的反正切,范圍在-pi/2到pi/2之間。指數(shù)函數(shù)

publicstaticdoubleexp(doublea)------返回以e為底a為指數(shù)的ea的值。publicstaticdoublelog(doublea)------返回以10為對數(shù)a的lna的值。publicstaticdoublepow(doubley,doublex)------返回以y為底數(shù),以x為指數(shù)的冪值。publicstaticdoublesqrt(doublea)------返回a的平方根。sqrt(double

arg)計算參數(shù)的平方根返回類型為double型pow(doublearg1,boublearg2)計算arg1為底arg2為指數(shù)的冪返回類型為double型舍入函數(shù)

publicstaticint

ceil(doublea)-------返回大于或等于a的最小整數(shù)。ceil(double

arg):返回>=arg的最小整數(shù).例如:

Math.ceil(30.4)

==31.0

Math.ceil(-8.0989)

==-8.0publicstaticint

floor(doublea)-------返回小于或等于a的最大整數(shù)。floor(double

arg):返回<=arg最大整數(shù).例如:Math.floor(30.4)

==30.0

Math.floor(-8.0989)

==-9.0舍入函數(shù)(2)publicstaticint

abs(inta)-------返回a的絕對值。

abs(arg):返回arg絕對值,arg可以是:int,long,float,double.例如:

Math.abs(-30.5)

==30.5

Math.abs(-100.0989)

==100.0989publicstaticint

max(inta,intb)-------返回a和b的最大值。

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論