ch3java語言基礎-p標識符、關鍵字和數據類型_第1頁
ch3java語言基礎-p標識符、關鍵字和數據類型_第2頁
ch3java語言基礎-p標識符、關鍵字和數據類型_第3頁
ch3java語言基礎-p標識符、關鍵字和數據類型_第4頁
ch3java語言基礎-p標識符、關鍵字和數據類型_第5頁
免費預覽已結束,剩余136頁可下載查看

下載本文檔

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

文檔簡介

標識符、關鍵字和數據類型表達式與程序流控制數組主要內容2020/11/2112020/11/212標識符標識符包括:類名變量名方法(函數)名以字母,“_”或“$”開頭字符序列大小寫敏感,且長度沒有限定如:

usernameuser_name標識符風格約定:_,$

變量名,方法名開頭變量名、方法名首單詞小寫,其余單詞只有首字母大寫如anyVariableWorld接口名、類名首單詞第一個字母大寫。常量:完全大寫注釋:///*

*/注釋一行注釋一行或多行/**

可用javadoc命令轉化為HTML文件*/2020/11/2132020/14關鍵字*當前不使用**

為Java

2增加的2020/11/215數據類型類型分類類型名稱程序中使用的名稱基本數據類型布爾型(Boolean)布爾型:boolean字符型(Char)字符型:char整數型(Integer)字節型:byte短整型:short整型

:int長整型:long實(浮點)型(Float)單精度型:float雙精度型:double復合數據類型類(Class)類:class接口(Interface)接口:interface數組(Array)2020/11/216Java

基本數據類型邏輯型(布爾型)文字型整數類型浮點型2020/11/217邏輯型邏輯型:boolean取值:true

,

false例如:boolean

truth=true;2020/11/218文字型文字型:char

、Stringchar:16位的unicode(國際碼)字符。如

char

mychar=‘Q’;unicode字符集是一套字符編碼系統,可以支持各類文字的字符,達34168個字符。定義形式:‘a’;‘\t’;‘\u’String是類,String

greeting=“Good

Morning!\n”;2020/11/219整數類型整數類型:byte,

short,

int

和long類型長度取值范圍byte8位-27

~27-1short16位-215

~215-1int32位-231~231-1long64位-263

~263-12020/11/2110整數類型Java中缺省整型是int可有3種形式:十進制、八進制、十六進制十進制int

24long

24L八進制07710771L十六進制0XAB070XAB07L2020/11/2111浮點型浮點型:float

double長度:float:

32位double:64位缺省是double

類型,如3.14

(double

型)表達方法:E或e-科學記數法,6.02e23F或f-表示float類型,6.02e23FD或d-表示double

型,2.718D變量類型初始值變量類型

初始值byte0double

0.0Dshort0char

‘\u0000’int0boolean

falselong0所有

類型

null(類、接口、數組)float2020/11/21012各種類型變量的初始值運算符與表達式與C不同之處:Java是強類型語言,類型限制比C嚴格,運算符的操作對象的類型會受到

限制。Java不提供指針運算符,增加了對象操作符instanceof,字符串運算符+和零填充的右移>>>等。2020/11/21132020/11/2114運算符算術運算操作符:+,-,*,/,

%,

++,

--關系操作符:>,

>=,

<,

<=,

==,

!=2020/11/2115運算符位操作符:>>,<<,>>>,&,|,^(逐位異或),~(按位取反)邏輯操作符:&,

|,!,^(異或),&&,

||2020/11/2116運算符賦值操作符:=,

+=,

-=,

*=,

/=,

%=,&=,

|=,

^=,<<=,

>>=,

>>>=其它操作符:?:

,

[],

.

,

(

),(type),

new,

instanceof賦值運算符與賦值表達式賦值運算符“=”例如:a1=3;再看下面的語句:a1=a1+1;則本語句執行后,a1的值將變為4。有時還經常使用這樣的語句:j

=

i

=

3

;2020/11/2117算術運算符與算術表達式1.算術運算符算術運算符大多用于數對象數名稱運算符運算規則運算對象表達式實例運行結果一元正+取原值整型(或)實型+3+3負—取負值-4-4二元加+加法4+59減—減法8-53乘*乘法整型(或)實型4*936除/除法7.0

/23.5模%整除取余整形8

%

32算。如下表所示:2020/11/2118例1:算術運算符在程序中的使用publicclass

MathOperator

