第2章Java語言基礎知識_第1頁
第2章Java語言基礎知識_第2頁
第2章Java語言基礎知識_第3頁
第2章Java語言基礎知識_第4頁
第2章Java語言基礎知識_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第2章Java語言基礎知識能力要求掌握標識符的命名掌握基本數(shù)據(jù)類型的英文關鍵字和中文含義掌握變量和常量的聲明和使用了解數(shù)據(jù)類型的轉(zhuǎn)換掌握算術運算符、關系運算符和常用邏輯運算符的使用了解運算符的優(yōu)先級了解Math類、Date類和Calendar類

本章主要內(nèi)容Java基本語法Java數(shù)據(jù)類型、運算符與表達式Java語言的基本要素標識符關鍵字常量變量運算符分隔符2.1標識符和關鍵字

用來給Java中的變量、常量、方法、對象、類等起名字。Java對標識符的語法規(guī)定如下:①標識符由字母,數(shù)字,下劃線(-)和美元符號($)組合而成。②標識符必須以字母,下劃線或$開頭,第一個字符不能是數(shù)字。③Java中的標識符是區(qū)分大小寫的④標識符不能是關鍵字。2.1標識符和關鍵字

請判斷下面標識符哪些是合法的標識符:(1)book3(2)$aba(3)sum5_9

(4)9day

(5)themax

(6)name#8

(7)myMethod(8)_demo(9)yu$12答:1,2,3,7,8,9是合法的標識符。2.1標識符和關鍵字關鍵字也稱保留字,是Java語言本身使用的標識符,它有其語法含義。用戶在自定義標識符的時候不能使用和關鍵字相同的名稱。

(不用背,只需知道常見的關鍵字,如:if,else,for

等等。如果實在沒有把握,可以查看書上的關鍵字列表。)思考與練習30頁2.1下面這些標識符,那些是合法的?那些是不合法的?如果不合法,指出原因。①b12②87ef9③a(3)④x2y5⑤false

答:合法的標識符:①,④

不合法的標識符:②,③,⑤Java數(shù)據(jù)類型問題:在C語言中,存在數(shù)據(jù)類型,在Java中,也存在數(shù)據(jù)類型,那么,為什么要有數(shù)據(jù)類型呢?1.數(shù)據(jù)類型用來說明常量、變量和表達式的性質(zhì)和所占內(nèi)存的大小。2.Java的基本數(shù)據(jù)類型長度是固定的,可以跨平臺自由移植。(C語言的基本數(shù)據(jù)類型根據(jù)平臺的不同會有所差別)2.3基本數(shù)據(jù)類型數(shù)據(jù)類型名稱位長默認值取值范圍字節(jié)型byte80-27到27-1短整型short160-215到215-1

整型int

320-231到231-1

長整型long640-263到263-1

單精度型float320.0-3.4*1038~+3.4*1038

雙精度型double640.0-1.7*10308~+1.7*10308

字符型char16‘\u0000’‘\u0000’~’\uffff’

布爾型boolean8falsetrue,false2.3.1整數(shù)類型Java的整數(shù)類型可以分為字節(jié)型(byte),短整型(short),基本型(int)和長整型(long)四種。

Java提供三種進制的整數(shù)表示形式:(1)十進制數(shù):用多個0~9之間的數(shù)表示,如234,-20等,以非0(非零)開頭。(2)八進制數(shù):以0(零)為前綴,其后跟多個0~7之間的數(shù)字,如八進制的015代表了十進制的13。(3)十六進制數(shù):以0x(零和英文字母x)為前綴,其后跟多個0~9之間的數(shù)字或a~f、A~F之間的字母。如十六進制的0x1e代表了十進制的30。long型數(shù)的尾部加l或L。例如:8765L。2.3.2浮點數(shù)類型

Java用浮點數(shù)類型表示數(shù)學中的實數(shù)。Java的浮點數(shù)類型有單精度浮點數(shù)(float)和雙精度浮點數(shù)(double)兩種類型。對于單精度float型變量,占4個字節(jié)(即32位),取值范圍大約是:-3.4E38~3.4E38

