写出下面程序的运行结果
1、
int x = 1,y = 1;//定义变量x,y,并对其分别进行初始值化
if(x++==2 & ++y==2)
/** x++先取值操作,再自增
++y先自增,后取值操作
①x值为1
②判断x==2是否成立,false
③x值自增1,即x值为2
④运行到到&,继续执行++y==2
⑤y自增1,即y值为2
⑥判断y==2是否成立,true
⑦if(比较表达式)中比较表达式结果(false & true),结果为false,则不执行循环体
*/
{
x =7;
}//不执行循环体
System.out.println("x="+x+",y="+y);//x=2,y=2
2、
int x = 1,y = 1;//定义变量x,y,并对其分别进行初始值化
if(x++==2 && ++y==2)
/** ①x值为1
②判断x==2是否成立,false
③x值自增1,即x值为2
④运行到到&&,发现只要x++==2为false就不再执行++y==2(即短路效果),直接得出if(比较表达式)中比较表达式结果为false,则不执行循环体
*/
{
x =7;
}//不执行循环体
System.out.println("x="+x+",y="+y); //x=2,y=1
3、
int x = 1,y = 1;//定义变量x,y,并对其分别进行初始值化
if(x++==1 | ++y==1)
/** x++先取值操作,再自增
++y先自增,后取值操作
①x值为1
②判断x==1是否成立,true
③x值自增1,即x值为2
④运行到到|,继续执行++y==1
⑤y自增1,即y值为2
⑥判断y==1是否成立,false
⑦if(比较表达式)中比较表达式结果(true | false),结果为true,则继续执行循环体
*/
{
x =7;//把7赋值给x
}
System.out.println("x="+x+",y="+y);//x=7,y=2
4、
int x = 1,y = 1;//定义变量x,y,并对其分别进行初始值化
if(x++==1 || ++y==1)
/** ①x值为1
②判断x==1是否成立,true
③x值自增1,即x值为2
④运行到到||,发现只要x++==2为true就不再执行++y==2(即短路效果),直接得出if(比较表达式)中比较表达式结果为true,则继续执行循环体
*/
{
x =7;//把7赋值给x
}
System.out.println("x="+x+",y="+y);//x=7,y=1
总结1 关系运算符:
==,!=,>,>=,<,<=
注意:
A:比较运算符的结果肯定是boolean。
B:你到底是使用”=”还是使用”==”,你自己要清楚。
总结2 逻辑运算符:
&,|,!,^
&&,||
注意:
逻辑运算符用于连接关系表达式
结论:
&: 有false则false
|: 有true则true
!:改变结果,取反
^:相同false,不同true
记忆:情侣关系(男男,男女,女男,女女)
最常用的逻辑运算符 !,&&,||
&&和&:结果一样,但是&&具有短路效果,左边如果是false,右边不执行。
||和|:结果一样,但是||具有短路效果,左边如果是true,右边不执行。
5、
boolean b = true;//定义布尔型变量b,并初始化为true
if(b=false)//把false赋值给b,比较表达式结果为false,不执行循环体
{
System.out.println("a");
}
else if(b)//比较表达式结果为false,不执行循环体
{
System.out.println("b");
}
else if(!b)//b为false,!b为true,比较表达式结果为true,执行循环体
{
System.out.println("c");//输出c
}
else//不再执行
System.out.println("d");//不再执行
总结3 if语句
if语句格式1:
if(比较表达式) {
语句体
}
执行流程:
首先判断比较表达式看其结果是true还是false
如果是true就执行语句体
如果是false就不执行语句体
if语句格式2:
if(比较表达式) {
语句体1;
}else {
语句体2;
}
执行流程:
首先判断关系表达式看其结果是true还是false
如果是true就执行语句体1
如果是false就执行语句体2
if语句格式3:
if(比较表达式1) {
语句体1;
}else if (比较表达式2) {
语句体2;
}
…
else {
语句体n+1;
}
执行流程:
首先判断关系表达式1看其结果是true还是false
如果是true就执行语句体1
如果是false就继续判断关系表达式2看其结果是true还是false
如果是true就执行语句体2
如果是false就继续判断关系表达式…看其结果是true还是false
…
如果没有任何关系表达式为true,就执行语句体n+1。
if语句的三种格式:
格式1:适合做一种情况的判断
格式2:适合做二种情况的判断
格式3:适合做多种情况的判断
if语句的注意事项:
A:比较表达式无论简单还是复杂,结果必须是boolean类型
B:一般来说:有左大括号就没有分号,有分号就没有左大括号
6、
int x = 2,y=3;//定义变量x,y,并对其分别进行初始值化
switch(x)
{
default:
y++;
case 3:
y++;
break;
case 4:
y++;
}
/** ①x的值为2,寻找case中的对应值
②发现并没有case 2,那么执行default语句y++,此时y的值变作4
③default语句的最后没有break,则继续往下执行
④进行到case 3执行y++,此时y的值变作5,遇到break,switch语句结束
*/
System.out.println("y="+y);//y=5
总结4 switch语句:
switch语句的格式:
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
格式解释:
A:switch表示这是switch语句
B:表达式
表达式的取值:byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是String
C:case后面跟的是要和表达式进行比较的值
D:语句体部分可以是一条或多条语句
E:break表示中断,结束的意思,可以结束switch语句
F:default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
执行流程:
首先计算出表达式的值。
其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束。
最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
switch语句的注意事项:
A:case后面只能是常量,不能是变量。
B:多个case后面的值不能出现相同的。
C:default可以省略吗?
可以。但是不建议。
D:break可以省略吗?
可以。但是不建议。容易出现case穿透。
E:default的位置一定要在最后吗?
可以在任意位置,建议在最后。
F:switch语句的结束条件
a:遇到break
b:执行到末尾