一、运算符
1、位运算符
把操作数转为二进制,然后根据运算符的规则运算,最终得到的结果转为十进制
(1)&
同一位的两个数,两个都为1才是1,一个为0就是0
(2)|
同一位的两个数,一个为1就是1,两个都为0才是0
(3)^
同一位的两个数,相同为0不同为1
注意
以上三个左右两边为boolean类型数据就作为逻辑运算符存在
2、位移运算符
>> 右移
把第一个操作数转为二进制,向右移动第二个操作数个位数,移出的位数直接忽略不计,剩余的转为十进制
右移 :/2的次方
8>>3 ==> 8/2^3
<< 左移
把第一个操作数转为二进制,向左移动第二个操作数个位数,空位补0,结果转为十进制
左移 :2的次方
8<<3 ==> 82^3
3、注意
建议使用位移运算符代替乘除,效率高
4、运算符优先级
单目算数位关系,逻辑三目后赋值
&&比||优先级高
赋值运算符 : 自右向左执行
条件运算符具有自右向左的结合性
二、流程控制语句
1、顺序结构
从上到下从左到右
2、选择结构
满足条件执行相应的代码
if…else
单选择或单分支
if(boolean表达式){
语句体;
}
执行流程
boolean表达式,得到boolean结果
如果结果为true,执行{}中的语句体
如果结果为false,直接跳过if结构
双选择或双分支
if(boolean表达式){
语句体1;
}else{
语句体2;
}
执行流程
boolean表达式,得到boolean结果
如果结果为true,执行{}中的语句体1
如果结果为false,执行else后的语句体2
多选择或多分支
if(boolean表达式1){
语句体1;
}else if(boolean表达式2){
语句体2;
}else if(boolean表达式3){
语句体3;
}…
else{
语句体n;
}
执行流程
boolean表达式1,得到boolean结果,如果结果为true,执行{}中的语句体1
如果结果为false,执行boolean表达式2,如果结果为true,执行{}中的语句体2
如果结果为false,执行boolean表达式3,如果结果为true,执行{}中的语句体3
如果以上都不满足,执行else后的语句体n;
注意
一个if…else为一个结构,只能执行一个语句体
如果{}中的语句体只有一句,前后的{}可以省略
if语句与条件运算符区别
条件运算符肯定有结果,但是if结构不一定能有结果
条件运算符结果只能为值1|值2,if语句体可以存在多条指定语句
if结构功能更强大,但是条件运算符结构简单,效率高
switch
定值判断
语法
switch(条件){
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n;
break;
}
条件
变量 ,表达式
数据类型 : byte short int char 枚举(jdk1.5) String(jdk1.7)
case
case跟定值,要与条件的结果判断,条件的结果如果与case后的定值相等就指定对应的语句体
break
结束当前switch语句,防止case穿透
default
相当于else,可以定义可以不定义
位置可以定义在switch语句中的任意位置
三、循环结构
重复执行一段代码(控制执行次数)
for
for(条件初始化;条件判断;条件变化){
重复执行的代码段;
}
条件初始化
声明一个变量 i,并且第一次赋值
条件判断
值为boolean类型的判断结果
控制循环的结束
条件变化
i自身值的改变
执行流程
条件初始化 i=1
条件判断: 判断是否结果,为false,循环结束,为true,执行本次循环体语句
条件变化 i++
重复执行第2,3步骤
注意
在循环体语句中可以使用条件变量i
for循环中的条件变量i作用域只在当前循环
如果循环体语句只有一句,前后的{}可以省略
while
do…while