。雙精度double型變量,占8個字節(jié)(即64位),取值范圍大約是:-1.7E308~1.7E308。

浮點數(shù)可以用以下兩種形式來表示:十進制:5.2,0.34d,316.82F,3.14f

科學計數(shù)法:8.0e+2f,e前面必須有數(shù)字,e后面的指數(shù)必須為整數(shù)。e表示以10為底。8.0e+2f表示8.0x102。

注意:在常數(shù)后面加上f或F代表單精度float型,加上d或D代表雙精度double型,如果不加字母,Java將其默認為雙精度double型。

2.3.3布爾類型

布爾類型用關鍵字boolean表示,占8位。布爾類型數(shù)據(jù)只有兩個值:true或false,true代表“真”,false代表“假”。2.3.4字符類型字符類型(char)用兩個字節(jié)(即16位)表示一個字符。字符類型(char)采用了一種新的國際標準編碼方案——Unicode編碼。每個這種編碼占用16位(比特)。這樣所有的字符(如漢字或英文字母)都可統(tǒng)一用一個字符表示。字符常量用一對單引號括起的單個字符表示。這個字符可以是可見ASCII字符,如'a'、'A'、'3'、'*'等;可以是要表示的字符所對應的Unicode值,前綴是“\u”,表示范圍為'\u0000'~'\uFFFF',如'\u0061'表示'a'(十六進制的0061等于十進制的97,ASCII值為十進制的97對應的字符是'a');也可以是轉(zhuǎn)義字符。2.3.4字符類型

轉(zhuǎn)義字符是一些有特殊意義的字符。所有的轉(zhuǎn)義字符用反斜線(\)開頭,后面跟著一個字符來表示某個特定的字符。例如:‘\r’表示回車。常用的轉(zhuǎn)義字符及其對應的Unicode值如表2.4所示。

見:20頁表2.4例如:‘\t’表示水平制表符。實際用在輸出語句中,輸出一些空格。

‘\n’表示換行。

2.3基本數(shù)據(jù)類型要求:

掌握各種數(shù)據(jù)類型的英文和漢字。要知道其對應關系。例如:1.float是什么類型?2.字符類型用什么關鍵字表示?2.4.1常量

常量(constant)是指在程序運行中其值不能被改變的量。常量有兩種形式:直接常量和符號常量。1.直接常量直接常量是指在程序中直接引用的常量,包括整數(shù)、浮點數(shù)、布爾常量、字符常量和字符串常量。整數(shù)、浮點數(shù)、布爾常量、字符常量在2.3節(jié)基本數(shù)據(jù)類型中已經(jīng)說明。字符串常量是用雙引號括起的一串若干個字符(可以是0個)。例如:"pretty","nice89"。在Java中還可以使用連接操作符(+)把兩個或更多的字符串常量串接在一起,組成一個更長的字符串。例如:"Data"+"Base"的結(jié)果是"DataBase"。

2.4.1常量

2.符號常量符號常量是以標識符形式出現(xiàn)的常量,符號常量必須先聲明后使用。Java中用關鍵字final來聲明一個標識符為常量,格式如下:final數(shù)據(jù)類型常量名=值[,常量名[=值],…];例如:finalintn=200,m=400;finalfloatpai=3.1415f;finalcharTAB='\t';注意:一個常量一旦被賦值,就不能改變,即它不能被再次賦值。2.4.1常量

聲明符號常量可以提高程序的可讀性,從常量名可以知道常量的含義,還可以增強程序的可維護性,只要在常量聲明處修改常量值,即可改變程序中多處使用的常量值。

2.4.2變量變量:是指在程序運行過程中其值可以改變的量。

定義變量的格式如下:數(shù)據(jù)類型變量名[=值][,變量名[=值],…];例如:

intnum=5;

floatx; floatx=3f;用戶在定義變量時請盡量選用可以表現(xiàn)變量意思的英文單詞或中文。

注意:(書上21頁)定義變量后,必須給變量賦值(在定義的同時賦值或在接下來的程序中賦值)。

例2.1

