目录
3.7.1 分支结构中的if - else (条件判断结构)
3.7.2 分支结构中的switch - case (选择结构)
3.1算术运算符
+ 、 - 、 * 、 / 、 % 、 (前)++ 、(后)++ 、(前)-- 、 (后)-- 、 +(连接符号)
// 除号:
int num1 = 12;
int num2 = 5;
int result1 = num1 / num2;
System.out.println(result1); //2
//% 取余运算
//结果与被模数(分子)相同
//开发中,常用 % 来判断能否被除尽的情况
int m1 = 12;
int n1 = 5;
System.out.println("m1 % n1 =" + m1 % n1);//2
int m2 = -12;
int n2 = 5;
System.out.println("m2 % n2 =" + m2 % n2);//-2
int m3 = 12;
int n3 = -5;
System.out.println("m3 % n3 =" + m3 % n3);//2
int m4 = -12;
int n4 = -5;
System.out.println("m4 % n4 =" + m4 % n4);//-2
//(前)++:前自增1,然后再运算
//(后)++:先运算,然后自增1
int a1 = 10;
int b1 = ++a1;
System.out.println("a1 = " + a1 + ",b1 = " + b1);//a1 = 11,b1 = 11
int a2 = 10;
int b2 = a2++;
System.out.println("a2 = " + a2 + ",b2 = " + b2);//a2 = 11,b2 = 10
//(前)--:先自减1,后运算
//(后)--:先运算,后自减1
int a4 = 10;
int b4 = a4--;
System.out.println("a4 = " + a4 + ",b4 = " + b4);// a4 = 9,b4 = 10
特别说明:
1、 (前)++:前自增1,然后再运算
(后)++:先运算,然后自增1
2、(前)-- : 先自减1,后运算
(后)-- :先运算,后自减1
3、连接符(+):只能使用在String 与其他数据典型变量之间
3.2赋值运算符
= 、 += 、 -= 、 /= 、 %=
//赋值符号:=
int i1= 10;
int j1 = 10;
int i2,j2;
//连续赋值
j2 = i2 = 10;
int i3 = 10,j3 = 20;
int num1 = 10;
num1 += 2; // num1 = num1 +2;
System.out.println(num1);//12
int num2 = 12;
num2 %= 5;
System.out.println(num2);
short s1 = 10;
//s1 = s1 + 2;//编译失败
s1 += 2;//不会改变变量本身的数据类型
System.out.println(s1);
特别说明:
运算的结果不会改变变量本身的类型
3.3比较运算符(关系运算符)
== 、 != 、 > 、 < 、 >= 、 <= 、 instanceof
int i = 10;
int j = 20;
System.out.println(i == j);//false
System.out.println(i = j);//20
特别说明:
1、比较运算符的结果是boolean类型
2、 > 、 < 、 >= 、 <= :只能使用在数值类型的数据之间
3、== 、 =!:不仅可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间
3.4逻辑运算符
&(逻辑与)、 &&(短路与) 、 |(逻辑或)、 ||(短路或)
^(逻辑异或,当二者操作相同时为false,操作相反时为true) 、 !(逻辑非)
//区分& 与 &&
//相同点1:& 与 && 的运算结果相同
//相同点2:当符号左边是true时,两者都会执行符号右边的运算
//相同点3:当符号左边数false时,$继续执行符号右边的运算,&&不再执行符号右边的运算
//开发中,推荐使用&&
boolean b1 = false;
int num1 = 10;
if (b1 & (num1++ >0))
{
System.out.println("北京");
}
else
{
System.out.println("南京");
}
System.out.println("num1 = "+num1);//11
boolean b2 = false;
int num2 = 10;
if (b2 && (num2++ >0))
{
System.out.println("北京");
}
else
{
System.out.println("南京");
}
System.out.println(num2);//10
//区分:| 与||
//相同点1:| 与||的运算结果相同
//相同点2:当符号左边是false时,二者都会执行符号右边的运算
//相同点3:当符号左边是true时,| 继续执行符号右边的运算,||不再继续执行符号右边的运算
//开发中,推荐使用||
boolean b3 = true;
int num3 = 10;
if (b3 || (num3++ >0))
{
System.out.println("北京");
}
else
{
System.out.println("南京");
}
System.out.println(num3);//11
boolean b4 = true;
int num4 = 10;
if (b4 || (num4++ >0))
{
System.out.println("北京");
}
else
{
System.out.println("南京");
}
System.out.println(num4);//10
特别说明:
逻辑运算符操作的都是boolean类型的变量,且结果也是boolean型
3.5位运算符
<< 、 >> 、 >>>(无符号右移) 、 ^ 、 ~(取反) 、& 、 |
int i = 2;
System.out.println("i = " + (i << 2));//8 = 2 ^ 2 ^2
int m = 12;
int n = 5;
System.out.println("m & n :" + (n & n));//4
System.out.println("m | n :" + (n | n));//13
System.out.println("m ^ n :" + (n ^ n));//9
特别说明:
1、位运算符操作的都是整型的数据
2、<< ,在一定范围内,每向左移一位,相当于 *2
>> ,在一定范围内,每向右移一位,相当于 /2
3.6三元运算符
1、结构:(条件表达式)?表达式1:表达式2
//获取两个整数的最大值
int m = 12;
int n = 5;
int max = (m > n)? m : n;
System.out.println(max);//12
double mum = (m > n)? 2 : 1.0;
System.out.println(mum);//2.0
2、说明:
①条件表达式的结果为boolean类型
②根据条件表达式真或假,决定执行表达式1,还是表达式2
如果表达式为true,则执行表达式1
如果表达式为false,则执行表达式2
③表达式1和表达式2要求是一致的
④三元运算符可以嵌套使用
3、凡是可以使用三元运算符的地方,都可以改写为if-else
反之,不成立
4、如果程序既可以使用三元运算符,又可以使用if-else结构,优先选择三元运算符.
原因:简洁、执行效率高
3.7程序流程控制
顺序结构:程序从上到下执行
分支结构:
if - else if - else
switch - case
循环结构:
for
while
do - while
3.7.1 分支结构中的if - else (条件判断结构)
//第一种:
if (条件表达式)
{
执行表达式
}
//第二种:二选一
if (条件表达式)
{
执行表达式1
}
else
{
执行表达式2
}
//第三种:多选一
if (条件表达式)
{
执行表达式1
}
else if (条件表达式)
{
执行表达式2
}
……
else
{
执行表达式n
}
说明:
1、else 结构时可选的
2、针对于条件表达式:
如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓
如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明放在上面
如果多个条件表达式之间有包含的关系,通常情况下。需要将范围小的声明在范围大的上面,否则,范围小的就没有机会执行
3、if-else 结构是可以相互嵌套的
4、如果if - else 结构中的执行语句只有一行时,对应的一对()可以省略,但是,不建议大家省略
对于else服从就近原则
3.7.2 分支结构中的switch - case (选择结构)
switch(表达式){
case 常量1:
执行语句1;
//break;
case 常量2:
执行语句2;
//break;
……
default:
执行语句;
//break;
}
说明:
①根据switch表达式中的值,依次匹配多个case中的常量,一旦匹配成功,则进入相应case结构中,调用其执行语句
当调用完这个执行语句以后,则仍然继续向下执行其他case结构中的执行语句,直到遇到break关键字或此switch - case结构末尾结束为止
②break,可以使用在switch - case结构当中,表示一旦执行到此关键字,跳出switch - case结构
③ switch结构中的表达式。只能是如下的6种类型之一:byte , short , char , int , String类型,枚举类型(JDKA5.0新增的)
④case之后,只能声明常量,不能声明范围
⑤ break关键字在switch - case结构中是可选的
⑥ default:相当于 if- else 中的else,default结构是可选的,而且位置是灵活的
⑦ 如果switch - case 结构中的多个case执行语句相同,就可以考虑进行合并