今天我们要说的是条件判断语句,条件判断是编程里最最常用最最基本的技巧。那么什么叫条件判断呢? 翻译成白话文就是“如果。。。。那么。。。。”的意思。比如,如果今天下雨,我就在家呆着; 如果下雪,我就出去打雪仗; 等等等等。在java里,我们这么表示这样的东西:if.....来表示这样的逻辑。下面我们来介绍一下java里条件表达式,然后再介绍常见的几种条件判断语句。
首先,条件表达式,最常用的有>, >=, <, <=, ==, String类的equals函数,其他各类库中返回值为布尔值的内建函数,用户自定义的返回值为布尔值的函数。我们在这里暂时不讨论后面几种情况,我们只说一下前面几种:
1. >, >=, <, <=,这些没什么可说的对吧,就是数学里面的不等号,7>=5,会返回一个true的布尔值,9>10,会返回一个false的布尔值。
2. ==,这就是等于的意思,之所以要单拿出来说,是因为双等号表示的是条件判断,而作为人类,我们经常会写成单等号,比如,8==8,会返回一个true的布尔值,但是8=8呢?这将是一个错误,因为你实际上是试图把右边的整型数据8赋值给左边的8,而左边的8并不是一个变量名。如果你这样做:int n; n = 8; 这将是一个赋值操作,只是一个行为,并不会返回任何值。
3. String类的equals函数,在java中,最好不要用==来比较两个字符串是否相同。因为如果你使用==来比较两个字符串,那么实际上你是在比较两个字符串的内存引用地址,一般来说,是不同的,但是java编译器不会报错,因为java认为你在比较两个字符串的内存引用地址。如果要比较两个字符串内容是否相同,需要使用equals函数。我们来做个简单的例子,如下:
从上面可以看出,==对于s1和s3的比较没有发生作用,或者说,给了我们一个false的值(因为里面的操作没有执行),而==对于s1和s2的比较,竟然起了作用,你也许会问,你刚才不是说不要使用==吗?对啊,可是我还是说了,如果你使用==来比较两个字符串,实际上是比较两个字符串的内存引用地址。我们来看看我们的程序,String s1 = "Canada"; String s2 = "Canada"; String s3 = new String("Canada"); s1和s2的这种定义方式,会使得他们指向同一个内存地址,而s3的定义方式,实际上是为s3开辟了一个新的内存地址。所以当使用==比较s1和s3的时候,由于比较的是内存地址,所以不相同,返回false,if里面的操作没有执行。 而使用==来比较s1和s2的时候,由于两者指向了同一个内存地址,所以返回了true,执行了if内部的操作。
string1.equals(string2)是比较字符串string1和括号里的string2内容上是否完全相同,如果相同则返回true,否则返回false。
string1.equalsIgnoreCase(string2)是比较字符串string1和括号里的string2内容上是否相同,忽略大小写。如果在不考虑大小写的情况下相同,则返回true,否则返回false。
另外,也可以使用String的compareTo和compareToIgnoreCase方法,这两个并不常用,我们会在以后的String操作里详细介绍。
接下来我们说一下条件判断语句的格式,一般有以下常见的几种格式:
1. if(条件){执行的操作},这是最基本的条件判断语句,表示当某条件为真的时候,执行某种操作。
2. if(条件){执行的操作1}else{执行的操作2},这表示,当某条件为真的时候,执行操作1,否则,执行操作2。
3. if(条件1){执行的操纵1}else if(条件2){执行的操作2}else if(条件3){执行的操作3}...else if(条件n){执行的操作n}else{执行的操作},这表示,当条件i成立时,执行操作i,如果都不成立,则执行最后的操作。
以上就是常见的条件判断语句,下面我们来看个简单的例子,在这里例子中,我们让用户输入两个浮点型数据,然后计算第一个浮点型数据的ln值,如果大于第二个数据,输出一条信息,如果小于第二个数据,输出另外的信息,如果等于,再输出别的信息。代码如下:
好了,今天我们简单说了一下java的条件判断,条件判断在所有编程里都是很重要的,几乎所有的程序,从几十行的简单程序到上万行的大项目,都会频繁用到条件判断,所以请读者多多练习。