Java語言基礎(chǔ)第二章BASICS_第1頁
Java語言基礎(chǔ)第二章BASICS_第2頁
Java語言基礎(chǔ)第二章BASICS_第3頁
Java語言基礎(chǔ)第二章BASICS_第4頁
Java語言基礎(chǔ)第二章BASICS_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第二章Java語言基礎(chǔ)

Java數(shù)據(jù)類型

■運算符與表達式

■流程控制語句

二:匚一工

2.1Java數(shù)據(jù)類型

?基本數(shù)據(jù)類型

■類型之間的轉(zhuǎn)換

Java數(shù)據(jù)類型的分類

■簡單數(shù)據(jù)類型

Integeral:byte,short,intjong

Floating:float,double

Textual:char

Logical:boolean

復(fù)合數(shù)據(jù)類型(對象引用類型)

class

interface

數(shù)組

幾個概念

1標識符與保留字

■標識符(identifier):在程序中用來標識各變量或者常量的符號。

?必須由字母、下劃線或$開始,其余字母可以為上述三種字母或者數(shù)

?合法的標識符:

var_list_a

$var2

_var$_2

?不合法的標識符:

1var

var%

interface

保留字

'由系統(tǒng)中預(yù)定義的,留作專用的標識符。

保留字不可以作為標識符。

2常量與變量

■常量二恒值的量

?必須使用final關(guān)鍵字定義常量,例如

finalfloatCOUNT_RATE=0.02;

finalintAREA=100;

?系統(tǒng)提供的常量:Math.PI,Math.E

變量

floatlength=1.11;

intcount=20;

整型數(shù)據(jù)

■分類

byteshortintlong

字節(jié)數(shù)1248

數(shù)字范圍-128-127-32768--2,147,483,648

32767?2,143,483,647

表示法

整型數(shù)據(jù)的使用

-默認的整型常量為int型'

x=12;〃此處常量12為int型

對于long型常量,當值超出了int范圍時,需

要添加后綴”L"

longx=12000000000L;〃正確「I”亦可

longx=12000000000;〃錯誤

longx=12;〃正確

整型數(shù)據(jù)的使用2

■對于byte,short型變量,在賦值時存在兩種情

況:

?如果值不超過規(guī)定的范圍,不會出現(xiàn)問題

,?如果值超出了規(guī)定的范圍,會引起語法錯誤

O例如

byteb=12;//noproblem

byteb=256;//error

聲明和初始化

■intnumber;〃這是一個聲明

longpopulation=100L;〃聲明變量并且初始化

3變量在使用之前必須初始化

bytenum1=56,num2;

bytenum3=num1+num2;〃錯誤,num2未初始化

浮點型

■分類

floatdouble

字節(jié)數(shù)48

小數(shù)點后6?715

有效位數(shù)

表示法

十進制小數(shù):0.12,3.14,.56,...

科學(xué)計數(shù)法:12E-2,314E-2,56E-2

■默認的小數(shù)都是double型的

floatx=1.2f;〃正確

floatx=1.2;〃錯誤

字符型數(shù)據(jù)

?字符集

/ASCII字符集:1字節(jié),128個字符

/擴展的ACSII集:256個字符

/Unicode字符集:2字節(jié),0-65535

char類型占2字節(jié)

?表示法

?chara='a,;

charb-'b^;//錯誤

?轉(zhuǎn)義字符:為了簡便的表達一些常用的特殊

字符而采用的方法,即'后跟某個字符組合后

被賦予新的意義的字符。常見的如‘

\u:unicode字符

,\t:制表

\r:回車

字符串

■由標準庫提供的String類,并非基本數(shù)據(jù)類型。每個

被雙引號引起來的字符串都是String類的一個實例

Stringe="”;

Stringgreeting="hello”;

串的連接:使用符號把兩個字符串連接起來

intanswer=2;

