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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

具有特殊用途,不能作為變量名、方法名和類名2023/2/18Java關鍵字(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數據類型2023/2/110基本數據類型所有基本類型所占的位數都是確定的,并不因操作系統的不同而不同。數據類型 所占位數 數的范圍

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

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

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

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

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

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

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

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

7/5結果為1取模:返回余數

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

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

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

& (邏輯與AND)

| (邏輯或OR)

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

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

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

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

操作數1類型

操作數2類型

轉換后的類型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強制轉換并不是所有的數據類型都可以進行自動類型轉換,當目標數據類型的字節(jié)數小于該數據類型進行轉換的時候一般稱為“窄類型轉換”,這樣數值的范圍會減小,即在轉換過程中會損失部分數值精度?!纠?-8】強制類型轉換舉例強制轉換這類不能自動轉換,則必須強制類型轉換,表示將表達式值的類型強轉換偽目的類型,格式是:(target_type)value

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

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

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

int

a;

a=250;

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

MyDatetoday;

today.day=4;

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

MyDatetoday;

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

MyDatea,b;

//在內存開辟兩個引用空間 a

=

newMyDate();

//開辟MyDate對象的數據空間,空間的首地址賦給a b

=

a;

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

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

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

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

publicstaticint

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

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

Math.ceil(30.4)

==31.0

Math.ceil(-8.0989)

==-8.0publicstaticint

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

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

==30.0

Math.floor(-8.0989)

==-9.0舍入函數(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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論