Java的条件选择
Java运算符
比较运算符
比较运算符是用于比较两个数据的关系,比较的结果是一个boolean类型。
符号为>、<、>=、<=、== 、!=、equals
>、<、>=、<=、==、!=:用于比较基本数据类型的值。一般用来比较数字。
equals则是用于比较引用数据类型的值,一般用来比较字符串。
例如:
int a = 100;
int b = 200;
boolean b1 = a > b;
System.out.println(b1);
boolean b2 = a < b;
System.out.println(b2);
boolean b3 = a >= b; //a > b 或者 a == b
System.out.println(b3);
boolean b4 = a <= b; //a < b 或者 a == b
System.out.println(b4);
boolean b5 = a == b;
System.out.println(b5);
System.out.println(100==100);
String str1 = "abcd";
String str2 = "abc";
System.out.println(str1.equals(str2));
逻辑运算符
一般用于比较boolean类型,结果也是boolean类型。
符号为&、|、!、&&、||
& && 与 并且 两个条件同时为真才为真,否则为假;
| || 或 或者 两个条件满足一个即可;
! 非 取反(若真则假,若假则真);
boolean b1 = true;
boolean b2 = false;
boolean bb1 = b1 && b2;
System.out.println(bb1);
boolean bb2 = b1 || b2;
System.out.println(bb2);
System.out.println(!b1);
三目运算符
格式:变量 = 条件表达式?结果1,结果2
条件表达式条件成立 变量 = 结果1
条件表达式条件不成立 变量 = 结果2
int a = 100;
int b = 100;
String s = a > b ? "a大" : "b大";
System.out.println(s);
结果为"b大"
Java结构
顺序结构
int num = 1;
System.out.println(++num);
System.out.println(num++);
这段代码中的运行结果是2,2。原因就是顺序结构,所谓顺序结构,其实就是按照代码原本应该的方式进行执行,从上到下,从左到右。
第2,3行代码的位置交换,结果就会变成1,3。
if判断结构
if语法
if(){
代码块……
}
选择结构有特定的语法规则,代码要执行具体的逻辑运算进行判断,逻辑运算的结果有两个(true(正确)、false(错误)),所以产生选择,按照不同的选择执行不同的代码。
也就是当if()小括号中的表达式结果如果为true,则执行if(){}大括号内的代码,否则不执行。
PS:
1.if()小括号中的表达式结果只能是boolean类型。
2.如果if语句控制的代码块是一条语句,大括号可以省略。其余情况都必须携带大括号。
if—else语法
if(){
代码块1……
}else{
代码块2……
}
选择结构的第二种写法。增加了一种情况,属于条件分支,类似于Y字路口。功能与三目运算相同。但不能如同三目运算一样直接将结果进行赋值操作,if没有结果反馈,三目运算始终有结果反馈。
首先判断if()小括号中的表达式结果,如果是true,则执行if(){}大括号内的代码;如果是false,则执行else{}大括号内的代码。必然会也只会执行一个大括号内的代码。
else—if语法
if(){
代码块1……
}else if{
代码块2……
}else{
代码块3……
}
选择结构的第三种写法。和if…else…相比,中间多了else if,相当于判断的情形多了一种。
注意:只要有一种情况成立,就执行{}中的代码,然后就跳出当前if体系。
###第四种写法
if(){
代码块1……
}else{
代码块2……
}else{
代码块3……
}
其实不只是if结构,无论任何结构,只要是在{}大括号内,我们可以编写任何逻辑代码,我们需要先进行完成判断,然后再进行内层判断。但是这种写法结构啰嗦,且需要进行多次判断,代码的执行效率较低。
这个时候就需要使用switch来解决类似问题,switch会将case后的值写入栈中,表达式的结果会直接在栈中进行查询并选择,效率更高。
switch选择结构
switch语法
语法说明:
1.表达式的取值:byte,short,int,char;JDK5以后可以是枚举;JDK7以后可以是String。
2.case后面跟的是要和表达式进行比较的值。
3.break表示中断,结束的意思,可以结束switch语句。
4.default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
switch(表达式){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
……
default:
语句体n+1;
break;
}
使用switch的注意事项: 1.case后面只能是常量,不能是变量,而且,多个case后面的值不能相同。 2.default可以省略。但一般不建议,除非结果是可以预计且不会发生变化的。 3.break可以省略,一般不建议。 4.default的位置可以出现在switch语句任意位置。 5.switch语句的结束条件必定是遇到break或已经执行到最末尾