{public

static

void

main(String

args[]){int

a=15;intb=4;////int變量a,并賦值為13

int變量b,并賦值為4System.out.println("a="+a+",b="+b);System.out.println("a+b="+(a+b));System.out.println("a-b="+(a-b));System.out.println("a*b="+(a*b));System.out.println("a/b="+(a/b));//輸出a與b//輸出a+b的值//輸出a-b的值//輸出a*b//輸出a/b的值System.out.println("a/b="+(float)(a/b));//輸出(float)a/b的實型數值System.out.println(a+"%"+b+"="+(a%b));System.out.println(b+"%"+a+"="+(b%a));//輸出a%b的值//輸出b%a的值}}

2020/11/2119例1:算術運算符在程序中的使用publicclass

MathOperator

{public

static

void

main(String

args[]){int

a=15;intb=4;////int變量a,并賦值為13

int變量b,并賦值為4System.out.println("a="+a+",b="+b);System.out.println("a+b="+(a+b));System.out.println("a-b="+(a-b));System.out.println("a*b="+(a*b));System.out.println("a/b="+(a/b));//輸出a與b//輸出a+b的值//輸出a-b的值//輸出a*b//輸出a/b的值System.out.println("a/b="+((float)a/b));//輸出(float)a/b的實型數值System.out.println(a+"%"+b+"="+(a%b));System.out.println(b+"%"+a+"="+(b%a));//輸出a%b的值//輸出b%a的值}}

2020/11/21202020/11/21212.遞增和遞減運算符遞增和遞減運算符:“++”和“--”。如果在程序中定義了變量i,在程序運行時想讓它的值增1,可使用語句:i

=i

+1;等同與下面的語句:i++

;對象數名稱運算符運算規則運算對象一元增1(前置)增1(后置)減1(前置)減1(后置)++++――――先加1,后使用先使用,后加1先減1,后使用先使用,后減1整型、字符型例如對如下的語句塊:inti=3;System.out.println(i++);此時的輸出結果為3,待輸出結束后,i才增值為4。++i的執行原則則相反:是先增1,后

。如對如下的語句塊:int

i=3;System.out.println(++i);此時的輸出結果為4,i先增值為4,然后輸出結果。2020/11/2122關系運算符與關系表達式2020/11/2123名稱運算符運算規則運算對象表達式實例運行結果小于<滿足則為真不滿足則為假整型(或)實型(或)字符型等2<3true小于或等于<=6<=6true大于>‘a’>’b’false大于或等于>=7.8>=5.6true等于==9==9true不等于!=8!=8false邏輯運算符與邏輯表達式對象數名稱運算符運算規則運算對象一元邏輯非!參看下表邏輯型二元邏輯與&&邏輯或||對象1

a對象2

b!aa&&ba||bfalsefalsetruefalsefalsefalsetruefalsetruetruefalsefalsefalsetruetruetruetruetrue表1:邏輯運算符使用說明表2:邏輯運算符運算規則2020/11/2124}2020/11/2125邏輯表達式往往可用于表示比較復雜的條件,例如要判別某一年year是否是閏年,閏年的判別條件是:能被4整除但不能被100整除,或者能被400整除。可以用一個邏輯表達式來表示:(year

%

4=

=0

&&

year

%

100

!=0)

||year

%

400

==

0當year為某一整數值時,上述表達式值為true,則year年為閏年,否則為非閏年。例2:關系運算符與邏輯運算符在程序中的使用:public

class

CLoperation{public static

void

main(String

args[]){int

a=58;boolean

k=((a>0)

&&

(a<100));System.out.println(k);}2020/11/2126在Java中,運算符&&和||的運算規則遵循一種在電工學中稱為“短路”的執行方式,即對于邏輯表達式的求解中,并不是所有的邏輯運算符都被執行,只是在必須執行下一個邏輯運算符才能求出表達式的結果時,才執行該運算符。運算符&&和||例如:a&&b&&c:如果a非真,則不再判別b和c,直接輸出表達式的值為false;若a為真,則判別b,若b非真,則不再判別c,直接輸出表達式的值為false;當a、b同時為

判別c的真假。運算符&&和||2020/11/2127例如:a||b||c:如果a為真,則不再判別b和c,直接輸出表達式的值為true;若a非真,則判別b,若b為真,則不再判別c,直接輸出表達式的值為true;當a、b同時非

判別c的真假。運算符&&和||2020/11/2128復合賦值運算符2020/11/2129復合賦值運算符是一種將算術運算符與賦值運算符相結合的一種運算符,這些運算符的說明及使用方式如下表所示:運算符用法舉例說明意義+=a+=ba+b的值存放到a中a=a+b-=a-=ba-b的值存放到a中a=a-b*=a*=ba*b的值存放到a中a=a*b/=a/=ba/b的值存放到a中a=a/b%=a%=ba%b的值存放到a中a=a%b2020/11/2130例3:復合賦值運算符在程序中的簡單使用:publicclass

CompOperating{public

static

void

main(String

args[])

{inta=5,b=8;System.out.println("Before

calculate:

a="+a+",b="+b);a+=b; //

計算a+=b的值System.out.println("After

+=

calculate:

a="+a+",b="+b);a-=b; //計算a-=b的值System.out.println("After

-=

calculate:

a="+a+",b="+b);a*=b; //

計算a*=b的值System.out.println("After

*=

calculate:

a="+a+",b="+b);a/=b; //

計算a/=b的值System.out.println("After

/=

calculate:

a="+a+",b="+b);}}其它運算符2020/11/21311.位運算符運算符說明用法舉例&轉換為二進制數字進行與運算1&1=1,1&0=0,

0&1=0,

0&0=0|轉換為二進制數字進行或運算1|1=1,

1|0=1,

0|1=1,

0|0=0^轉換為二進制數字進行異或運算1^1=0,

1^0=1,

0^1=1,

0^0=0~進行數值的相反數減1運算~100=-100-1=

-101>>向右移位15>>1=7<<向左移位15<<1=30>>>向右移位15>>>1=7<<=左移賦值運算符n<<=3等于n=n<<3>>=右移賦值運算符n>>=3等于n=n>>3>>>=無符號右移賦值運算符n>>>=3等于n=n>>>32020/11/2132右移操作符>>和>>>>>:帶符號右移1010

>>

2

111010...>>>:無符號右移,以0

填充1010

>>>

2

001010

...2020/11/21332.條件運算符:?:語法形式為:<表達式>?e1:e2其中表達式值的類型為邏輯型,若表達式的值為真,則返回e1的值;表達式值為非真,返回e2的值。設有下列代碼語句:int a

=3

,

b

=6

,

c

;c

= (a>b)?

1

:2

;則執行后c的值為2。運算符的優先級與結合性2020/11/2134Java語言規定了運算符的優先級與結合性。在表達式求值時,先按運算符的優先級別由高到低的次序執行例如,算術運算符中采用“先乘除后加減”。運算符的優先級與結合性2020/11/2135如果在一個運算對象兩側的優先級別相同,則按規定的“結合方向”處理,稱為運算符的“結合性”。Java規定了各種運算符的結合性,如算術運算符的結合方向為“自左至右”,即先左后右。Java中也有一些運算符的結合性是“自右至左”的。運算符的優先級與結合性2020/11/2136例如:當a=3;b=4時若 k

=

a

5

+

b

,則

k

=

2(先計算a-5,再計算-2+b)若 k

=

a

+

=b

-=

2,則

k

=

5(先計算b-=2,再計算a+=2)37優先級運算符類結合性1(

)括號運算符自左至右1[

]方括號運算符自左至右2!、+(正號)、-(負號)一元運算符自右至左2~位邏輯運算符自右至左2++、--遞增、遞減運算符自右至左3*、/、%算術運算符自左至右4+、-算術運算符自左至右5<<、>>位左移、右移運算符自左至右6>、>=、<、<=關系運算符自左至右7==、!=關系運算符自左至右8&位邏輯運算符自左至右9^位邏輯運算符自左至右10|位邏輯運算符自左至右11&&邏輯運算符自左至右12||邏輯運算符自左至右13

2020/11/21?:條件運算符自右至左14=、+=、-=、*=、/=、%=(復合)賦值運算符自右至左2020/11/2138Java

類型轉換Java允許它的用戶有限度地進行數據類型轉換處理。轉換的方式可分為“自動類型轉換”和“強制類型轉換”兩種。Java

類型轉換自動類型轉換整型、實型和字符型數據需要進行混合運算時,首先需要把不同類型的數據轉化為同一類型,然后才能進行運算。轉換時,系統將按照數據類型的表示范圍由小到大的轉換原則自動進行。數據類型的表示范圍由小到大的順序依次為:小byte

short

char

int

long

float大double2020/11/21392020/11/21

40例5:自動類型轉換示例:classTyChange{public

static

void

main(String

args[]){int

i=100;charbytelongc1='a';b=3;l=567L;float

f=1.89f;double

d=2.1;int

i1=i+c1;long

l1=l-i1;float

f1=b*f;//char類型的變量c1自動轉換為與i一致的int類型參加運算//int類型的變量i1自動轉換為與l一致的long類型參加運算//byte類型的變量b自動轉換為與f一致的float類型參加運算double

d1=d+f1/i1; /*int類型的變量i1自動轉換為與f1一致的float類型f1/i1計算結果為float類型.然后再轉換為與d一致的double類型。*/System.out.println("i1="+i1);System.out.println("l1="+l1);System.out.println("f1="+f1);System.out.println("d1="+d1);}}2020/11/2141Java

類型轉換強制類型轉換一般形式:(type)expression例:(float)x/2對強制類型轉換的限制:整型與浮點型可以相互轉換,但基本類型和數組、對象等復合類型之間不能互相轉換。2020/11/2142Java

類型轉換強制類型轉換當表示范圍大的數據類型要轉換成表示范圍小的數據類型時,需要用到強制類型轉換,強制類型轉換的語法形式為:(type)<變量名>例如:int m=3

;byte b=(byte)m;//把int型變量m強制轉換為byte型2020/11/2143Java

類型轉換強制類型轉換有時當兩個整數相除時,系統會把這種運算歸為整數類型的運算,因而會自動截去小數部分,使運算結果保持為整數。這顯然不是預期的結果,因此想要得到運算的結果為實型數,就必須將兩個整數中的一個(或兩個)強制轉換為實型,此時下面的三種寫法均可行:2020/11/2144Java

類型轉換強制類型轉換(1)(

float

)

a

/

b//將整數a強制轉換成實型數,再與整數b相除(2)a

/

(

float

)

b//將整數b強制轉換成實型數,再被整數a除(3)(

float

)

a

/

(

float

)

b//將整數a與b同時強制轉換成實型數只要在變量前面加上欲轉換的類型,運行時系統就會自動將這一行語句里的變量進行類型轉換處理,但不會影響該變量原先定義的類型。}2020/11/2145例6:數據類型的強制轉換public

class

ChangeTest{public

static

void

main(String

args[]){int

a=155;intb=9;float

c,d;System.out.println("a="+a+",b="+b);//輸出a、bc=(float)a/b; //

將a除以b的結果放在c中System.out.println("a/b="+c); //

輸出c的值d=a/b; //

將a除以b的結果放在d中System.out.println("a/b="+d); //

輸出d}字符類型的強制轉換字符的表示char

letter=‘A’char

numChar=‘4’碼和ASCII碼2020/11/21462020/11/2147Java的結構化程序設計和程序流控制結構化程序設計有三種基本程序流程結構:順序(sequence)結構選擇(selection)結構循環(loop)結構。順序結構及基本語句順序結構系統默認自上而下一行一行地執行程序,這類程序的結構就稱為順序結構。基本語句賦值語句輸入語句開始語句1語句2語句n結束2020/11/21482020/11/2149在Java中提供用戶鍵盤輸入環境的程序由以下(黑體字部分)語句固定組合而成:import

java.io.*;public

class

類名稱{public

static

void

main(String

args[])

throws

IOException{BufferedReader

buf;

//定義buf為BufferedReader類的對象變量String

str;

//定義str為string類型的變量……buf=new

BufferedReader(new

InputStreamReader(System.in));//初始化buf對象//輸入字符串至變量str存放str=buf.readLine();……}}2020/11/2150例:從鍵盤接收用戶輸入的字符串并輸出該字符串。程序如下:importjava.io.*;public

class

InputStr{public

static

voidmain(String

args[])throws

IOException{BufferedReader

buf;Stringstr;buf=new

BufferedReader(newInputStreamReader(System.in));System.out.print("Input

a

String:");str=buf.readLine();System.out.println("string="+str);}}例:由鍵盤輸入整數示例:程序如下:import

java.io.*;public

class

InputNum{public

static

void

main(String

args[])

throws

IOException{int

num;String

str;BufferedReader

buf;buf=new

BufferedReader(new

InputStreamReader(System.in));System.out.print(“Input

an

integer:”);str=buf.readLine();//將輸入的文字指定給字符串變量str存放num=Integer.parseInt(str);//將str轉成int類型后指定給num存放System.out.println("The

integer

is

"+num);}}2020/11/2151面的程序中:num=Integer.parseInt(str)是起數據轉換作用的語句,將字符串轉換為int型的數值。若是想轉換成其他類型的數值,則可利用下表中的方法。數據類型轉換的方法LongLong.parseLong()IntInteger.parseInteger()ShortShort.parseShort()ByteByte.

parseByte()DoubleDouble.

parse

Double()FloatFloat.

parse

Float()2020/11/2152選擇結構if語句if語句是最簡單的選擇結構語句,格式如下:if

<表達式>

{語句塊}其中表達式的設置是很重要的,它返回邏輯(布爾)值,如果true則進入{}部分的語句塊處理。否則跳過該{}部分,執行下面的語句。如果{語句塊}中只有一句語句,則左右大括號可以不寫。If語句又稱為單分支結構語句,它的執行流程如右上圖所示:表達式語句塊true2020/11/21532020/11/2154例:使用if語句判別兩數是否相等:程序如下:public

class

IfTest{public

static

void

main(String

args[]){int

a=3;intb=3;if

(a==b)System.out.println("a

equals

b

");}}該程序中表達式(a==b)中的關系運算符“==”不可以寫成“=”。2020/11/2155例:if

語句的重復使用:從鍵盤出入三個數,將其按從小到大的順序輸出。程序如下:import

java.io.*;public

class

CompIf

{public

static

void

main(String

args[])

throws

IOException

{int

a,b,c,t;String

str;BufferedReader

buf;buf=new

BufferedReader(new

InputStreamReader(System.in));number:");System.out.print("Inputstr=buf.readLine();a=Integer.parseInt(str);System.out.print("Input

second

number:");str=buf.readLine();

b=Integer.parseInt(str);System.out.print("Input

third

number:");str=buf.readLine();

c=Integer.parseInt(str);if

(a>b)

{t=a;a=b;b=t;}if

(a>c)

{t=a;a=c;c=t;}if

(b>c)

{t=b;b=c;c=t;}

//交換兩個變量的值System.out.print(a+",");System.out.print(b+",");System.out.print(c);}2020/11/2156if-else語句if-else語句的操作比if語句多了一步:如果表達式的值為假,則程序進入else部分的語句塊(語句塊2)處理。故它又被稱為雙分支結構語句。if-else語句語法格式為:if<表達式>{語句塊1}else{語句塊2}truefalse表達式語句塊2語句塊12020/11/2157例:通過鍵盤輸入兩個整數,用if-else結構判別這兩個數是否相等,并分別輸出不同信息:程序如下:importjava.io.*;

public

class

IfElseTest{public

static

void

main(Stringargs[])

throws

IOException

{int

a,b;String

str;BufferedReader

buf;buf=new

BufferedReader(new

InputStreamReader(System.in));System.out.print("Input

an

integer:");str=buf.readLine();a=Integer.parseInt(str);

//將str轉成int類型后指定給a存放System.out.print("Input

anotherinteger:");//再次調用方法接收鍵盤數據//將str轉成int類型后指定給b存放str=buf.readLine();b=Integer.parseInteger(str);if(a=

=b)System.out.println("a

equals

b

");elseSystem.out.println("a

doesn't

equal

b");}}2020/11/2158例:輸入一個年份,由程序判斷該年是否為閏年。程序如下:import

java.io.*;publicclass

JustLeapYear{publicstatic

void

main(String

args[])

throws

IOException

{int

year;String

str;BufferedReader

buf;buf=new

BufferedReader(new

InputStreamReader(System.in));System.out.println("Inputthe

year:");str=buf.readLine();year=Integer.parseInt(str);if

(year

%

4

==

0

&&

year%

100

!=0

||

year

%

400

==0)System.out.println("year

"+year+"

is

a

leap

year.");elseSystem.out.println("year

"+year+"

is

not

a

leap

year.");}}if-else

if語句if-elseif語句用于處理多個分支的情況,因此又稱多分支結構語句。其語法格式為:if<表達式1>{語句塊1}else

if<表達式2>{語句塊2}……else

if<表達式n>{語句塊n}[

else{語句塊n+1}]truetruetruefalse表達式false

1表達式n語句塊1語句塊2語句塊n語句塊n+1表達式2false……2020/11/215960例:用if-elseif語句實現下面的符號函數:程序如下:import

java.io.*;public

class

SignClass{public

static

void

main(String

args[])

throws

IOException

{double

x

;int

y;String

str;BufferedReader

buf;buf=new

BufferedReader(new

InputStreamReader(System.in));System.out.print("Input

x

is:");str=buf.readLine();x=Double.parseDouble(str);if

(x>0)y=1;else

if

(x=

=0)y=0;elsey=-1;System.out.print("y="+y);202}0/11/21}x

<

0x

=

0x

>

0-

1y

=10if語句的嵌套在if語句中又包含一個或多個if語句稱為if語句嵌套,這是程序設計中經常使用的技術。例如現在有三個整數a、b、c,要判別它們能否構成三角形的三條邊,則首先應判別這三個整數是否都大于零,然后才判別其任意兩個數之和是否大于第三個數,其程序塊為:if (a>0)

&&

(b>0)

&&(c>0){ if

(a+b>c)

&&(a+c>b)

&&(b+c>a)System.out.println

(Yes");elseSystem.out.println

("No");}elseSystem.out.prinlnt("No");2020/11/21612020/11/2162編程練習問題:一個簡單的數學學習工具假設希望開發一個程序,讓一年級學生練習加法。從鍵盤輸入兩個整數:number1和number2,然后顯示給學生“Whatis7+9?”當學生輸入答案之后,程序顯示一個消息,標明答案是對還是錯。2020/11/2163編程練習解題思路:只需一個類從鍵盤輸入兩個整數求和判斷對錯顯示結果程序代碼import

java.util.Scanner;public

class

StudyTools

{public

static

void

main(Stringargs[]){int

number1,number2;number1=number2=0;Scanner

input=new

Scanner(System.in);System.out.println("請輸入0-100之間的整數");number1=input.nextInt();number2=input.nextInt();System.out.print("What

is"+number1+"+"+number2+"?");int

answer=input.nextInt();if((number1+number2)==answer){System.out.println(number1+"+"+number2+"="+answer+"is

true");}elseSystem.out.print(number1+"+"+number2+"="+answer+"is

false");}2020/11/21}64if.....else語句改成一條語句打印出來加入循環語句,使做題練習可以不斷進行輸入的數據改成機器隨機產生加法練習改成加減法練習程序代碼import

java.util.Scanner;public

class

StudyTools

{public

static

void

main(Stringargs[]){

int

number1=(int)(Math.random()*100);int

number2=(int)(Math.random()*100);//Scanner

input=new

Scanner(System.in);System.out.println("請輸入0-100之間的整數");number1=input.nextInt();number2=input.nextInt();System.out.print("What

is"+number1+"+"+number2+"?");int

answer=input.nextInt();System.out.println(number1+"+"+number2+"="+an語sw句er+打"i印s“+(number1+number2==answer));/*if.....else語句改成一條出來加入循環語句,使做題練習可以不斷進行輸入的數據改成機器隨機產生加法練習改成加減法練習if((number1+number2)==answer){2S0y20s/t1e1m/21.out.println(number1+"+"+number2+"="+answer6+5"is

elsetrue");}程序代碼import

java.util.Scanner;public

class

StudyTools

{public

static

void

main(Stringargs[]){

int

number1=(int)(Math.random()*100);int

number2=(int)(Math.random()*100);//Scanner

input=new

Scanner(System.in);System.out.println("請輸入0-100之間的整數");number1=input.nextInt();number2=input.nextInt();System.out.print("What

is"+number1+"+"+number2+"?");int

answer=input.nextInt();System.out.println(number1+"+"+number2+"="+an語sw句er+打"i印s“+(number1+number2==answer));/*if.....else語句改成一條出來加入循環語句,使做題練習可以不斷進行輸入的數據改成機器隨機產生加法練習改成加減法練習if((number1+number2)==answer){2S0y20s/t1e1m/21.out.println(number1+"+"+number2+"="+answer6+6"is

elsetrue");}選擇語句中的常見錯誤常見錯誤1:忘記必要的括號2020/11/2167if(radius>=0)area=radius*radius*PI;System.out.println(“Thearea”+“is”+area)if(radius>=0){area=radius*radius*PI;System.out.println(“Thearea”+“is”+area)}選擇語句中的常見錯誤常見錯誤2:在if行出現錯誤的分號2020/11/21

68

if(radius>=0);{area=radius*radius*PI;System.out.println(“Thearea”+“is”+area)}if(radius>=0){};{area=radius*radius*PI;System.out.println(“Thearea”+“is”+area)}等價于選擇語句中的常見錯誤常見錯誤3:對布爾值的冗余測試if(even==true)System.out.println(“It

is

even”);等價于2020/11/2169if(even)System.out.println(“It

is

even”);選擇語句中的常見錯誤常見錯誤4:懸空else出現的歧義inti=1;intj=2;int

k=3;if(i>j)if(i>k)System.out.println(“A”);elseSystem.out.println(“B”);等價于inti=1;intj=2;int

k=3;if(i>j)if(i>k)System.out.println(“A”);elseSystem.out.println(“B”);2020/11/21702020/11/21switch語句switch語句是Java支持的另一種多分支結構語句,使用switch語句進行程序設計,將使程序的結構更簡練,表達更為清晰。

Switch語句語法結構如下:switch<表達式>{case數值1:{語句塊1}break;case數值2:{語句塊2}break;……case數值n:{語句塊n}break;[

default:{語句塊n+1}]falsetruetruetruefalse數值1false數值2數值n語句塊1語句塊2語句塊ndefault………breakbreakbreakswitch語句的流程圖如上圖所示。712020/11/21switch語句switch<表達式>{case數值1:{語句塊1}case數值2:{語句塊2}……case數值n:{語句塊n}[

default:{語句塊n+1}]truetruetrue數值1false數值n語句塊1語句塊2語句塊nfalsedefault數值2false………switch語句的流程圖如上圖所示。72switch語句說明switch后面的表達式只能返回如int、byte、short和char類型的值,多分支結構把表達

式返回的值依次與每個case子句中的值相

比較。如果遇到匹配的值,則執行該case后面的語句塊;case子句中的數值I(I=1,2,……,n)必須是常量,且對應于執行不同操作的case子句中的數值I(I=1,2,……,n)應是不同的;2020/11/2173switch語句說明default子句為可選。當表達式的值與任何case子句中的值都不匹配時,程序執行default后面的語句;當表達式的值與任何case子句中的值都不匹配且沒有default子句,則程序將不執行任何操作,直接跳出switch語句。break語句的作用是當執行完一個case分支后,終止switch結構的執行。因為case子句只是起到一個標號的作用,用來查找入口并從此處開始執行。如果沒有break語句,當程序執行完匹配的case子句塊后,還會執行后面的case子句塊,這是不允許的。因此應該在每一個case分支后,用break語句終止后面的case分支語句塊的執行。2020/11/217475例:用switch語句處理表達式中的運算符,并輸出運算結果:程序如下:publicclass

OperatorClass{public

static

void

main(String

args[])

{inta=80,b=9;char

oper='/';switch

(oper){case

'+':System.out.println(a+"+"+b+"="+(a+b));break;//輸出a+bcase

'-':System.out.println(a+"-"+b+"="+(a-b));case

'*':System.out.println(a+"*"+b+"="+(a*b));case

'/':break;break;//輸出a-b//輸出a*b//輸出a/bSystem.out.println(a+"/"+b+"="+((float)a/b));default:System.out.println("Unknown

operator!!");}}2020/11/21break;//輸出字符串}2020/11/21

76例3:使用switch語句與if語句的程序:由鍵盤輸入年份與月份,由程序判別輸出該年的那個月有多少天。程序如下:import

java.io.*;class

DayCounter

{public

static

void

main(String[]

arguments)

throws

IOException{int

year,month;String

str;BufferedReader

buf;buf=new

BufferedReader(new

InputStreamReader(System.in));System.out.print("Input

year

number:");str=buf.readLine();

year=Integer.parseInt(str);System.out.print("Inputthe

month

number:");str=buf.readLine();month=Integer.parseInt(str);System.out.println(month

+

"/"

+

year

+

"

has

"

+

countDays(month,

year)

+

"

days.");}2020/11/2177static

int

countDays(int

month,

int

year)

{int

count

=

-1;switch

(month)

{case

1:case

3:case

5:case

7:case

8:case

10:case

12:count

=

31;break;case

4:case

6:case

9:case

11:count

=

30;break;case

2:if

(year

%

4

==

0

&&

year%100!=0)||(year%400==0)count

=

29;elsecount

=

28;

}return

count;

}}2020/11/2178循環結構Java語言提供的循環結構語句包括:for語句、while語句do

while語句。2020/11/2179循環結構作為一個循環結構來說,應該包含如下內容:賦初值部分:用于設置循環控制的一些初始條件。循環體部分:需要反復執行的代碼(塊),當然也可以是一句單一的語句。循環控制變量增減方式部分:用于更改循環控制狀況。判斷條件(也稱循環終止條件)部分:是一個返回邏輯(布爾)值的表達式,用于判斷是否滿足循環終止條件,以便及時結束循環。for循環語句for

循環語句的使用適應于明確知道重復執行次數的情況,其語句格式如下:for(賦初值;判斷條件;循環控制變量增減方式){(循環體)語句塊;}for循環的執行流程如右圖所示:第一次進入for循環時,對循環控制變量賦初值。根據判斷條件的內容檢查是否要繼續執行循環,如果判斷條件為真,繼續執行循環,如條件為假,則結束循環執行下面的語句。執行完循環體內的語句后,系統會根據循環控制變量增減方式,更改循環控制變量的值,再回到步驟2重新判斷是否繼續執行循環。判斷條件循環體truefalse賦循環控制變量初值循環控制變量增(減)值2020/11/21802020/11/2181例3:利用for循環語句計算從1累加到100的結果。程序如下:public

class

SumClass{public

static

void

main(String

args[]){int

i,

sum=0;for(i=1;

i<=100;

i++)sum+=i;System.out.println("1+2+...+100="+sum);//計算//輸出結果}}for循環語句格式中的三項內容(賦初值;判斷條件;循環控制變量增減方式)可以視不同情況省卻一個、兩個,甚至全缺。程序如下:public

class

Fibonacci{public

static

void

main(String

args[]){intm=1,n=1;System.out.print(m+"

");for(inti=2;i<=30;i++){

System.out.print(n+"

");if

(i

%

10==0

)System.out.print("\n");n=n+m;m=n-m;2020/11/21

}

}

}//下一項為前兩項之和//求當前項并存入變量m中82例:利用for循環輸出斐波那契序列的前30項數據。且每十個數據輸出一行。其運算公式為:F1=1F2=1(n

=

1)(n

=

2)Fn=Fn-1+Fn-2(n≥3)

)//輸出第一項//輸出當前項//控制輸出格式循環體判斷條件truefalseWhile初始化循環控制變量增(減)值while循環語句在不知道一個循環體會被重復執行多少次的情況下,可以選擇使用while循環結構語句,while語句的語法格式如下:while

(判斷條件){(循環體)語句塊;循環控制變量增(減)值;}while循環的執行流程如下:在進入while循環前,對循環控制變量賦初值。根據判斷條件檢查是否要繼續執行循環,如果判斷條件為真,繼續執行循環,若條件為假,則結束循環執行下面的語句。執行完循環體后,系統會根據循環控制變量增減方式,更改循環控制變量的值,再回到步驟2重新判斷是否繼續執行循環。while循環的執行流程如右上圖所示。2020/11/2183例:編程序計算當n為多大時下列不等式成立。2

3程序如下:publicclass

Limit{public

static

void

main(String

args[]){intn=0;float

sum=0;while

(sum<=10){

n+=1;sum+=1.0/n;}System.out.print("N="+

n);}}101

1

1

1n……2020/11/2184do

while循環語句do

while循環的語法格式如下:do{(循環體)語句塊;循環控制變量增(減)值;}while

(判斷條件)do

while循環的執行流程如右圖所示。do

while循環語句功能與while語句類似,但do

while語句的循環終止判斷是在循環體之后執行,也就是說,它總是先執行一次循環體,然后判斷條件表達式的值是否為真,若為真,則繼續執行循環體;否則循環到此結束。與dowhile語句所不同的是,while語句如果開始時的判別表達式為假,則可能一次都不執行循環體而直接結束循環。falsetrue判斷條件循環體;

循環控制變量增(減)值;賦循環控制變量初值2020/11/2185例:編程序計算1

到1000000

之間10

的102……的平方根)。的平方根(即計算100

、101

、程序如下:publicclassSquareRoot{public

static

void

main(String

args[]){intn=0;long

m=1;do{System.out.println("n="+n+"\t"+"\t"+"10^"+n+"

squareroot="+Math.pow(m,1.0/2));n=n+1;m*=10;}while

(n<=1000000);}}2020/11/2186判斷條件While初始化循環控制變量增(減)值判斷條件循環體賦循環控制變量初值循環控制變量增(減)值循環語句的嵌套當循環語句的循環體中又出現循環語句時,就稱為循環嵌套,Java語言支持循環嵌套,如for循環嵌套、while循環嵌套,當然也可以使用混合嵌套。如右圖便是while循環與for循環混合嵌套的流程圖。內循環體外循環體2020/11/21872020/11/2188例:輸出九九乘法表程序如下:publicclass

MuiTable{public

static

void

main(String

args[]){int

i,

j;for

(i=1;i<=9;i++){//外層循環for

(j=1;j<=9;j++) //內層循環System.out.print(i+"*"+j+"="+(i*j)+"\t");System.out.println();}}}在程202序0/1設1/2計1

過程中,選擇結構語句與循環結構語句互相嵌套使用8也9例:輸出1到100之間的所有偶數。并控制每行輸出十個偶數。程序如下:public

class

EvenNumber{public

static

void

main(String

args[]){inti,j;for

(i=1;i<=100;i++){if

(i

%2

==0

){

System.out.print(i+"

");if

(i

%

10==0)System.out.println();}}}}是相當常見的。90例:編一程序,從鍵盤輸入一個自然數,判別其是否為素數程序如下:import

java.io.*;publicclass

Prime{publicstatic

void

main(String

args[])

throws

IOException

{int

i;

boolean

p;BufferedReader

buf;String

str;buf=new

BufferedReader(new

InputStreamReader(System.in));System.out.print("Input

m

is:");str=buf.readLine();int

m=Integer.parseInt(str);p=true;for(i=2;

i<m;

i++)if

(m%i==0)

p=false;if

(p==true)mber.");mber.");System.out.println(m+"

is

a

prielseSystem.out.println(m+"

is

not

apri}}

2020/11/21轉移語句Java的轉移語句用在選擇結構和循環結構中,使程序員更方便地控制程序執行的方向。2020/11/2191break語句賦循環控制變量初值判斷條件1true語句塊;;判斷條件2truefalsebreak;語句塊;false循環控制變量增(減)值循環主體在Java中可以用break語句強行退出循環,繼續執行循環外的下一個語句,如果break出現在嵌套循環中的內層循環,則break語句只會退出當前的一層循環,以for循環流程為例:在循環主體中有break語句時,當程序執行到break,即會退出循環主體,到循環外層繼續執行。轉移語句2020/11/2192例:輸出1到10之間所有不能被3整除的自然數。程序如下:public

class

BreakSt{public

static

void

main(String

args[]){

int

i;for

(i=1;i<=10;i++){if(i%3==0)break;System.out.println("i="+i); //輸出i的值}System.out.println("when

loop

broken,

i="+i);}}從程序運行結果可以看到:當程序進入第三次循環,即i等于3時,滿足了if判別條件,因此執行break語句,不再繼續執行循環,退出循環時循環控制變量i的值為3,因此此例使用break語句顯然不能得到所要的結果,

向大家介紹另一個轉向語句conti

溫馨提示

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

評論

0/150

提交評論