今天我們要說的是條件判斷語句,條件判斷是編程里最最常用最最基本的技巧。那么什么叫條件判斷呢? 翻譯成白話文就是“如果。。。。那么。。。。”的意思。比如,如果今天下雨,我就在家呆着; 如果下雪,我就出去打雪仗; 等等等等。在java里,我們這么表示這樣的東西:if.....來表示這樣的邏輯。下面我們來介紹一下java里條件表達式,然后再介紹常見的幾種條件判斷語句。
首先,條件表達式,最常用的有>, >=, <, <=, ==, String類的equals函數,其他各類庫中返回值為布爾值的內建函數,用戶自定義的返回值為布爾值的函數。我們在這里暫時不討論后面幾種情況,我們只說一下前面幾種:
1. >, >=, <, <=,這些沒什么可說的對吧,就是數學里面的不等號,7>=5,會返回一個true的布爾值,9>10,會返回一個false的布爾值。
2. ==,這就是等於的意思,之所以要單拿出來說,是因為雙等號表示的是條件判斷,而作為人類,我們經常會寫成單等號,比如,8==8,會返回一個true的布爾值,但是8=8呢?這將是一個錯誤,因為你實際上是試圖把右邊的整型數據8賦值給左邊的8,而左邊的8並不是一個變量名。如果你這樣做:int n; n = 8; 這將是一個賦值操作,只是一個行為,並不會返回任何值。
3. String類的equals函數,在java中,最好不要用==來比較兩個字符串是否相同。因為如果你使用==來比較兩個字符串,那么實際上你是在比較兩個字符串的內存引用地址,一般來說,是不同的,但是java編譯器不會報錯,因為java認為你在比較兩個字符串的內存引用地址。如果要比較兩個字符串內容是否相同,需要使用equals函數。我們來做個簡單的例子,如下:
從上面可以看出,==對於s1和s3的比較沒有發生作用,或者說,給了我們一個false的值(因為里面的操作沒有執行),而==對於s1和s2的比較,竟然起了作用,你也許會問,你剛才不是說不要使用==嗎?對啊,可是我還是說了,如果你使用==來比較兩個字符串,實際上是比較兩個字符串的內存引用地址。我們來看看我們的程序,String s1 = "Canada"; String s2 = "Canada"; String s3 = new String("Canada"); s1和s2的這種定義方式,會使得他們指向同一個內存地址,而s3的定義方式,實際上是為s3開辟了一個新的內存地址。所以當使用==比較s1和s3的時候,由於比較的是內存地址,所以不相同,返回false,if里面的操作沒有執行。 而使用==來比較s1和s2的時候,由於兩者指向了同一個內存地址,所以返回了true,執行了if內部的操作。
string1.equals(string2)是比較字符串string1和括號里的string2內容上是否完全相同,如果相同則返回true,否則返回false。
string1.equalsIgnoreCase(string2)是比較字符串string1和括號里的string2內容上是否相同,忽略大小寫。如果在不考慮大小寫的情況下相同,則返回true,否則返回false。
另外,也可以使用String的compareTo和compareToIgnoreCase方法,這兩個並不常用,我們會在以后的String操作里詳細介紹。
接下來我們說一下條件判斷語句的格式,一般有以下常見的幾種格式:
1. if(條件){執行的操作},這是最基本的條件判斷語句,表示當某條件為真的時候,執行某種操作。
2. if(條件){執行的操作1}else{執行的操作2},這表示,當某條件為真的時候,執行操作1,否則,執行操作2。
3. if(條件1){執行的操縱1}else if(條件2){執行的操作2}else if(條件3){執行的操作3}...else if(條件n){執行的操作n}else{執行的操作},這表示,當條件i成立時,執行操作i,如果都不成立,則執行最后的操作。
以上就是常見的條件判斷語句,下面我們來看個簡單的例子,在這里例子中,我們讓用戶輸入兩個浮點型數據,然后計算第一個浮點型數據的ln值,如果大於第二個數據,輸出一條信息,如果小於第二個數據,輸出另外的信息,如果等於,再輸出別的信息。代碼如下:
好了,今天我們簡單說了一下java的條件判斷,條件判斷在所有編程里都是很重要的,幾乎所有的程序,從幾十行的簡單程序到上萬行的大項目,都會頻繁用到條件判斷,所以請讀者多多練習。