好好学Java:从零基础到项目实战
上QQ阅读APP看书,第一时间看更新

3.1.2 关系运算符

前面在2.2.2小节中提到,Java编程中的等号“=”表示赋值操作,并非数学上的等于的意思。Java通过等式符号“==”表示左右两边相等,对应数学的等号“=”;通过不等符号“!=”表示左右两边不等,对应数学的不等号“≠”。

可是一个等式真的就一定成立吗?譬如半斤八两这个成语,用Java等式改写的话变为“半斤==八两”。话说当年秦始皇统一中国,不但推行“书同文、车同轨”,而且制定了重量单位的换算标准,当时规定16两为一斤,从此沿用了两千多年。直到公元1959年,为了与国际接轨,中国发布了《关于统一计量制度的命令》,正式将称重计量定为10两为一斤。那么在1959年之前,“半斤==八两”这个等式是成立的;而在1959年之后,“半斤==八两”是不成立的。

为了区分某个式子成立和不成立的情况,Java把“==”看作是一种特殊的运算符号。凡是运算符都会得到运算结果,等式符号“==”也不例外,它的运算结果为布尔类型,值为true时表示这个等式成立,值为false时表示这个等式不成立。不等符号“!=”的运算结果与之类似,结果为true时表示不等式成立,为false时表示不等式不成立。下面是等式符号“==”和不等符号“!=”的运算代码例子,可以体会一下七上八下的返回结果(完整代码见本章源码的src\com\control\logic\Relation.java):

    int seven=7;
    int eight=8;
    //数学的等号“=”对应Java的“==”符号
    boolean equal=seven==eight;  //结果为真表示等式成立,为假表示等式不成立
    System.out.println("equal="+equal);
    //数学的不等号“≠”对应Java的“!=”符号
    boolean not_equal=seven!=eight;  //结果为真表示不等式成立,为假表示不等式不成立
    System.out.println("not_equal="+not_equal);

除了等号和不等号外,数学上还有其他比较数字大小的符号,包括大于号“>”、小于号“<”、大于等于号“≥”、小于等于号“≤”等。Java也提供了对应的判断符号,如运算符“>”表示大于,运算符“<”表示小于,运算符“>=”表示大于等于,运算符“<=”表示小于等于。这些大小判断符号同样拥有布尔类型的运算结果,因此通过甄别结果值为true还是false,即可判定大小比较的式子是否成立。下面是如何使用大于、小于符号的演示代码:

    boolean greater=seven>eight;  // 数学的大于号“>”对应Java的“>”符号
    System.out.println("greater="+greater);
    boolean less=seven<eight;  // 数学的小于号“<”对应Java的“<”符号
    System.out.println("less="+less);
    boolean greater_and_equal=seven>=eight; //数学的大等号“≥”对应Java的“>=”符号
    System.out.println("greater_and_equal="+greater_and_equal);
    boolean less_and_equal=seven<=eight;  //数学的小等号“≤”对应Java的“<=”符号
    System.out.println("less_and_equal="+less_and_equal);

以上判断相等关系的两种运算符,加上判断大小关系的4种运算符,统称为“关系运算符”。这6种关系运算符与数学符号的对照关系见表3-1。

表3-1 大小关系的判断符号对照