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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

& (邏輯與AND)

| (邏輯或OR)

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

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

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

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

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

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

如果從高級(jí)轉(zhuǎn)換成低級(jí),則需要強(qiáng)制類型轉(zhuǎn)換,但會(huì)導(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強(qiáng)制轉(zhuǎn)換并不是所有的數(shù)據(jù)類型都可以進(jìn)行自動(dòng)類型轉(zhuǎn)換,當(dāng)目標(biāo)數(shù)據(jù)類型的字節(jié)數(shù)小于該數(shù)據(jù)類型進(jìn)行轉(zhuǎn)換的時(shí)候一般稱為“窄類型轉(zhuǎn)換”,這樣數(shù)值的范圍會(huì)減小,即在轉(zhuǎn)換過(guò)程中會(huì)損失部分?jǐn)?shù)值精度?!纠?-8】強(qiáng)制類型轉(zhuǎn)換舉例強(qiáng)制轉(zhuǎn)換這類不能自動(dòng)轉(zhuǎn)換,則必須強(qiáng)制類型轉(zhuǎn)換,表示將表達(dá)式值的類型強(qiáng)轉(zhuǎn)換偽目的類型,格式是:(target_type)value

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

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

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

int

a;

a=250;

//聲明變量a的同時(shí),系統(tǒng)給a分配了空間。引用類型舉例(1)引用類型只給變量分配了引用空間,數(shù)據(jù)空間沒(méi)有分配,因?yàn)檎l(shuí)都不知道數(shù)據(jù)是什么,整數(shù),字符?我們看一個(gè)錯(cuò)誤的例子:

MyDatetoday;

today.day=4;

//發(fā)生錯(cuò)誤,因?yàn)閠oday對(duì)象的數(shù)據(jù)空間未分配。引用類型舉例(2)引用類型變量在聲明后必須通過(guò)實(shí)例化開(kāi)辟數(shù)據(jù)空間,才能對(duì)變量所指向的對(duì)象進(jìn)行訪問(wèn)。例如:

MyDatetoday;

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

MyDatea,b;

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

=

newMyDate();

//開(kāi)辟M(fèi)yDate對(duì)象的數(shù)據(jù)空間,空間的首地址賦給a b

=

a;

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

記錄的圓周率,Math.E記錄e的常量。例如:計(jì)算半徑為R的圓周長(zhǎng),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為對(duì)數(shù)a的lna的值。publicstaticdoublepow(doubley,doublex)------返回以y為底數(shù),以x為指數(shù)的冪值。publicstaticdoublesqrt(doublea)------返回a的平方根。sqrt(double

arg)計(jì)算參數(shù)的平方根返回類型為double型pow(doublearg1,boublearg2)計(jì)算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的絕對(duì)值。

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

Math.abs(-30.5)

==30.5

Math.abs(-100.0989)

==100.0989publicstaticint

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論