------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
class Demo1
{public static void main(string[]args)
{int x=3;
//+= -= *= /= %=
x+=;//x=x+4;
short s=4;
思考 s=s+5 ;s+=5;的区别
//s=s+5; s+5运算完是 int 值 这时赋值给S是错误 容易丢失精度
s+=5; S+=5 是只做赋值运算 这内部有个自动转换动作
比较运算符 结果都是boolean型 要不是(真) ture, 要么是(假)false
逻辑运算符 & (与) | (或) ^ (异或) !(非) && (短路) ||(短路)
class Demo2
{
public static void main(string[]args)
{ int x=4;
//逻辑运算符用于连接boolean类型的表达式。
6<x>3 用代码表示 x>3 & x<6= true&true =true;
true&true=true
true&false=false
false&true=false
false&false=false
&:只要两边的boolean表达式结果,有一个为false。那么结果就是false。
只有两边都为 true,结果为true。
true|true=true
true|false=true
false|true=true
false=false
|:两边只要有一个为真,结果为true,两边都为假,结果为false。
^:异或 就是和|有点不一样 当true^true=false。
true^true=false
true^false=true
false^true=true
false^false=false
^:两边相同 结果为false,两边不同 结果为true。
&和&&的特点
& :无论左边是true是false。右边都运算
&&:当左边为false,右边不运算
|和 ||的特点
|:两边都参与运算
||:当左边为true时,右边不运算。
位运算符
3<<1=6 ; 3<<2=12; 3<<3=24;
3*2=6 3*4=12 3*8=24
6>>1=3; 6>>2=1;
6/2=3, 6/2(2)=1,
3<<2 -->3*2(2)
<<:其实就是乘以2的移动的位数的次幂
>>:就是除以2的移动的位数次幂
>>:最高位补什么由原有数据的最高位值而定。
如果最高位0,右移后,用0补空位
如果最高位1,右移后,用1补空位
>>>:无论最高位是什么,右移后,都用0补。
7^4
111=7;7^4^4=7;
"^"一个数异或同一个数两次,结果还是那个数。
位运算符 练习
1: 最有效率的方式算出2乘以8等于几?
答案 2<<3
2: 对两个整数变量的值进行互换 (不需要第三方变量)
答案 1 : 通过第三方变量
int c=a;a=b;b=c;
system.out.println("a="+a+,m="+m);
2:不用第三方变量
a=a+b
b= a-b
a=a-b
system.out.println("a="+a+,m="+m);
3: a=a^b;
b=a^b;//(a^b)^b
a=a^b;//a^(a^b)
system.out.println("a="+a+,m="+m);