寫出下面程序的運行結果
1、
int x = 1,y = 1;//定義變量x,y,並對其分別進行初始值化
if(x++==2 & ++y==2)
/** x++先取值操作,再自增
++y先自增,後取值操作
①x值爲1
②判斷x==2是否成立,false
③x值自增1,即x值爲2
④運行到到&,繼續執行++y==2
⑤y自增1,即y值爲2
⑥判斷y==2是否成立,true
⑦if(比較表達式)中比較表達式結果(false & true),結果爲false,則不執行循環體
*/
{
x =7;
}//不執行循環體
System.out.println("x="+x+",y="+y);//x=2,y=2
2、
int x = 1,y = 1;//定義變量x,y,並對其分別進行初始值化
if(x++==2 && ++y==2)
/** ①x值爲1
②判斷x==2是否成立,false
③x值自增1,即x值爲2
④運行到到&&,發現只要x++==2爲false就不再執行++y==2(即短路效果),直接得出if(比較表達式)中比較表達式結果爲false,則不執行循環體
*/
{
x =7;
}//不執行循環體
System.out.println("x="+x+",y="+y); //x=2,y=1
3、
int x = 1,y = 1;//定義變量x,y,並對其分別進行初始值化
if(x++==1 | ++y==1)
/** x++先取值操作,再自增
++y先自增,後取值操作
①x值爲1
②判斷x==1是否成立,true
③x值自增1,即x值爲2
④運行到到|,繼續執行++y==1
⑤y自增1,即y值爲2
⑥判斷y==1是否成立,false
⑦if(比較表達式)中比較表達式結果(true | false),結果爲true,則繼續執行循環體
*/
{
x =7;//把7賦值給x
}
System.out.println("x="+x+",y="+y);//x=7,y=2
4、
int x = 1,y = 1;//定義變量x,y,並對其分別進行初始值化
if(x++==1 || ++y==1)
/** ①x值爲1
②判斷x==1是否成立,true
③x值自增1,即x值爲2
④運行到到||,發現只要x++==2爲true就不再執行++y==2(即短路效果),直接得出if(比較表達式)中比較表達式結果爲true,則繼續執行循環體
*/
{
x =7;//把7賦值給x
}
System.out.println("x="+x+",y="+y);//x=7,y=1
總結1 關係運算符:
==,!=,>,>=,<,<=
注意:
A:比較運算符的結果肯定是boolean。
B:你到底是使用”=”還是使用”==”,你自己要清楚。
總結2 邏輯運算符:
&,|,!,^
&&,||
注意:
邏輯運算符用於連接關係表達式
結論:
&: 有false則false
|: 有true則true
!:改變結果,取反
^:相同false,不同true
記憶:情侶關係(男男,男女,女男,女女)
最常用的邏輯運算符 !,&&,||
&&和&:結果一樣,但是&&具有短路效果,左邊如果是false,右邊不執行。
||和|:結果一樣,但是||具有短路效果,左邊如果是true,右邊不執行。
5、
boolean b = true;//定義布爾型變量b,並初始化爲true
if(b=false)//把false賦值給b,比較表達式結果爲false,不執行循環體
{
System.out.println("a");
}
else if(b)//比較表達式結果爲false,不執行循環體
{
System.out.println("b");
}
else if(!b)//b爲false,!b爲true,比較表達式結果爲true,執行循環體
{
System.out.println("c");//輸出c
}
else//不再執行
System.out.println("d");//不再執行
總結3 if語句
if語句格式1:
if(比較表達式) {
語句體
}
執行流程:
首先判斷比較表達式看其結果是true還是false
如果是true就執行語句體
如果是false就不執行語句體
if語句格式2:
if(比較表達式) {
語句體1;
}else {
語句體2;
}
執行流程:
首先判斷關係表達式看其結果是true還是false
如果是true就執行語句體1
如果是false就執行語句體2
if語句格式3:
if(比較表達式1) {
語句體1;
}else if (比較表達式2) {
語句體2;
}
…
else {
語句體n+1;
}
執行流程:
首先判斷關係表達式1看其結果是true還是false
如果是true就執行語句體1
如果是false就繼續判斷關係表達式2看其結果是true還是false
如果是true就執行語句體2
如果是false就繼續判斷關係表達式…看其結果是true還是false
…
如果沒有任何關係表達式爲true,就執行語句體n+1。
if語句的三種格式:
格式1:適合做一種情況的判斷
格式2:適合做二種情況的判斷
格式3:適合做多種情況的判斷
if語句的注意事項:
A:比較表達式無論簡單還是複雜,結果必須是boolean類型
B:一般來說:有左大括號就沒有分號,有分號就沒有左大括號
6、
int x = 2,y=3;//定義變量x,y,並對其分別進行初始值化
switch(x)
{
default:
y++;
case 3:
y++;
break;
case 4:
y++;
}
/** ①x的值爲2,尋找case中的對應值
②發現並沒有case 2,那麼執行default語句y++,此時y的值變作4
③default語句的最後沒有break,則繼續往下執行
④進行到case 3執行y++,此時y的值變作5,遇到break,switch語句結束
*/
System.out.println("y="+y);//y=5
總結4 switch語句:
switch語句的格式:
switch(表達式) {
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
…
default:
語句體n+1;
break;
}
格式解釋:
A:switch表示這是switch語句
B:表達式
表達式的取值:byte,short,int,char
JDK5以後可以是枚舉
JDK7以後可以是String
C:case後面跟的是要和表達式進行比較的值
D:語句體部分可以是一條或多條語句
E:break表示中斷,結束的意思,可以結束switch語句
F:default語句表示所有情況都不匹配的時候,就執行該處的內容,和if語句的else相似。
執行流程:
首先計算出表達式的值。
其次,和case依次比較,一旦有對應的值,就會執行相應的語句,在執行的過程中,遇到break就會結束。
最後,如果所有的case都和表達式的值不匹配,就會執行default語句體部分,然後程序結束掉。
switch語句的注意事項:
A:case後面只能是常量,不能是變量。
B:多個case後面的值不能出現相同的。
C:default可以省略嗎?
可以。但是不建議。
D:break可以省略嗎?
可以。但是不建議。容易出現case穿透。
E:default的位置一定要在最後嗎?
可以在任意位置,建議在最後。
F:switch語句的結束條件
a:遇到break
b:執行到末尾