變量定義舉例。(書上21頁)publicclassVartype{

publicstaticvoidmain(Stringargs[]){

inta=1;charb='d';floatc;c=2.4f;

System.out.println("a="+a);

System.out.println("b="+b);

System.out.println("c="+c);}}

例2.1變量定義舉例。請思考:(1)文件名是什么?(2)怎樣編譯程序?(3)怎樣運行程序?(4)程序的運行結(jié)果是什么?答:文件名是:Vartype.javajavac

Vartype.java

javaVartype

a=1b=dc=2.4

例2.1變量定義舉例。請思考:(5)如果去掉c=2.4f;

然后重新編譯程序,編譯能否通過?答:編譯出錯。(以下是JDK1.3的英文編譯錯誤信息)E:\javacode\vartype.java:12:variablecmightnothavebeeninitialized

System.out.println("c="+c)

^1error錯誤的中文含義:變量c可能沒有初始化。variable:變量。initialize:初始化。^:指出錯誤的位置。例2.1變量定義舉例。改正錯誤需要用到的知識點:(書上21頁)定義變量后,必須給變量賦值(在定義的同時賦值或在接下來的程序中賦值)。例2.1變量定義舉例。請思考:(6)如果c=2.4f;

改為c=2.4;

即:把f去掉。然后重新編譯程序,編譯能否通過?答:編譯出錯。d:\javacode\vartype.java:9:possiblelossofprecision

可能有精度的損失found:double找到:double

required:float需要:floatc=2.4;^1error例2.1變量定義舉例。請思考:(7)怎樣在同一行里輸出:

a=1,b=d答:System.out.println(“a=”+a+“,b="+b);

2.5各類數(shù)值型數(shù)據(jù)間的混合運算

2.5.1自動類型轉(zhuǎn)換是將變量從占用內(nèi)存少的短數(shù)據(jù)類型轉(zhuǎn)化成占用內(nèi)存較多的長數(shù)據(jù)類型時,可以不做顯式的類型轉(zhuǎn)換說明。整型,實型和字符型數(shù)據(jù)可以混合運算。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后才能進行運算。從低級類型到高級類型的轉(zhuǎn)換自動進行。數(shù)據(jù)級別的高低如圖2.1所示:

2.5.1自動類型轉(zhuǎn)換例如:

intx=50;floaty;y=x;則輸出y的值是50.0

byte,short,charintlongfloatdouble低高圖2.1數(shù)據(jù)類型的轉(zhuǎn)換2.5.2強制類型轉(zhuǎn)換

將變量從較長的數(shù)據(jù)類型轉(zhuǎn)換成較短的數(shù)據(jù)類型時,則必須做強制類型轉(zhuǎn)換。強制類型轉(zhuǎn)換的一般格式是:(數(shù)據(jù)類型)變量名或表達式例如:

floata=98.234f;

inti=(int)a;

當然,這樣強制類型轉(zhuǎn)換會使小數(shù)點后面的數(shù)據(jù)丟失,導致精度下降。例如,i的值是98。

思考與練習30頁—31頁習題2.6,2.7思考與練習30頁2.6指出下面程序中的錯誤并改正。//Dataijk.javapublicclassDataijk{publicstaticvoidmain(Stringargs[]){

inti=10,k;j=30;i+j=k;}}

