版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第二章Java語言基礎
Java數據類型
■運算符與表達式
■流程控制語句
二:匚一工
2.1Java數據類型
?基本數據類型
■類型之間的轉換
Java數據類型的分類
■簡單數據類型
Integeral:byte,short,intjong
Floating:float,double
Textual:char
Logical:boolean
復合數據類型(對象引用類型)
class
interface
數組
幾個概念
1標識符與保留字
■標識符(identifier):在程序中用來標識各變量或者常量的符號。
?必須由字母、下劃線或$開始,其余字母可以為上述三種字母或者數
字
?合法的標識符:
var_list_a
$var2
_var$_2
?不合法的標識符:
1var
var%
interface
保留字
'由系統中預定義的,留作專用的標識符。
保留字不可以作為標識符。
2常量與變量
■常量二恒值的量
?必須使用final關鍵字定義常量,例如
finalfloatCOUNT_RATE=0.02;
finalintAREA=100;
?系統提供的常量:Math.PI,Math.E
變量
floatlength=1.11;
intcount=20;
整型數據
■分類
byteshortintlong
字節(jié)數1248
數字范圍-128-127-32768--2,147,483,648
32767?2,143,483,647
表示法
整型數據的使用
-默認的整型常量為int型'
x=12;〃此處常量12為int型
對于long型常量,當值超出了int范圍時,需
要添加后綴”L"
longx=12000000000L;〃正確「I”亦可
longx=12000000000;〃錯誤
longx=12;〃正確
整型數據的使用2
■對于byte,short型變量,在賦值時存在兩種情
況:
?如果值不超過規(guī)定的范圍,不會出現問題
,?如果值超出了規(guī)定的范圍,會引起語法錯誤
O例如
byteb=12;//noproblem
byteb=256;//error
聲明和初始化
■intnumber;〃這是一個聲明
longpopulation=100L;〃聲明變量并且初始化
3變量在使用之前必須初始化
bytenum1=56,num2;
bytenum3=num1+num2;〃錯誤,num2未初始化
浮點型
■分類
floatdouble
字節(jié)數48
小數點后6?715
有效位數
表示法
十進制小數:0.12,3.14,.56,...
科學計數法:12E-2,314E-2,56E-2
■默認的小數都是double型的
floatx=1.2f;〃正確
floatx=1.2;〃錯誤
字符型數據
?字符集
/ASCII字符集:1字節(jié),128個字符
/擴展的ACSII集:256個字符
/Unicode字符集:2字節(jié),0-65535
char類型占2字節(jié)
?表示法
?chara='a,;
charb-'b^;//錯誤
?轉義字符:為了簡便的表達一些常用的特殊
字符而采用的方法,即'后跟某個字符組合后
被賦予新的意義的字符。常見的如‘
\u:unicode字符
,\t:制表
\r:回車
字符串
■由標準庫提供的String類,并非基本數據類型。每個
被雙引號引起來的字符串都是String類的一個實例
Stringe="”;
Stringgreeting="hello”;
串的連接:使用符號把兩個字符串連接起來
intanswer=2;
System.out.println(utheansweris"answer);
布爾型數據
布爾型數據只有兩個值:false和true。
■表示:
booleandone=true;
2.1.2數據類型之間的轉換
不同類型的數據在進行各類計算和賦值時需
要進行類型轉換,轉換的原因:
?數據存儲的格式不同,例如整型和浮點型的不同
?數據在存儲空間中所占大小的不同,例如int型和
long型的字節(jié)數不同
??.
不同方向上的轉換
自動進行
強制進行
F.uir1L7V
f----~■一—rr“r
示例
1intn=123456789;
float仁n;〃有問題:fis1.23456792E8
bytea=12;
intb二a;〃不會出現問題
floatx=1.2f;
doubley=x;//noproblem
造型(cast)
1同類型之間大到小的轉換必須造型
■inti=25;
byteb=(byte)i;
bytec=i;//wrong,Typemismatch:cannotconvertfrominttobyte
doublex=1.25;
floaty=(float)x;//right
floatz=x;//wrong,Typemismatch:cannotconvertfromdoubletofloat
如果存在float類型的數據,則
運算的結果為float;否則
混合運算
■byteb=1;
shortc=2;
Shorta=b+C;〃錯誤,不能將int類型直接轉換為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運算符與表達式
算術運算
■遞增和遞減運算
?關系和布爾運算
位運算
算術運算
/運算符號:
/0除整數發(fā)生異常,除浮點數得到無窮大或
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
.
關系和布爾運算
1關系運算:比較兩個數是否相等
?符號:==,!=,〈,>,>二,<二
?運算結果只能是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;
位運算
位運算處理數據的各個獨立位。要理解該運
算需要先將數據展成二進制形式。
幾種位運算方式:
?&:各位進行“與”運算
?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
解釋:通過適當的2的哥指數,可以把所有其他
數據位屏蔽掉,而只剩下單獨的某一位。
移位運算
移位運算
?VV:將運算對象左移指定的位數,低位補0
?>>:有符號右移運算符,若對象為正,則高位補0,
否則補1
?>>>:無符號右移,高位補0,對char,byte,short進
行移位運算時,會自動轉換成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);
結果:
-1:11111111111111111111111111111111
■419430300000000001111111111111111111111
幾點說明
/幾乎所有的運算符都只能操作基本類型,唯一的例
外是“二","=="/!=";另外,String類支持和
“十二”。
/在C和C++中,一種常見的錯誤如下:
if(x=y){
//??.
)
在java里,x=y的值不是布爾值,因此不會被當作布
爾結果作條件判斷,從而阻止程序的執(zhí)行。
--u
說明(2):“UlcerAddictsReallyLikeCAlot”,即“潰瘍患者特別喜歡
(維生素)C”。
/運算符的優(yōu)先順序
助記詞運算符類型運算符
UlcerUnary+-++—
AddictsArithemetic(andshift)*/%+-??
ReallyRelational><>=<===!=
LikeLogical(andbitwise)&&||&|A
CConditionalA>B?X:Y
ALotAssignment—
2.3流程控制語句
-結構化程序設計1
■選擇結構
?循環(huán)結構
結構化程序設計的特點
1.只有一個入口
2.只有一個出口
結構內的每一部分都有機會執(zhí)行到
i吐
不存在死循環(huán)
.
塊結構
■一個塊(復合語句)是用一對花括號括起的任意數
量的簡單Java語司,例如
publicstaticvoidmain(String[]args)
intn;
intk;
,塊范圍
)
}
塊作用域
■塊結構決定了塊內定義的變量的作用域;塊可以嵌
套,同時,不可以在嵌套的塊內定義已有的變量名。
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;
重復的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;
)
開關語句
■多個分支結構的判斷類型相同時,可以使用SW讓ch語句。
■形如
switch(int-expr)
(
casevail:blockl;
break;
caseval2:block2;
break;
default:block;
}
switch語句說明
■表達式的值必須是整型或者字符型
case后的語句可以是多條語句,此時不需要
大括號。
每個case的末尾應該用break語句結束。
?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)語句
■滿足條件時,反復執(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)結構中,若條件第一次
就為false,那么其中的語句根本不會執(zhí)行。在實際
應用中,while比do-while更常用一些。
語法格式
do{
statements;
}while(bool-expr);
for循環(huán)
for循環(huán)常常被稱為計數器循環(huán),在第一次反
復之前要進行初始化。隨后,它會進行條件
測試,而且在每一次反復的時候,進行某種
形式的“步進”(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)起始處,開始新的反復。
如果在for循環(huán)里使用continue,那么它會跳
轉到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í)行結果
?0
?9
?18
?27
36
45
54
63
72
程序設計舉例
System類是標準Java類,位于
例1---標準輸出java.lang包內。
〃文件BasicJava.java
out是System類的一個靜態(tài)成
publicclassBasicJava{員,它是一個輸出流對象,
publicstaticvoidmain(String[]args){流用來控制鍵盤,顯示器等
輸入輸出設備。
System.out.println(Hello,world");
System.out.print('Hello);.是Java的選擇器,表示選擇
類或對象的某個成員。
System.out.printC'world");
在屏幕輸出文字串可以使用out
)
輸出結果:對象的print/println方法:
)
Hello,worldprintin:輸出一行后,光標移到下一
HelloWorld行。
Pressanykeytocontinue....print:輸出一行之后,光標停留在
行尾。
■例1a--println的使用以及字符串連接
publicclassBasicJava{
Aprintln提供重載版本,允
publicstaticvoidmain(String[]args){許接受以下幾類參數:
System.out.println⑴;〃打印整數11所有基本類型
2字符串類型String
System.out.println(1+2+"DGraphics");3Object對象類型
System.out.println("Java"+1+1);B當參數為字符串類型時,
允許通過“+”來連接字符
)輸出結果:串和其他類型
}11int+int+;
3DGraphics此時先做加法,再完成連接
Java112"….”+int+int
■例1b--打印多行文字一條Java語句可以分
行,但不允許作為
publicclassBasicJava{參數的字符串分行
publicstaticvoidmain(String[]args){y
System.out.println(t(Javaisanobject'
orientedprogramminglanguage");//error
System.out.println(,(Javaisanobjecf
+,,orientedprogramminglanguage");〃right
}
}
■例2—簡單計算:攝氏溫度轉換成華氏溫度
publicclassBasicJava{
publicstaticvoidmain(String[]args){
//Temperaturetransition如果轉換公式寫成下面會怎么樣?
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
■例為一簡單計算一大小寫字母轉換
publicclassBasicJava{
publicstaticvoidmain(String[]args){
〃大小寫轉換
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-簡單計算-一英鎊和公斤轉換
publicclassBasicJava{聲明常量使用final關
publicstaticvoidmain(String[]args){鍵字。常量采用大
寫字母加下劃線的
finaldoubleKILOGRAM_PER_POUND=0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024銅門制安工程賠償合同
- 2025年度不銹鋼板材行業(yè)綠色制造與可持續(xù)發(fā)展合同范本2篇
- 2024藥品研發(fā)項目合作開發(fā)與成果轉讓合同3篇
- 2025年度智能倉儲物流服務合同范本二零二五年度4篇
- 《銀伯爵珠寶培訓》課件
- 2024版商鋪轉讓協議書范本
- 中國魔芋素食品行業(yè)發(fā)展前景預測及投資方向研究報告
- 2025年水電工程安裝與智能化改造合同范本
- 2025年鞍鋼集團工程技術有限公司招聘筆試參考題庫含答案解析
- 2025年中咨工程管理咨詢有限公司招聘筆試參考題庫含答案解析
- 導尿及留置導尿技術
- 情人合同范例
- 建筑公司勞務合作協議書范本
- 安徽省合肥市2023-2024學年高一上學期物理期末試卷(含答案)
- 《基于杜邦分析法的公司盈利能力研究的國內外文獻綜述》2700字
- 儒家思想講解課程設計
- 2024年個人汽車抵押借款合同范本(四篇)
- 2024-2025學年九年級化學上冊 第二單元 單元測試卷(人教版)
- 軌道交通設備更新項目可行性研究報告-超長期國債
- 2024-2030年中國一氧化二氮氣體行業(yè)市場發(fā)展趨勢與前景展望戰(zhàn)略分析報告
- NB/T 11446-2023煤礦連采連充技術要求
評論
0/150
提交評論