System.out.println(utheansweris"answer);

布爾型數(shù)據(jù)

布爾型數(shù)據(jù)只有兩個值:false和true。

■表示:

booleandone=true;

2.1.2數(shù)據(jù)類型之間的轉(zhuǎn)換

不同類型的數(shù)據(jù)在進行各類計算和賦值時需

要進行類型轉(zhuǎn)換,轉(zhuǎn)換的原因:

?數(shù)據(jù)存儲的格式不同,例如整型和浮點型的不同

?數(shù)據(jù)在存儲空間中所占大小的不同,例如int型和

long型的字節(jié)數(shù)不同

??.

不同方向上的轉(zhuǎn)換

自動進行

強制進行

F.uir1L7V

f----~■一—rr“r

示例

1intn=123456789;

float仁n;〃有問題:fis1.23456792E8

bytea=12;

intb二a;〃不會出現(xiàn)問題

floatx=1.2f;

doubley=x;//noproblem

造型(cast)

1同類型之間大到小的轉(zhuǎn)換必須造型

■inti=25;

byteb=(byte)i;

bytec=i;//wrong,Typemismatch:cannotconvertfrominttobyte

doublex=1.25;

floaty=(float)x;//right

floatz=x;//wrong,Typemismatch:cannotconvertfromdoubletofloat

如果存在float類型的數(shù)據(jù),則

運算的結(jié)果為float;否則

混合運算

■byteb=1;

shortc=2;

Shorta=b+C;〃錯誤,不能將int類型直接轉(zhuǎn)換為short

問:下列語句哪些是正確的,哪些是錯誤的

1longx=320000000005booleanbDone=0;

2intx=24;

byteb=x;6floatx=1.02f;

intn=x;

byteb=24;

byteb=128;

byteb=1;

floatx=1.2;shortc=2;

shorta=b+c;

2.2運算符與表達式

算術(shù)運算

■遞增和遞減運算

?關(guān)系和布爾運算

位運算

算術(shù)運算

/運算符號:

/0除整數(shù)發(fā)生異常,除浮點數(shù)得到無窮大或

NaN

簡便形式:+=.-=,*=,/=,%=

18%5=?5%1=?

芻增、自減運算

符號:++,-

前、后位置的不同

?單條語句:

i++;<==>++j;

?表達式中的項

intm=7;intm=7;

intn=++m;<==>intn=m++;

(here,n=8,m=8)(here,n=7,m=8)

解釋:m=m+1n=m

n=mm=m+1

.

關(guān)系和布爾運算

1關(guān)系運算:比較兩個數(shù)是否相等

?符號:==,!=,〈,>,>二,<二

?運算結(jié)果只能是true或者false,例如

3==7isfalse

3!=7istrue

布爾運算(邏輯運算)

■符號:與(&&),或(II),非⑴

■A&&B----短路求值

x!=0&&(1/x>x+y)

如果x等于0,則第二個表達式不會被求值

A||B類似。

條件運算

(條件)?E1:E2(如果條件真,計算E1,否

則計算E2)。

E=x<y?x:y//ifx<y,E=x;else,E=y;

位運算

位運算處理數(shù)據(jù)的各個獨立位。要理解該運

算需要先將數(shù)據(jù)展成二進制形式。

幾種位運算方式:

?&:各位進行“與”運算

?I:...........“或”運算

?A:......“異或”運算

?.........取“反”

例子

a:50000,0101

b:9(99)0110,0011

a&b0000,0001

a|b0110,0111

aAb0110,0110

?a1111,1010

(—6)

~b1001,1100

屏蔽的例子

intfourthBitFromRight=(n&8)/8;

n,********

8:0000,1000

解釋:通過適當?shù)?的哥指數(shù),可以把所有其他

數(shù)據(jù)位屏蔽掉,而只剩下單獨的某一位。

移位運算

移位運算

?VV:將運算對象左移指定的位數(shù),低位補0

?>>:有符號右移運算符,若對象為正,則高位補0,

否則補1

?>>>:無符號右移,高位補0,對char,byte,short進

行移位運算時,會自動轉(zhuǎn)換成int

位運算符號也可以與二共同使用,形成

&=,|=,八=,?=,?>=,?=O

移位的例子

publicstaticvoidmain(String[]args){

inti=-1;

i?>=10;

byteb=-1;

b?>=10;

shorts=-1;

s?>=10;

longl=-1;

l?>=10;

System.out.println(i);

System.out.println(b);

System.out.println(s);

System.out.println(l);

結(jié)果:

-1:11111111111111111111111111111111

■419430300000000001111111111111111111111

幾點說明

/幾乎所有的運算符都只能操作基本類型,唯一的例

外是“二","=="/!=";另外,String類支持和

“十二”。

/在C和C++中,一種常見的錯誤如下:

if(x=y){

//??.

)

在java里,x=y的值不是布爾值,因此不會被當作布

爾結(jié)果作條件判斷,從而阻止程序的執(zhí)行。

--u

說明(2):“UlcerAddictsReallyLikeCAlot”,即“潰瘍患者特別喜歡

(維生素)C”。

/運算符的優(yōu)先順序

助記詞運算符類型運算符

UlcerUnary+-++—

AddictsArithemetic(andshift)*/%+-??

ReallyRelational><>=<===!=

LikeLogical(andbitwise)&&||&|A

CConditionalA>B?X:Y

ALotAssignment—

2.3流程控制語句

-結(jié)構(gòu)化程序設(shè)計1

■選擇結(jié)構(gòu)

?循環(huán)結(jié)構(gòu)

結(jié)構(gòu)化程序設(shè)計的特點

1.只有一個入口

2.只有一個出口

結(jié)構(gòu)內(nèi)的每一部分都有機會執(zhí)行到

i吐

不存在死循環(huán)

.

塊結(jié)構(gòu)

■一個塊(復(fù)合語句)是用一對花括號括起的任意數(shù)

量的簡單Java語司,例如

publicstaticvoidmain(String[]args)

intn;

intk;

,塊范圍

)

}