思考與練習紅字為改正的地方:publicclassDataijk{publicstaticvoidmain(String[]args){

inti=10,k;

intj;//加

j=30;

i+j=k;//錯誤,刪除

k=i+j;//改正}}思考與練習:31頁2.7編譯和運行下面的程序,注意改正程序中的錯誤。

publicclassFuzhi{publicstaticvoidmain(Stringargs[]){finalinta=8;floatx=24.6;

inty;a=a*3+4;

System.out.println("x="+x+"y="+y);}}

思考與練習:31頁2.7題的解答publicclassFuzhi{publicstaticvoidmain(String[]args){finalinta=8;floatx=24.6f;//加f

inty;y=7;//加

a=a*3+4;//錯誤,刪除

System.out.println("x="+x+"y="+y);}}

2.4題定義變量。將下面的文字描述用Java語句寫出來。(1)將count定義為整型變量(2)將n和m定義為雙精度型變量(3)將sum定義為單精度型變量,將yesno

定義為布爾型變量intcount;doublen,m;floatsum;boolean

yesno;

2.4題定義變量。將下面的文字描述用Java語句寫出來。(4)將name定義為字符型變量(5)將length和area定義為單精度型變量charname;floatlength,area;2.6.1

算術運算符標準運算符作用運算符示例注釋加法+sum=a+b

減法-sum=a-b

乘法*sum=a*b

除法/sum=a/b

求余%sum=a%b31%6=1

增量++a++

減量--b--%,/見:Qiuyu.java(1)運算符“%”(求余)操作是做除法操作后取余數(shù),當操作對象均為整型數(shù)據(jù)時,其結(jié)果是整型數(shù),否則為浮點數(shù)。例如:8%6的結(jié)果是2。(2)/:兩個整數(shù)類型的數(shù)據(jù)做除法時,結(jié)果是整數(shù),而小數(shù)部分被截掉,請思考:3/2的結(jié)果是什么?3.0/2的結(jié)果是什么?

11.5增量和減量運算符(++和--)運算符作用語法示例++前增量j=++i;inti=6;

intj=++i;iis7,jis7

后增量j=i++;inti=6;

intj=i++;iis7,jis6--前減量j=--i;inti=6;

intj=--i;iis5,jis5

后減量j=i--;inti=6;

intj=i--;iis5,jis6

增量和減量運算符(++和--)例如:(書上24頁)inta=1;intb=(++a)*2;//a=a+1;即:a

1+1=2//b=a*2;即:b

2*2=4運行結(jié)果為a=2,b=4。inta=1;intb=(a++)*2;//b=a*2;即:b

1*2=2//a=a+1;即:a

1+1=2運行結(jié)果為a=2,b=2。

思考:30頁2.5題2.5寫出程序運行結(jié)果。//Ijadd.javapublicclassIjadd{publicstaticvoidmain(String[]args){inti,j,a,b;a=2;b=3;i=a++;

j=++b;

//相當于i=a;a=a+1;//i

a=2;a

a+1=2+1=3

//相當于b=b+1;j=b;//b

b+1=3+1=4;j

b=4思考:30頁2.5題System.out.println("a="+a+"b="+b);System.out.println("i="+i+"j="+j);}}

運行結(jié)果:a=3

b=4i=2

j=42.6.2關系運算符

>(大于)<(小于)>=(大于等于)<=(小于等于)==(等于)!=(不等于)運算結(jié)果數(shù)據(jù)類型:boolean注意:區(qū)分等于號“==”和賦值號“=”。

2.6.3邏輯運算符

!(非)&&(簡潔與)||(簡潔或)^(異或)&(非簡潔與)|(非簡潔或)請思考:1:進行邏輯運算的操作數(shù)的類型是什么類型?運算結(jié)果的類型也是什么類型?2:&&和&的區(qū)別是什么?booleanboolean&被稱為非簡潔與,&&被稱為簡潔與的原因是:使用&時,必須對&兩邊的表達式都進行判斷才能得出結(jié)果。而使用&&時,當運算符左邊的表達式為真時再對運算符右邊的表達式進行判斷,而當運算符左邊的表達式為假時不再執(zhí)行右邊的表達式。//2.6.3邏輯運算符:&&簡潔與與&非簡潔與的區(qū)別。publicclassYu{publicstaticvoidmain(Stringargs[])

{

booleanb=false;

intp=1;

if(b&&(++p>1))

System.out.println("true");else

System.out.println("false");

System.out.println("p="+p);}}運行結(jié)果:falsep=1(1)&&,簡潔與,因為b=false,所以不判斷&&右邊的(++p>1)。(2)if后面的整個表達式為假,執(zhí)行else后面的語句(3)根據(jù)(1)的分析,由于沒有計算++p,所以p的值還是1。//2.6.3邏輯運算符:&&簡潔與與&非簡潔與的區(qū)別。publicclassYu{publicstaticvoidmain(Stringargs[])

