关系运算符有==、!=、>、>=、<、<=。它们分别表示等于、不等于、大于、大于等于、小于和小于等于。关系运算符的作用是判断两个数据之间是否存在某种逻辑关系。既然是“判断”,说明关系运算符所描述的逻辑关系并不一定真的成立,需要经过计算才能最终确定。虚拟机经过计算之后,如果认定两个数据之间确实存在关系运算符所描述的逻辑关系,则设置运算结果为true,否则设置运算计算结果为false。
例如:
- int a=1;
- int b=2;
程序员就可以用“>”来判断 “a>b”是否成立。经过判断之后,虚拟机发现 “a>b”并不成立,于是就把计算结果设定为false。
由关系运算符和操作数所组成的表达式称为“关系表达式”,例如“a>b”就是一个关系表达式。关系表达式也被称为“条件”。如果一个关系表达式的计算结果为true,则说明条件成立,否则说明条件不成立。
实际开发过程中,程序员可以让计算机在某个条件成立的情况下才去执行语句。为计算机设定执行语句条件的格式为:
- if(条件)
- 语句;
以上格式包含三部分:
这种格式被称为“条件语句”。条件语句在编程中有着广泛的应用,比如在2.4小节所述的计算圆形面积的例子中,程序员可以让计算机在用户输入的圆形半径值大于等于0的情况下才去计算圆形面积,因此原先的代码可以修改为:
- import java.util.Scanner;
- public class Exam02_01{
- public static void main(String[] args) {
- double r;//用于保存用户输入的圆形半径值
- double area;//用于保存计算所得圆形面积
- final double PI = 3.14;//圆周率π
-
- Scanner sc = new Scanner(System.in);//创建Scanner类对象sc
- System.out.println("请输入圆形半径:");//提示用户输入圆形半径值
- r = sc.nextDouble();//接收用户输入的圆形半径并保存于变量r中
- if(r>=0)
- System.out.println("圆形的面积是:"+ PI*r*r);//①
- }
- }
代码中加粗的部分使用了条件语句。这样,仅在r的值在大于等于0的情况下才去执行语句①计算并输出圆形的面积。
但是,如果用户所输入的圆形半径值r小于0,if关键字之后的条件就不成立,计算机也不会执行任何代码。输入了数据却看不到任何输出结果,这会让用户的操作体验非常差。合理的做法是:当用户输入的半径值r小于0,要提示用户“输入有误”。为了能够在条件不成立的情况下提示用户输入数据有误,可以在程序中采用以下结构编写代码:
- if(条件)
- 语句1;
- else
- 语句2;
在这个结构中,出现了关键字else。else表示“否则”。因此这个结构的作用是:if关键字后面的条件成立则执行语句1,否则执行语句2。把这种结构应用在计算圆形面积的程序中可以用来提示用户输入的半径值存在错误:
- import java.util.Scanner;
- public class Exam02_01
- {
- public static void main(String[] args) {
- double r;//用于保存用户输入的圆形半径值
- double area;//用于保存计算所得圆形面积
- final double PI = 3.14;//圆周率π
-
- Scanner sc = new Scanner(System.in);//创建Scanner类对象sc
- System.out.println("请输入圆形半径:");//提示用户输入圆形半径值
- r = sc.nextDouble();//接收用户输入的圆形半径并保存于变量r中
- if(r>=0)
- System.out.println("圆形的面积是:"+ PI*r*r);//①
- else
- System.out.println("半径值小于0,无法计算圆形面积!");//②
- }
- }
在以上代码的加粗部分,如果r的值大于等于0,则执行语句① 计算圆形面积,否则执行语句②,在控制台上输出“半径值小于0,无法计算圆形面积!”。
if与else关键字组合而成的if...else结构并不难理解。但初学Java的读者还需要注意以下几个细节:
- if(条件){
- 语句1;
- 语句2;
- ...
- 语句n;
- }
- else{
- 语句1;
- 语句2;
- ...
- 语句n;
- }
按照这种格式书写代码,无论条件是否成立,都可以执行多条语句。另外,还要提醒各位读者养成两个好的编程习惯:
以上两个好习惯可以让代码具有更好的层次感和可读性。
关系运算符与if...else结构互相配合可以完成很多操作。下面就来讲解其中一个经典案例:三数求最大值。所谓“三数求最大值”就是指从任意三个数中找到最大的那个并且输出到控制台。假设三个数字分别是a、b、c,找到它们中最大值的基本思路是:定义一个变量max用来保存最大的数,先用a与b做比较,找到它们中较大的那个并存入max中。然后用max与c做比较,如果c>max,则把c的值存入max。经过两次比较之后,变量max中就保存了三个数中最大的值,这个程序的完整代码如下:
【例02_06三数求最大值】
Exam02_06.java
- import java.util.Scanner;
-
- public class Exam02_06 {
- public static void main(String[] args) {
- int a, b, c;
- int max;// 用来保存最大值
- Scanner sc = new Scanner(System.in);
- System.out.println("请输入变量a的值");
- a = sc.nextInt();
- System.out.println("请输入变量b的值");
- b = sc.nextInt();
- System.out.println("请输入变量c的值");
- c = sc.nextInt();
- //用一个if...else结构找到ab两个数中较大的数字,并保存到max中
- if (a > b) {
- max = a;
- } else {
- max = b;
- }
- //从max和c中找到较大的数字
- if (c > max) {
- max = c;
- }
- System.out.println("三个数中最大值是:" + max);
- }
- }
由用户从控制台上任意输入3个数,程序运行结果如图2-12所示。
图2-12 【例02_06】运行结果