塊作用域

■塊結(jié)構(gòu)決定了塊內(nèi)定義的變量的作用域;塊可以嵌

套,同時,不可以在嵌套的塊內(nèi)定義已有的變量名。

publicstaticvoidmain(String[]args)

(

intn;

(

intk;//kisonlydefineduptohere

intn;//error-cannotredefinen

)

}

條件語句

■lf-else語句是控制程序流程的最基本的形式,其中

else是可選的,前按卞逸兩種形式來往用if:

if(bool-expr)

statements;

或者

if(bool-expr)

statements;

else

statements;

簡單的if例子

if(yourSales>=target)

(

performance="Satisfactory”;

bonus=100+0.01*(yourSales-target);

}

else

performance="Unsatisfactory”;

bonus=0;

重復(fù)的if-else選擇

■形如:

if(condition)

statementl;

elseif(condition2)

statement2;

elseif(conditions)

statements;

■■■■

else//最后一個必須是else

statement;

例子2

staticinttest(inttestval){//matchwithtarget

intresult=O;

if(testval>target)

result=-1;

elseif(testval<target)

result=1;

else

result=O;

returnresult;

)

開關(guān)語句

■多個分支結(jié)構(gòu)的判斷類型相同時,可以使用SW讓ch語句。

■形如

switch(int-expr)

(

casevail:blockl;

break;

caseval2:block2;

break;

default:block;

}

switch語句說明

■表達式的值必須是整型或者字符型

case后的語句可以是多條語句,此時不需要

大括號。

每個case的末尾應(yīng)該用break語句結(jié)束。

?MB.MB.fl*.MHBOHBMMB?■?■

switch語句的例子

1chargrade='B';2chargrade=B;

switch(grade)switch(grade)

(

case'A':score=5;case'A':score=5;

break;break;

caseB:score=6;caseB:score=6;

break;//nobreak

caseC:score=3;caseC:score=3;

break;break;

default:score=0;default:score=0;

))

switch語句的例子

3chargrade=,B,;

switch(grade)

default:score=0;

break;

case'A':score=5;

break;

caseB:score=6;

break;

caseC:score=3;

break;

4switch(month){

case1:

在匹配之后的case語句都被看

case3:

作是語句標號,不再進行匹

case7:

配。

days=31;

break;

case4:

case6:

days=30;

break;

)

循環(huán)語句

■滿足條件時,反復(fù)執(zhí)行某段程序。

■三種循環(huán)語句

?while語句

?do-while語句

?for語句

while語句

while語句在循環(huán)剛開始時,會計算一次“布

爾表達式”的值。后來的每一次循環(huán),都會

在開始前重新計算一次。

"語法形式:

while(bool-expr)

statements;

例子

■1while(s=1)//error,Typemismatch:cannotconvertfrominttoboolean

i=4;

)

二匚

例子2

//:WhileTest.java

WhileTest{

publicstaticvoidmain(String[]args){

doubler=0;

while(r<0.99){

r=Math.random();

System.out.println(r);

)

)

)

dowhile語句

■while和do-while唯一的區(qū)別就是do-while肯定會至

少執(zhí)行一次;而在while循環(huán)結(jié)構(gòu)中,若條件第一次

就為false,那么其中的語句根本不會執(zhí)行。在實際

應(yīng)用中,while比do-while更常用一些。

語法格式

do{

statements;

}while(bool-expr);

for循環(huán)

for循環(huán)常常被稱為計數(shù)器循環(huán),在第一次反

復(fù)之前要進行初始化。隨后,它會進行條件

測試,而且在每一次反復(fù)的時候,進行某種

形式的“步進”(Stepping)。

語法形式裁I】I

for(初始表達式;布爾表達式;步進)

語句;

例子

//:ListCharacters.java

//Demonstrates"for"loopbylisting

//alltheASCIIcharacters.

publicclassListcharacters{

publicstaticvoidmain(String[]args){

for(charc=0;c<128;C++)

if(c!=26)//ANSIClearscreen

System.out.println(

"value:"+(int)c+

"character:"+c);

}

)

說明

可以在for語句里定義多個變量,但它們必須

具有同樣的類型,例如

for(inti=0,j=1;i<10&&j!=11;i++,j++)

