数学上有比较的运算,像是大于、等于、小于等等,Java中也提供了这些运算子,这些运算子称之为「比较运算子」(Comparison operator),它们有大于(>)、不小于(>=)、小于(<)、不大于(<=)、等于(==)以及不等于(!=)。
在Java中,比较的条件成立时以true表示,比较的条件不成立时 以false表示,请您看看下面这几行会显示哪些数值:
System.out.println("10 > 5 -> " + (10 > 5)); System.out.println("10 >= 5 -> " + (10 >= 5)); System.out.println("10 < 5 -> " + (10 < 5)); System.out.println("10 <= 5 -> " + (10 <= 5)); System.out.println("10 == 5 -> " + (10 == 5)); System.out.println("10 != 5 -> " + (10 != 5));
程序的执行如下所示:
10 > 5 -> true 10 >= 5 -> true 10 < 5 -> false 10 <= 5 -> false 10 == 5 -> false 10 != 5 -> true
比较运算在使用时有个即使是程序设计老手也可能犯的错误,且不容易发现,也就是等于 运算子(==),注意它是两个连续的等号(=)所组成,而不是一个等号,一个等号是指定运算子,这点必须相当注意,例如若有两个变量x与y 要比较是否相等,是写成x == y,而不是x = y,后者的作用是将y的值指定给x,而不是比较运算。
另一个使用 == 运算时要注意的是,对于对象来说,两个对象参考之间使用 == 作比较时,是比较其名称是否参考至同一对象,而不是比较其内容,您可以参考 不可变的 (immutable)字符串 了解一下这段话的意义。
即然谈到了条件式的问题,来介绍Java中的「条件运算子」 (Conditional operator),它的使用方式如下:
条件式 ? 成立传回值 : 失败传回值
条件运算子的传回值依条件式的结果而定,如果条件式的结果为true,则传回冒号前的值,若为false,则传回冒号后的值,下面这个程序可以作个简单的 示范:
import java.util.Scanner; public class ConditionalOperator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入学生分数: "); int scoreOfStudent = scanner.nextInt(); System.out.println("该生是否及格? " + (scoreOfStudent >= 60 ? '是' : '否')); } }
执行结果:
请输入学生分数: 77 该生是否及格? 是
这个程序会依您所输入的分数来判断学生成绩是否不小于60分,以决定其是否及格,如果是则传回字符 '是' ,否则传回字符 '否'。
条件运算子(?:)相当的好用,使用得当的话可以省去不少的程序代码,例如下面这个程序可以判断使用者输入是否为奇数。
import java.util.Scanner; public class ConditionalOperator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入数字: "); int inputedNumber = scanner.nextInt(); System.out.println("是否为奇数? " + (inputedNumber%2 != 0 ? '是' : '否')); } }
当输入的数为奇数时,就不能被2整除,所以余数一定不是0,在条件式中判断为true,因而传回字符 '是' ,若数值为偶数,则2整除,所以余数为0,在条件式中判断为false,所以传回字符 '否'。