眾所周知,java中有個基本類型是boolean,僅有true和false兩個值。
在平時判斷語句中,通常這樣使用
int a = 1; int b = 2; if(a == b){ System.out.print("true"); } else{ System.out.print("false"); } //最后會輸出false
或者這樣使用
int a = 1; int b = 2; System.out.print(a==b); //同樣會輸出false
那如果在if/while判斷和輸出命令中寫類似a=b的賦值語句會怎么樣呢?
首先來看if判斷:
//方式1:賦值語句的參數為非boolean類型——報錯,因為判斷語句中只能輸入boolean類型的參數 int a = 1; int b = 2; if(a=b){ System.out.print("true"); } else { System.out.print("false"); }
//方式2:賦值語句的參數為boolean類型——不報錯 boolean flag1 = true; boolean flag2 = false; //分別執行下列四種場景,注意不要一次性執行,否則定義的"flag1 = true;flag2 = false;"會被覆蓋,影響此次實驗結果 //flag1=flag2 if(flag1=flag2){ System.out.print("true"); } else { System.out.print("false");//輸出false } //flag2=flag2 if(flag2=flag2){ System.out.print("true"); } else { System.out.print("false");//輸出false } //flag2=flag1 if(flag2=flag1){ System.out.print("true");//輸出true } else { System.out.print("false"); } //flag1=flag1 if(flag1=flag1){ System.out.print("true");//輸出true } else { System.out.print("false"); }
由上面4種場景分別執行結果來看,得出結論:if判斷語句中賦值語句的結果,取決於等號右邊的值,等號右邊是true則判斷語句為true,等號右邊是false則判斷語句為false。while可證結論一致。
接下來看下輸出語句中寫賦值語句的結果:
//方式1:賦值語句的參數為非boolean類型 int a = 1; int b = 2; //分別執行下列四種場景,注意不要一次性執行,否則定義的"int a = 1;int b = 2;"會被覆蓋,影響此次實驗結果 System.out.print(a=b);//輸出2 System.out.print(b=b);//輸出2 System.out.print(b=a);//輸出1 System.out.print(a=a);//輸出1 //方式1:賦值語句的參數為boolean類型 boolean flag1 = true; boolean flag2 = false; //分別執行下列四種場景,注意不要一次性執行,否則定義的"flag1 = true;flag2 = false;"會被覆蓋,影響此次實驗結果 System.out.print(flag1=flag2);//輸出false System.out.print(flag2=flag2);//輸出false System.out.print(flag2=flag1);//輸出true System.out.print(flag1=flag1);//輸出true
由上面4種場景分別執行結果來看,最終得出結論:
判斷語句和輸出語句中如果為賦值語句如a=b,最終結果取決於賦值語句等號右邊的值