赋值运算符 (= 、+=、-=、*=、/=,、%=)
+= 是把左右两边的值相加后,赋值给左边只做一次运算
总结 s+=4和s=s+4 的区别:
S+=4是赋值运算,只做了一次运算,而s=s+4 是做了两次运算,一次是s=4 一次是将s+4的值再赋值给s.
关系运算符(>、>=、<、<=、!=)结果是boolean类型 真或者假
条件运算符(&&、||、!&、|、^)也成为逻辑运算符
“&”和“&&”的区别:单与时,左边无论真假,右边都进行运算;双与时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
“ ^ ”与“|”不同之处是:当左右都为true时,"^"结果为false。
位运算符(&、|、^、~、>>、<<、<<<、>>>)
基于二进制数的运算,
3*8最有效率的方式是:
3<<3 将3的二进制数左移两位,相当于 3乘以2的移动位数次幂
^ a异或b两次 结果 还是a
1. 表达式和三元运算符
表达式:是由数字、运算符、数字分组符号(括号)等以能求得数值的有意义排列的序列;
表达式的类型和值:
对表达式中操作数进行运算得到的结果是表达式的值。
表达式值的数据类型即为表达式的类型。
表达式的运算顺序
应按照运算符的优先级从高到低的顺序进行;
优先级相同的运算符按照事先约定的结合方向进行;
三元运算符语法:
x ? y : z;
其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算符的结果是表达式y的值,否则就是z的值。
2. 程序流程控制
顺序结构
分支结构(条件结构)
循环结构
控制循环结构
顺序结构:
如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。
if语句:
基本语法:if(表达式){方法体}else if(表达式){方法体}else(方法体)
几种形式:
三种格式:
if(条件表达式){执行语句;}
if(条件表达式){执行语句;}else{执行语句;}
if(条件表达式){执行语句;}else if (条件表达式){执行语句;}……else{执行语句;}
switch控制语句
格式:
switch(表达式)
{
case 表达式可能的结果值1:
执行语句;
break;
case 表达式可能的结果值2:
执行语句;
break;
...
default:
执行语句;
break;//最后这个一般不写
}
备注:
case之间与default没有顺序。先执行第一个case,都没有匹配的case值执行default。
结束switch语句的两种情况:遇到break,switch语句执行结束。
如果匹配的case或者default没有对应的break,那么程序会从第一次匹配的case语句开始继续向下执行,运行可以执行的语句,直到遇到break或者switch结束为止。
switch语句只能使用byte、char、short、int四种基本类型以及它们的包装类和枚举
3. 三大循环结构:
用于处理需要重复执行的操作;
根据判断条件的成立与否,决定程序段落的执行次数,而这个程序段落我们称为循环体;
while:事先不需要知道循环执行多少次;
do while:同上,只是至少要执行一次(先做,后判断);
for:需要知道循环次数;
循环结构(while& do while)
while语句
格式:
while(条件表达式值为true)
{
执行语句;
}
do while语句
格式:
do
{
执行语句;
}
while(条件表达式值为true);
我的总结:do while特点是无论条件是否满足,循环体至少被执行一次。
循环里的条件表达式不能直接写false或直接写结果是false的表达式,不过可以使用变量来传递false值;
循环结构(for)
格式:
for(初始化表达式(1);循环条件表达式(2);循环后的操作表达式(3))
{
执行语句;(4)
}
执行顺序:(1) → (2) → (4) → (3) → (2) → (4) → (3)
备注:
1, for里面的3个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
2, while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就在内存中释放。而while循环使用的变量在循环结束后还可以继续使用。
3, 最简单无限循环格式:while(true) , for(;;),无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。
4. 嵌套循环:循环里套循环
假设外循环的循环次数是m次,内循环的循环次数是n次,那么内层循环的循环次数需要 m * n次。
流程控制
break语句、 continue语句;
break:终止该层循环;
continue:跳过该层循环
注:
①:若这两个语句离开应用范围,存在是没有意义的。
②:这个两个语句后面都不能有语句,因为执行不到。
③:continue语句是跳过本次循环,继续下次循环。
④:标签的出现,可以让这两个语句作用于指定的循环。