黑馬程序員-day03-Java基礎之語句

----------- android培訓java培訓、java學習型技術博客、期待與您交流! ------------

Java基礎之語句

一、程序的流程控制,控制是通過語句的方式來完成的。

判斷結構、選擇結構、循環結構、順序結構(最簡)

判斷結構

If語句 三種格式:

1、if(條件表達式)

{

執行語句;

}條件表達式只有truefalse兩種結果。True時執行,false不執行執行語句。

2、if(條件表達式) {

執行語句;

}

else

{

執行語句;

}其與三元運算符的區別:三元運算符能簡化書寫,但有侷限性,只有if else語句執行完有具體的結果(數值)時,纔可以簡寫成三元運算符的形式。(因爲三元運算符是一個運算符,只要是運算符,運算完就必有結果)

還有大括號可否省略的問題,若if所控制的是單條語句,是可以的。單條語句:非單行語句,只要是一個整體即可。

若大括號省略,if只控制與它最近的那條語句。

例:if(x>2)

System.out.println("true");語句一

System.out.println("false");語句二。這裏if只控制語句一。

3、if(條件表達式)

{

執行語句;

}

else if(條件表達式)

{

執行語句;

}

--------

else

{

執行語句;

}特點:1、雖然有多行,但是一個整體,即是單條語句。2、雖有多個代碼塊,但只有一個會執行。

If語句的嵌套格式

例:int a=2,b=1;

if(a==1)

{

if(b==1)

{

System.out.println("a");

}

else

{

System.out.println("b");

}

else if(b==1)

{

System.out.println("c");

}

else

System.out.println("d")

}其結果是c

代碼編寫中的一個重要原則:複用性儘可能提升。

If語句練習:

需求:春 34678  91011 121定義一個程序,對用於輸入的程序打印出相應的季節。

int mooth(定義變量)

可用if(mooth==3||mooth==4||mooth==5)這種條件表達式--else if()-- else 月份不存在

也可用if(mooth<1||mooth>12)--月份不存在(區間情況先進行有效值的判斷)else if (mooth>=3&&mooth<=5)--這裏注意雙或雙與的運用。

二、選擇結構

Switch語句格式

switch(表達式)

{

case 取值1

執行語句;

break;(跳出結束,同時該switch語句結束)

case 取值2

執行語句;

break

---

default:(所有case都不匹配時)

執行語句;

break

}

Switch(表達式)表達式中被選擇的內容只能支持四種類型 byteshortintchar

備選答案並沒有指定的順序,但是執行肯定從第一個case開始,將每個case都執行完。如果其中有匹配的,執行完,通過該casebreak跳出結束。如果沒有,則執行default

Switch語句結束只有兩種情況:1、執行到break 2、執行到switch語句結束。

Default:如果default後沒有break,緊跟其後的case會被視作default內容被執行能執行的語句,直到break結束。

case1case2case3的執行語句是相同的話,爲提高代碼複用性,即可用switch語句的另一特性:

case 1

case 2:

case 3:

執行語句;

break 

Ifswitch語句的應用場景:

1、如果對具體個數的數值進行判斷,用if可以,用switch也可,建議使用switch。因爲switch 會將被選擇的答案加載至內存中,選擇效率稍高。

2、如果要對數據區間判斷,用if語句。

3、如果運算結果是boolean類型,毫無疑問,用if語句。

三、循環結構

代表語句:whiledo while、 for

While 語句格式

while(條件表達式)

{

執行語句;

}大括號內的是循環體。

Do while語句格式

do

{

執行語句;

}while(條件表達式);特點:無論條件是否滿足,循環體都至少執行一次。

注意while();後的;號,表示結束。

若出現死循環,可用ctr+c 來結束dos命令行的等待。

循環結構的使用:當某些語句需要執行很多次,要想到循環結構。

練習:1 求1——10的和

思路:1、定義一個變量,因爲要獲取區間中要累加的數據。還有一個變量是要用來記錄具體的和。

2、定義循環時,哪些語句需要參與循環,哪些不需要

累加算法:數據按某種規律變化並不斷在增大,通過變量記錄不斷變化的數據通過循環來進行變化的不斷操作。

2 求1-100之間6的倍數的個數

 int x=1,count=0;

while(x<=100)

{

if(x%6==0)

count++;(計數器)

x++;

}

System.out.println(count);

For語句

格式:

For(初始化表達式;循環條件表達式;循環後的操作表達式)

{

執行語句;(循環體)

}初始化表達式只執行一次。

forint x=1;x<3;x++)中的x變量的任務只是爲了控制循環的次數,在for循環結束後,x在內存中分配的存儲空間即被釋放。

例:for(int x=1;x<3;x++){---}System.out.println("x="+x);編譯會失敗。

For循環和while循環是可以互換的。

