1.布尔逻辑
- 和。只有在组合表达式的每个部分为真时,组合表达式才为真。
- 或。只要一个组合表达式中有一个部分为真,组合表达式就会为真。
- 异或。如果一个组合表达式中有一个部分为真,而另一个部分为假,那么组合表达式就为真。
- 非。对一个布尔表达式取反。
2.逻辑运算符:
&&(逻辑与) ||(逻辑或) !(逻辑非)想干某个事情,是由一个条件控制----用关系运算符;如由多个条件控制----需用到逻辑运算符
1).&&(短路与):见false则为fasle;两边都为true结果才为true
若左边为false,发生短路(右边不执行、不运算)
int a=5,b=10,c=5
boolean b1 = a>b && c++>b boolean b2 = a<b && c++>b
System.out.println(b1);//false System.out.println(b1);//false
System.out.println(c);//5 System.out.println(c);//6
||(短路或):见true则为true;两边都为false结果才为false
若左边为true,发生短路(右边不执行、不运算)
!(逻辑非):取反;非真则假,非假则真
2).逻辑运算必须是建立在关系运算基础之上的
逻辑运算的结果也是boolean型
3.分支结构:程序可以在运行过程中,根据不同的条件运行不同的语句。
任何复杂的程序逻辑都可以通过三种基本的程序结构来实现:
a.顺序结构:从上往下逐步执行,每句必走
b.分支结构:有条件的执行某句一次,并非每句必走
c.循环结构:有条件的执行某语句多次,并非每句必走
满足就干事,不满足就不干事---if
满足就干事,不满足就干另一件事---if-else
1.if结构 ----1条路
a.语法:
语句0;
if(逻辑表达式){
语句1;
}
语句2;
b.执行过程:
执行语句0-->执行if语句里的布尔型表达式-->若为true则执行语句1-->语句2
-->若为false则不执行语句1,直接执行语句2
2.if-else结构 ----2条路
a.语法:
语句0;
if(逻辑表达式){
语句块1;
}else{
语句块2;
}
语句3;
b.执行过程:
1).执行语句0
2).判断布尔型表达式的值:
若为true,则执行语句块1
若为false,则执行语句块2
3).执行语句3
3.if...else if结构 ----多条路
4.switch-case结构 ----多条路
优点:效率高、结构清晰
缺点:只能对整数进行相等判断时用
a.语法:
switch(整型表达式){//整型表达式只能是byte、short、char、int型,但从JDK7.0开始,switch-case语句支持字符串表达式
case 条件1:
语句1;
break;//跳出switch结构
case 条件2:
语句2;
break;
case 条件3:
语句3;
break;
.
.
.
default://所有case条件语句都不满足是才走default,其可以放在switch语句里的任何位置
语句4;
}
b.执行过程:
如整型表达式的值满足条件1时,执行语句1并通过break跳出switch结构,不继续执行下面的语句;其他同理
4.while循环语句
1.语法
循环变量的初始化语句;
while(boolean表达式/循环条件语句){
循环体(反复执行的代码);
循环变量的改变语句;
}
2.执行过程
执行初始化语句->boolean表达式判断->若为true/false->执行循环体/不执行循环->执行循环变量改变语句
->再进行boolean表达式判断->若为false循环结束
5.do-while循环语句
1.语法
do{
循环体(反复执行的代码);
循环变量的初始化语句/循环变量的改变语句; -----do-while中第1要素与第3要素相同,也可不同
}while(boolean表达式/循环条件语句);
2.执行过程
执行循环体->执行循环变量改变语句/初始化语句
->进行boolean表达式判断->若为true循环继续执行循环体...
****while与do-while的区别:当初始条件不满足时,while循环一次都不执行,do-while循环不管任何情况都至少循环一次。
a.while循环先判断再循环
b.do-while循环先执行一次,再判断
6.for循环语句 ------应用率最高
1.语法
for(循环变量的初始化语句;循环的条件;循环变量的改变){
循环体(反复执行的代码);
}
2.执行过程 ->若为false,退出循环
执行初始化语句->执行循环的条件语句->若为true->执行循环体->执行循环变量的改变语句
->再执行循环条件语句->若为true->执行循环体...
->若为false,退出循环
for循环三个表达式特殊用法:
第一种:
循环变量的初始化语句;
for(;循环的条件;循环变量的改变){
循环体(反复执行的代码);
}
第二种:
for(循环变量的初始化语句;循环的条件;){
循环体(反复执行的代码);
循环变量的改变;
}
第三种: 死循环
for(;;){
循环体(反复执行的代码);
}
for(System.out.println(2);;System.out.println(3)){
System.out.println(1);
}
运行结果:死循环,213131313131....
第四种:循环变量的初始化/改变语句中,可以使用逗号表达式
for(int i=0,j=0,k=0;i<10&&j<4&&k<10;j+=2){
System.out.println(i++);
System.out.println(++k+i);
System.out.println();
}
//结果为0 2 1 4
for(int i=5,j=7;j<10;i-=2,j+=1){
System.out.println("i,j="+i+","+j);
}
//结果为i,j=5,7 i,j=3,8 i,j=1,9
7.循环中使用break语句及continue语句
1.break:
循环中的break语句应用率很广,break可用于循环语句或switch语句中。
其用于循环时,可使程序***终止循环而执行循环后面的语句***,常常与条件语句一起使用
例:
int sum = 0;
for(int num=1;num<=100;num++){
if(sum>=4000){ -----总和大于等于4000时终止循环 只能跳出一层For循环
break;
}
sum+=num;
}
2.continue:
continue语句只能用于循环中,它的作用为***跳过循环体中剩余语句而执行下一次循环***
例:
int sum = 0;
for(int num=1;num<=100;num++){
if(num%10==3){ -----统计总和时,跳过所有个位为3的
continue;
}
sum+=num;
}