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 大小关系的判断符号对照