{

booleanb=false;

intp=1;

if(b&(++p>1))

System.out.println("true");else

System.out.println("false");

System.out.println("p="+p);}}運行結(jié)果:falsep=2(1)&,非簡潔與,雖然b=false,但依然判斷&右邊的(++p>1)。(2)if后面的整個表達式為假,執(zhí)行else后面的語句(3)根據(jù)(1)的分析,由于計算++p,所以p的值變?yōu)?。2.6.3邏輯運算符

!(非)&&(簡潔與)||(簡潔或)^(異或)&(非簡潔與)|(非簡潔或)請思考:3.||和|的區(qū)別的區(qū)別是什么?

|被稱為非簡潔或,||被稱為簡潔或的原因是:使用|時,必須對|兩邊的表達式都進行判斷才能得出結(jié)果。而使用||時,當運算符||左邊的表達式為假時再對運算符右邊的表達式進行判斷,而當運算符||左邊的表達式為真時不再執(zhí)行右邊的表達式。2.6.4位運算符(了解,不作為重點)

25頁表2.82.6.4位運算符

在帶符號的右移>>中,右移后左邊留下的空位中填入的是原數(shù)的符號位(正數(shù)為0,負數(shù)為1)。而在不帶符號的右移>>>中,右移后左邊的空位都填入0。

舉例如下:~00101010=11010101//~:按位取反a=00011100;a<<2=01110000//<<:左移2.6.4位運算符

a=00011100;a>>2=00000111說明:>>:帶符號的右移,正數(shù)右移后,左邊留下的空位中填入的是原數(shù)的符號位0b=10011011;b>>2=11100110說明:>>:帶符號的右移,負數(shù)右移后,左邊留下的空位中填入的是原數(shù)的符號位1a=00011100;a>>>2=00000111說明:不帶符號的右移>>>,右移后左邊的空位都填入0b=10011011;b>>>2=00100110說明:

不帶符號的右移>>>,右移后左邊的空位都填入0

2.6.4位運算符

00110111&01000110=00000110//&:按位與00110111|00011000=00111111//|:按位或00110101∧00111010=00001111//∧:按位異或

2.6.5其他運算符

1.三目運算符(?:)a?b:c若a為真,則此三目運算符的結(jié)果為表達式b的值,否則為表達式c的值。

2.復雜賦值運算符+=:例如,a+=b;即a=a+b;-=:例如,a-=b;即a=a-b;*=:例如,a*=b;即a=a*b;/=:例如,a/=b;即a=a/b;

2.6.6運算符的優(yōu)先級與結(jié)合性其他運算符

運算符的優(yōu)先級決定了表達式中運算執(zhí)行的先后順序。在進行表達式運算時,要按從高到低的運算符的優(yōu)先順序進行。同一優(yōu)先級的運算符的運算次序由結(jié)合方向決定。例如:+與-有相同的優(yōu)先級,其結(jié)合方向為自左到右。因此,6-2+7的運算次序是先減后加,即6-2+7相當于(6-2)+7。-和++有相同的優(yōu)先級,其結(jié)合方向為自右到左。因此,-x++相當于-(x++)。

26頁表2.9

大致(優(yōu)先級高)算術運算符關系運算符邏輯運算符(低)2.6.7表達式由操作符,常量,變量,對象,方法調(diào)用組成。2.8注釋分隔符用來分隔Java程序中的基本元素,有注釋、空白符、和普通分隔符三種。注釋:

//單行注釋/*……*/多行注釋

空白符:空格、回車、換行符、制表符普通分隔符(4種){};,:2.9Math類28頁

Math類提供了一些數(shù)學函數(shù)。28頁列出了Math類的常用方法。使用形式:類名.方法名(實際參數(shù))例如:Math.abs(-19.5),Math.random()

常用:doublerandom():產(chǎn)生0到1(不包括1)之間的隨機數(shù)。補充:產(chǎn)生一個[x1,x2]內(nèi)的隨機整數(shù)xx=(int)(Math.random()*(x2-x1+1)+x1)Math.random(

溫馨提示

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

評論

0/150

提交評論