大可制作:QQ群:31564239(asp|jsp|php|mysql)

Java Gossip: 比较、条件运算

数学上有比较的运算,像是大于、等于、小于等等,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,则传回冒号后的值,下面这个程序可以作个简单的 示范:

  • ConditionalOperator.java
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分,以决定其是否及格,如果是则传回字节 '是' ,否则传回字节 '否'。

条件运算符(?:)相当的好用,使用得当的话可以省去不少的程序码,例如下面这个程序可以判断使用者输入是否为奇数。

  • ConditionalOperator.java
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,所以传回字节 '否'。