- 逻辑运算符:
短路与&&和逻辑与 &:
- 两真即为真, 任意一个为假
- 区别:短路与出现false则停止后面的运算,后面的表达式不参与运算。 例:如果后面出现a++则a 的值不发生改变。
短路或||和逻辑或|:两假即为假, 任意一个为真,区别同上。
短路与跟短路或比逻辑与和逻辑或的效率更高。
- 运算符的优先级和结合性:
先考虑优先级在考虑结合性,实际应用中应先从优先级低的运算符找起 。
例:
int a=1,b=2,c=3,d=1;
d += (a++ - b-- ) > c++ && a>>2 > b^a ? a*b : c--
第一: (a++ - b-- ) a=2 a++=1 b=1 b--=2 得-1
第二: c++ c=4 c++=3
第三: (a++ - b-- ) > c++ && a>>2 > b^a false
第四:c-- c=3 c--=4
第五:d += 4; d=5
改:d += (a++ - b-- ) < c++ && a>>2 > b^a ? a*b : c--
第一: (a++ - b-- ) a=2 a++=1 b=1 b--=2 得-1
第二: c++ c=4 c++=3
第三: a>>2 > b^a 得 0 > 3
b^a:异或运算
0001
0010
0011
第四:c-- c=3 c--=4
第五:d=5
- if小程序:
打印春夏秋冬:
import java.util.Scanner;
public class Demo3 {
public static void main(String[] args) {
/*
项目开发流程:可行性分析-需求分析-概要设计-详细设计-代码编写-测试-打包上线-维护
打印春夏秋冬
分析:
确定使用if
几个分支:12个
春:3,4,5
夏:6,7,8
秋:9.10,11
冬:12,1,2
*/
//int month = 5;
Scanner scanner = new Scanner(System.in);
int month = scanner.nextInt();//接受整数
if (month == 3){
System.out.println("春");
}else if (month == 4){
System.out.println("春");
}else if (month == 5){
System.out.println("春");
}else if (month == 6){
System.out.println("夏");
}else if (month == 7){
System.out.println("夏");
}else if (month == 8){
System.out.println("夏");
}else if (month == 9){
System.out.println("秋");
}else if (month == 10){
System.out.println("秋");
}else if (month == 11){
System.out.println("秋");
}else {
System.out.println("冬");
}
//改进
if (month == 3 || month == 4 || month == 5){
System.out.println("春");
}else if (month == 6 || month == 7 || month == 8){
System.out.println("夏");
}else if (month == 9 || month == 10 || month == 11){
System.out.println("秋");
}else {
System.out.println("冬");
}
//改进
if (month >= 1 && month <= 12) {
if (month >= 3 && month <= 5) {
System.out.println("春");
} else if (month >= 6 && month <= 8) {
System.out.println("夏");
} else if (month >= 9 && month <= 11) {
System.out.println("秋");
} else {
System.out.println("冬");
}
}else {
System.out.println("亲,请输入1-12之间的数.");
}
}
}