版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【《現(xiàn)代古箏演奏技巧在民族響樂團中的影響探究》5300字(論文)】
- 【《加加食品公司人力資源績效管理存在的問題及優(yōu)化案例8600字》(論文)】
- 新學(xué)期計劃書職中300字(15篇)
- 2024年客服年終工作總結(jié)參考模板(三篇)
- 2024年年終總結(jié)參考樣本(四篇)
- 2024年小學(xué)學(xué)??记谥贫确段模ㄈ?/a>
- 2024年醫(yī)院院感科質(zhì)控小組成員及職責(zé)范本(二篇)
- 2024年商鋪買賣合同范例(四篇)
- 2024年小學(xué)衛(wèi)生室工作計劃(三篇)
- 2024年幼兒園小班安全計劃例文(四篇)
- 3-4單元測試-2024-2025學(xué)年統(tǒng)編版語文六年級上冊
- 2024-2030年中國濱海旅游行業(yè)發(fā)展分析及投資戰(zhàn)略研究咨詢報告
- 八年級物理第一次月考卷(考試版A3)(遼寧專用人教版2024第1~3章第2節(jié))
- 2024-2030年中國農(nóng)村商業(yè)銀行行業(yè)市場深度調(diào)研及發(fā)展趨勢與投資前景研究報告
- 2024至2030年中國商業(yè)POS機行業(yè)現(xiàn)狀調(diào)研及未來發(fā)展展望報告
- 公共衛(wèi)生突發(fā)事件應(yīng)急處理與防治考核試卷
- 5.2 外力作用與地表形態(tài)高三地理一輪復(fù)習(xí)課件
- NB/T 11446-2023煤礦連采連充技術(shù)要求
- 護理美學(xué)-第一章 美學(xué)概述
- 空調(diào)管路設(shè)計規(guī)范
- 消防故障排查合同范本
評論
0/150
提交評論