1.位运算
3<<2 左移:就是乘以2的次幂运算,左移几位,就乘以2的几次幂。3左移2位就等于3乘以2的2次幂等于12.
6>>1 右移:就是除以2的次幂运算,右移几位,就除以2的几次幂。6/2(1)=3 6>>2 6/2(2)=1
一个数异或另一个数2次,还是这个数本身。6^3^3=6
~X 取反 就是X先加上1然后结果加上负号就行 了
练习:
A:最有效率的方式算出2乘以8等于几? 2<<3 =8
B:对两个整数变量的值进行互换(不需要第三方变量) 使用异或就可以实现
a = a ^ b;// a = 3 ^ 7;
b = a ^ b;// b = 3 ^ 7 ^ 7;
a = a ^ b;// a = 3 ^ 7 ^ 3;
2.流程控制语句
if语句
三种格式:
{
执行语句;
}
{
执行语句;
}
else
{
执行语句;
}
{
执行语句;
}
elseif (条件表达式)
{
执行语句;
}
……
else
{
执行语句;
}
if语句特点:
a,每一种格式都是单条语句。
b,第二种格式与三元运算符的区别:三元运算符运算完要有值出现。好处是:可以写在其他表达式中。
c,条件表达式无论写成什么样子,只看最终的结构是否是true 或者 false;
switch语句
格式:
switch(表达式)
{
case 取值1:
执行语句;
break;
case 取值2:
执行语句;
break;
…...
default:
执行语句;
break;
}
switch语句特点:
a,switch语句选择的类型只有四种:byte,short,int , char。
b,case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
c,结束switch语句的两种情况:遇到break,执行到switch语句结束。
d,如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句,直到遇到break
或者switch结尾结束。
switch和if的区别?
if可以用于判断数值,也可以判断区间,
只要运算结果是boolean类型,都可以进行判断。
switch用于对固定的几个值,进行判断。判断的值的类型有限。
代表语句:while, do while , for
while语句格式:
while(条件表达式)
{
执行语句;
}
do while语句格式:
do
{
执行语句;
}while(条件表达式);
dowhile特点:
是条件无论是否满足,
循环体至少执行一次。
格式:
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{
执行语句;(循环体)
}
注:
a,for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件,为真就执行循环
体,然后再执行循环后的操作表达式,接着继续判断循环条件,重复找个过程,直到条件不满足为止。
b,while与for可以互换,区别在于for为了循环而定义的变量在for循环结束就是在内存中释
放。而while循环使用的变量在循环结束后还可以继续使用。
c,最简单无限循环格式:while(true) ,for(;;),无限循环存在的原因是并不知道循环多
少次,而是根据某些条件,来控制循环。
break(跳出), continue(继续)
break语句:应用范围:选择结构和循环结构。
continue语句:应用于循环结构。
注:
a,这两个语句离开应用范围,存在是没有意义的。
b,这个两个语句单独存在下面都不可以有语句,因为执行不到。
c,continue语句是结束本次循环继续下次循环。
d,标号的出现,可以让这两个语句作用于指定的范围。