1,运算符
算术运算符,即(+,-,*,/,%,++,--,+)
赋值运算符,即(=,+=,-+,*=,/=,%=)
比较运算符,即(>,<,>=,<=,==,!= insanceof )
逻辑运算符,即(&,|,^,&&,||,!)
三元运算符,即(z?y:z) 条件?表达式1:表达式2
注意事项:
1.11 int j,i=m=3;
j= i++,n=++m,
结果为:j=3,i=4,n=4,m=4,++在后时,是先把i赋给j,然后在+1,而++在前,是先m+1再赋值给n。
1.12 负数%负数=负数
负数%正数=负数
正数%负数=正数
1.13【&】一个false,都false,
【|】只要一个为true,都是true,两边都是false都是false,
【^】,异或,和【|】只有一点不一样就是两边true则为false,就是:两边相同为false,两边不同为true;
【&&】,并且
【||】,或者
【!】,非false , !!真true;
1.13位运算
~取反,上一笔记提及过的:6的二进制【取反+1】
000...000110 =6 取反:
111...111001 如何计算这个取反后的值?【反思维,-1取反】 最后结论这个就是-7
000...000001 -1
111...111000 得出结果下面取反
000...000111 111就是7 价格-号,就是-7.
【任何整数取反就是+1后舔上-号,~7=-8,~8=-9,~10=-11、、、、、】
&按位,上面提到的只要一个false,都false,小提示,0为false,1为true所以6&3,转换为二进制
110
011>>计算
010>>1,0,false. 1,1,ture,0,1,false最后结果就为010,转换为十进制就是2=6&3
计算9&5>>1001&0101=1
|按位或,一个true,都true,两边false都false那么6|3就是二进制111就是6|3=7
^按位异或,两边相同为false,两边不同为true;那么6^3就是101就是6^3=5
计算:6^3^3等于多少呢。用上面的二进制继续计算得出6^3^3=6
用一个数^同一个数2次,结果还是那个数。
(扩展一下就是:简单的密码加密啊,再也不担心一般人看到自己备注的各种帐号密码了)
<<左移运算符,
>>右移运算符,
总结:右移(左移)一位相当于除以2(乘以2)(移动1位就是和2进行计算,2位就是2个2)
int a=3*2*2;
int b=3<<2;//相当于3*2*2
int c=12/2/2;
int d=12>>2; 相当于12/2/2
在进行二进制计算移动时补位记住:前面是0补0,是1补1(1开头为负数)
>>>无符号运算符
1.14 赋值运算符譬如:a+=b 就是a=a+b 。
1.15 三元运算符,即(z?y:z) 条件?表达式1:表达式2 (true=表达式1,false=表达式2)
int x=3,y;
y=(x>1)?100:200;如果条件为true,为值100,false为值200
(一元运算:a++,a-- 二元运算:1+2,3*8)
小练习:
1.最有效的方式计算出:2*8= 2<<3. 3*9= 3<<3+3
2.对2个整数变量进行互换:
可以有三种方式:
2.1按照以前的知识,定义一个中间变量temp进行转换。
2.2用赋值运算符解决问题如:
int a=4,b=9;
a+=b; 就是 a=a+b=13
b=a-b; 就是 b=13-9=4;
a=a-b; 就是 a=13-4=9;
2.3用位运算^计算:
a=a^b; 就是 c
b=a^b; 就是 b=c^b b=a^b^b=4
a=a^b; 就是 a=c^c^b=b=9
---------- android培训、 java培训、期待与您交流!----------
黑马官网: http://edu.csdn.net/heima