I*bodyofforloop*/

說明2

逗號表達式:使用逗號連接的各表達式按照順序進行計算。

■例

II:CommaOperator.java

publicclassCommaOperator{

publicstaticvoidmain(String[]args){

for(inti=1,j=i+10;i<5;i++,j=i*2){

System.out.println("i="+i+"j="+j);

)

)

)

輸出如下:

i=1j=11

i=2j=4

i=3j=6

i=4j=8

二L□I

中斷與繼續(xù)

在任何循環(huán)語句的主體部分,可用break和

continue控制循環(huán)的流程。其中,break用于

強行退出循環(huán),不執(zhí)行循環(huán)中剩余的語句。

而continue則停止執(zhí)行當前的循環(huán),然后退

回循環(huán)起始處,開始新的反復(fù)。

如果在for循環(huán)里使用continue,那么它會跳

轉(zhuǎn)到for循環(huán)的”步進“部分。

while(years<=100)

(

balance+=payment;

doubleinterest=balance*interestRate/100;

balance+=interest;

if(balance>=goal)

break;

years++;

}

labelledbreak

intn;

read_data:

while(...)

for(...)

if(n<0)

breakread_data;//breakoutofloop

}

)

例子

//BreakandContinue.java

publicclassBreakandContinue{

publicstaticvoidmain(String[]args){

for(inti=0;i<100;i++){

if(i==74)

break;--------

if(i%9!=0)

continue;

System.out.println(i);

}

}

)

執(zhí)行結(jié)果

?0

?9

?18

?27

36

45

54

63

72

程序設(shè)計舉例

System類是標準Java類,位于

例1---標準輸出java.lang包內(nèi)。

〃文件BasicJava.java

out是System類的一個靜態(tài)成

publicclassBasicJava{員,它是一個輸出流對象,

publicstaticvoidmain(String[]args){流用來控制鍵盤,顯示器等

輸入輸出設(shè)備。

System.out.println(Hello,world");

System.out.print('Hello);.是Java的選擇器,表示選擇

類或?qū)ο蟮哪硞€成員。

System.out.printC'world");

在屏幕輸出文字串可以使用out

)

輸出結(jié)果:對象的print/println方法:

)

Hello,worldprintin:輸出一行后,光標移到下一

HelloWorld行。

Pressanykeytocontinue....print:輸出一行之后,光標停留在

行尾。

■例1a--println的使用以及字符串連接

publicclassBasicJava{

Aprintln提供重載版本,允

publicstaticvoidmain(String[]args){許接受以下幾類參數(shù):

System.out.println⑴;〃打印整數(shù)11所有基本類型

2字符串類型String

System.out.println(1+2+"DGraphics");3Object對象類型

System.out.println("Java"+1+1);B當參數(shù)為字符串類型時,

允許通過“+”來連接字符

)輸出結(jié)果:串和其他類型

}11int+int+;

3DGraphics此時先做加法,再完成連接

Java112"….”+int+int

■例1b--打印多行文字一條Java語句可以分

行,但不允許作為

publicclassBasicJava{參數(shù)的字符串分行

publicstaticvoidmain(String[]args){y

System.out.println(t(Javaisanobject'

orientedprogramminglanguage");//error

System.out.println(,(Javaisanobjecf

+,,orientedprogramminglanguage");〃right

}

}

■例2—簡單計算:攝氏溫度轉(zhuǎn)換成華氏溫度

publicclassBasicJava{

publicstaticvoidmain(String[]args){

//Temperaturetransition如果轉(zhuǎn)換公式寫成下面會怎么樣?

intcelsius=20;fahrenheit=32+(9/5)*celsiut

intfahrenheit=32+(9*celsius)/5;^^

System.out.println("CelsiusTemperature:"+celsius);

System.out.println("FahrenheitTemperature:"+fahrenheit);

}Result:

)CelsiusTemperature:20

FahrenheitTemperature:68

■例為一簡單計算一大小寫字母轉(zhuǎn)換

publicclassBasicJava{

publicstaticvoidmain(String[]args){

〃大小寫轉(zhuǎn)換

charlowerChar='c';〃或者lowerChar=99;

charupperChar='c'-32;〃方式1

intupperChar2=(A包HlowerChar;//方式2,等號右邊是int型一

System.out.print("Character"+lowerChar);J

System.out.println("\'suppercaseletteris"+(char)upperChar);

Characterc'suppercaseletterisC

)

例2a-簡單計算-一英鎊和公斤轉(zhuǎn)換

publicclassBasicJava{聲明常量使用final關(guān)

publicstaticvoidmain(String[]args){鍵字。常量采用大

寫字母加下劃線的

finaldoubleKILOGRAM_PER_POUND=0

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論