上一章我们说了算术运算符、赋值运算符、比较运算符、逻辑运算符,这节课我们补充一下运算符、条件运算符两个运算符。
位运算符
5、位运算符(主要运算是通过二进制进行的)
<<:左移一位相当于乘2
(例如:int a = 2;a的二进制为:0000 0000 0000 0010(二进制相关内容不予以补充有需要的可以私信我)左移一位就会变成:0000 0000 0000 0100也就是十进制数里面的4,所以可得左移一位相当于乘2)
>>:右移一位相当于除2
(<<、>> 左移、右移都在有带符号位移 高位移动后(正数默认补0,负数补1))
>>>:无符号右移 不带符号的右移 高位右移后,默认补0
(例如:int a = -8; 二进制数为:1111 1111 1111 1000右移一位以后就会变成:0111 1111 1111 1100也就是十进制中的2,147,483,644)注: 不存在无符号左移。
&:与
(例如:int a = 3;int b = 4;a的二进制数:0000 0000 0000 0011,b的二进制数为:0000 0000 0000 0100,a&b = 0000 0000 0000 0000,简单来说就是对每一位进行&运算1代表真0代表假去运算得到相应的二进制,然后转换为十进制即可(注:Java中不存在1代表真,0代表假这一说法,这里只是简单来说方便记忆))
|:或
(例如:int a = 3;int b = 4;a的二进制数:0000 0000 0000 0011,b的二进制数为:0000 0000 0000 0100,a&b = 0000 0000 0000 0111,解法同上)
^:异或(相同为0,不同为1)
(例如:int a = 3;int b = 4;a的二进制数:0000 0000 0000 0011,b的二进制数为:0000 0000 0000 0100,a&b = 0000 0000 0000 0111,解法同上)
~:非
(例如:int a = 4;a的二进制数:0000 0000 0000 0100,~a = 1111 1111 1111 1011十进制数为-5也是对每一个二进制数进行非运算)
在位运算符中还有值得注意的是:&、|、^、~中也存在逻辑运算符当处于boollean值当中是逻辑运算符,当处于数当中是位运算符。
6、条件运算符
(条件表达式)?结果1:结果2
(true)运行结果1,(false)运行结果2
控制语句
1、条件语句
if:
if(条件语句){
语句
}(如果条件语句为true,执行大括号里面的语句,如果条件为false,不执行)
if......else:
if(条件语句){
语句1
}else{
语句2
}(如果条件语句为true,执行大括号里面的语句1,如果条件为false,执行语句2)
if......else if:
if(条件语句1){
语句1
}else if(条件语句2){
语句2
}(如果条件语句1为true,执行大括号里面的语句1,如果条件语句2为true,执行大括号里面的语句2,否则都不执行)
if......else if......else if......else:
if(条件语句1){
语句1
}else if(条件语句2){
语句2
}else if(条件语句3){
语句3
}else{
语句4
}(如果条件语句1为true,执行大括号里面的语句1,如果条件语句2为true,执行大括号里面的语句2,如果条件语句3为true,执行大括号里面的语句4,否则执行语句4))
.......
switch:
switch(常数){
case1:
case2:
case3:
.......
default:
}(判断常数为多少,便从哪里进入如果遇到break则结束,否则继续进行,直到结束,如果常数没有对应相应的case值时则进入到default然后运行结束)
if语句的优势:
switch语句的优势:
switch和if的对比:
2、循环语句
while:
while(条件语句){
循环语句
迭代部分
}(先判断条件语句是否为true,当为true时进行循环语句和迭代部分,反之跳出)
do.......while:
do{
循环语句
迭代部分
}whlie(条件语句)(先进行循环和迭代部分,然后在进行判断同上)
for:
for(表达式1;表达式2;表达式3){
语句
}(先运行表达式1,然后运行表达式2,当表达式的值true时再运行语句,然后运行3,再次回到表达式2运行并进行判断直到表达式2的值为false时结束运算)
三种循环结构的对比:
3、break和continue
break:为终止某个语句,只要遇到break就结束当前语句
continue:用于循环部分,只要遇到continue就跳过本次循环进入下一次循环当中。