如果定義的變量只是爲了控制循環次數而存在的話,可將變量定義在for循環中。如果定義的變量被循環操作後,後續的程序還會使用該變量循環後的結果,就把它定義在循環外邊。這就是forwhile的區別所在。

For語句的細節:1forint x=1,y=1;x<3;x++,y++)同時聲明兩個變量,可以定義多個表達式。2for(  ;   ;  )初始化表達式,循環條件、循環後的操作表達式都可省略。

For( ; ;)for語句的最簡單無限循環格式。

Whiletruewhile語句的最簡單無限循環格式。

For的循環是這樣的:初始化---循環條件---執行語句---循環後的操作表達式---循環條件--執行語句---循環後的操作表達式--循環條件不滿足終止。例:

int x=1;

for(System.out.println("a");x<3;System.out.println("b"))

{

System.out.println("c");

x++;

}其結果是 a c b c b

3000m的繩子每天減一半,需要多少天,繩子小於5m

需求:1、多少天,數據不確定,定義變量。

減一半就加一天,滿足某一條件就進行自增,計數器思想。

2、需要循環對變量進行操作,同時要明確條件。

步驟:1、定義變量,記錄天數。

2、明確循環的初始表達式、循環條件、循環後的操作表達式

int day=0;

for(int x=3000;x>=5;x/=2)

{

day++;

}

System.out.println(day);

For的嵌套循環

Println中的ln:在數據打印完畢後結尾處換行一次。

例:System.out.print("xixi");

System.out.println("hehe");結果輸出爲xixihehe

轉義字符\n可以實現在句中的換行,println是在結尾處換行。比如:

Println"xixi\nhehe";

\t:製表符,可以對數據自動對齊。\b:退格。

如果想打印出帶有雙引號的"haha"System.out.println(""haha"");會編譯錯誤。因爲第二個和第四個"是有效的。相當於兩個空字符串中間加上尚未定義的變量。只需在第二、四個"前面加上轉義符\即可。

System.out.println("\"haha\"");

Char ch='n' 正確 而 char ch ='\n'也是正確的。因爲這裏的\n 是一個回車符。轉義字符只運用在字符、字符串中。

forint x=0;x<3;x++(外循環,控制的是行)

{

for(int y=0;y<4;y++)(內循環,控制的是列)

{

System.out.println("*");

}

}

例: 4 3 2 1

 4 3 2

 4 3

 4

共有四行,外循環可爲forint x=0;x<=4;x++)而每行都是從4開始,所以內循環中的初始化值始終是,內循環forint y=4;y>x;y--

四、其他流程控制語句

Break(跳出)應用範圍:1switch語句  2、循環 跳出循環(loop

Break語句單獨存在時,下面不要定義任何語句,因爲執行不到。例如:for(int x=0;x<3;x++)

{

break;

System.out.println("x="x);

}編譯後是錯誤的

for(int x=0;x<3;x++)

{

if(x==2)

break;

System.out.println("x="x);

}是正確的,break在滿足某一條件下直接結束for循環。

(標號)outside:for(int x=0;x<3;x++)

{

inside:for(int y=0;y<4;y++)

{

break outside;

}

System.out.print(x);

}結果是012Break只可跳出與它相關聯的語句。

Continue語句:只能應用在循環語句當中,繼續循環。

Continue在單獨存在時,下面不要定義語句,因爲執行不到。

作用:結束本次循環,繼續下次循環。

for(int x=0;x<10;x++)

{

if(x%2==0)

{

continue;

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

}

}結果是1 3 5 7 9豎行

Wai:for(int x=0;x<3;x++)

{

Nei:for(int y= 0;y<4;y++)

{

System.out.println(x);

continue Wai;

}

}結果是0 1 2

經典例題:

int x=1,y=1;

if(x++==2&++y==2)

{

x=7;

}

System.out.println("x="+x+",y="+y);單與兩邊都要執行,x++首先會臨時存儲x,結果爲x=2,y=2

int x=1,y=1;

if(x++==2&&++y==2)

{

x=7;

}

System.out.println("x="+x+",y="+y);雙與 第一個爲假則不再繼續判斷第二個,所以結果爲x=2,y=1

int x=1,y=1;

if(x++==1|++y==1)

{

x=7;

}

System.out.println("x="+x+",y="+y);單或都要進行判斷,第一個爲真,則爲真,所以結果爲x=7,y=2

條件表達式的結果只有true或者false。無論怎樣,只要結果是boolean值即可。例如:

boolean b = true;

if (b=false)----是正確的。而

x= 3 

if (x==4)編譯正確,而

if(x=4)則編譯錯誤。

THE LAST ONE:

int x=2,y=3;

switch (x)

{

default:

y++;

case 1:

y++;

case 3 :

y++;

}

System.out.println("y="+y);default後沒有break,所以結果爲6

以畢老師的打油詩結尾:你或者不都在那裏,不三不四。。。好詩好詩

----------------------- android培訓java培訓、java學習型技術博客、期待與您交流! ----------------------

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章