2%-5//结果为2,因为正负应该由左边的数决定.
short s=4;
s=s+5;//会失败,原因为右边运算完必然是整数,无法判断范围是否在short内,容易造成精度丢失.
而 s+=5可以通过,因为会做自动转换
3.(重要)
短路与 :&& :
与&的区别,&无论左边结果,两边都会参与计算,而&&是当左边为false时,右边不参与运算
短路或 :||
|两边都会参与运算,而||当左边为true时右边不参与运算
- 位运算符**
a. << :左移(移两个进制位)
规律:3<<1=6;---------(3* 2^1=6);
3<<2=12; --------(3* 2^2=12)
左移就是乘以2的几次幂运算,移几位就是几次幂.
b. >> :右移(将二进制码向右移动)
规律:就是除以2的次幂运算,移几位就是几次幂.
右移是原最高位是什么,空位就补什么
c.无符号右移:与右移运算符一样,空位都补0.
d. &:与运算:
6&3=2;
6: 110
3: &011
---------------
010=2
运用:当要获取001010011的后三位时,可以让他与00000111进行 与运算.
即可用于获取二进制中的有效位1.
e. |:或运算
6|3=7:
110
|011
---------------
111=7
f. ^:异或
110
^011
--------------
101
规律:一个数异或另一个数两次后还是这个数
g. ~ : 反码:
~6=-7
练习:
- 最有效率的运算2乘以8:通过位移运算:
system.out.println(2<<3);
- 对2个整数变量的值进行互换(不需要第三方变量)
int a=3,b=7;
a=a^b;//a=3^7
b=a^b;//b=3^7^7=3
a=a^b;//a=3^7^3
5.三元运算符:
(条件表达式)?表达式1:表达式2
6.程序流程控制:
if ; if{}else{}
7.switch
- switch语句中的defalult 的摆放位置不会影响程序运行
- 匹配的答案一直执行,执行到break或者switch结束
- switch只支持byte,short,int,char,string
switch(controllingExpression)
{
case constantExpression1:statement1;break;
case constantExpression2:statement2;break;
case constantExpression3:statement3;break;
...
default:statement;
}
8.if可以用于判断数值也可以判断区间,而switch只用于判断固定值
9."\t" \代表制表符 可以用于对齐如九九乘法表
\n:换行
\r:换行