----------- android培訓、java培訓、java學習型技術博客、期待與您交流! ------------
Java基礎之語句
一、程序的流程控制,控制是通過語句的方式來完成的。
判斷結構、選擇結構、循環結構、順序結構(最簡)
判斷結構
If語句 三種格式:
1、if(條件表達式)
{
執行語句;
}條件表達式只有true和false兩種結果。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語句練習:
需求:春 3、4、5 夏6、7、8 秋9、10、11 冬12、1、2 定義一個程序,對用於輸入的程序打印出相應的季節。
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(表達式)表達式中被選擇的內容只能支持四種類型 byte、short、int、char
備選答案並沒有指定的順序,但是執行肯定從第一個case開始,將每個case都執行完。如果其中有匹配的,執行完,通過該case的break跳出結束。如果沒有,則執行default。
Switch語句結束只有兩種情況:1、執行到break 2、執行到switch語句結束。
Default:如果default後沒有break,緊跟其後的case會被視作default內容被執行能執行的語句,直到break結束。
若case1、case2、case3的執行語句是相同的話,爲提高代碼複用性,即可用switch語句的另一特性:
case 1:
case 2:
case 3:
執行語句;
break ;
If和switch語句的應用場景:
1、如果對具體個數的數值進行判斷,用if可以,用switch也可,建議使用switch。因爲switch 會將被選擇的答案加載至內存中,選擇效率稍高。
2、如果要對數據區間判斷,用if語句。
3、如果運算結果是boolean類型,毫無疑問,用if語句。
三、循環結構
代表語句:while、do 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(初始化表達式;循環條件表達式;循環後的操作表達式)
{
執行語句;(循環體)
}初始化表達式只執行一次。
for(int x=1;x<3;x++)中的x變量的任務只是爲了控制循環的次數,在for循環結束後,x在內存中分配的存儲空間即被釋放。
例:for(int x=1;x<3;x++){---}System.out.println("x="+x);編譯會失敗。
For循環和while循環是可以互換的。
如果定義的變量只是爲了控制循環次數而存在的話,可將變量定義在for循環中。如果定義的變量被循環操作後,後續的程序還會使用該變量循環後的結果,就把它定義在循環外邊。這就是for與while的區別所在。
For語句的細節:1、for(int x=1,y=1;x<3;x++,y++)同時聲明兩個變量,可以定義多個表達式。2、for( ; ; )初始化表達式,循環條件、循環後的操作表達式都可省略。
For( ; ;)for語句的最簡單無限循環格式。
While(true)while語句的最簡單無限循環格式。
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 是一個回車符。轉義字符只運用在字符、字符串中。
for(int 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
共有四行,外循環可爲for(int x=0;x<=4;x++)而每行都是從4開始,所以內循環中的初始化值始終是4 ,內循環for(int y=4;y>x;y--)
四、其他流程控制語句
Break(跳出)應用範圍:1、switch語句 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);
}結果是012。Break只可跳出與它相關聯的語句。
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。
以畢老師的打油詩結尾:你2 或者不2 ,2 都在那裏,不三不四。。。好詩好詩
----------------------- android培訓、java培訓、java學習型技術博客、期待與您交流! ----------------------