003运算符

内容:自增运算符、右移运算符、逻辑运算符、与或运算符、异或运算符、连接符、练习(奇淫方法解决)

供有点基础的人查阅

####################################

自增运算符

x++:表示  x 自增 1

以下是经常碰到的易混点:

int a = 6,b;
b = a++;             //得到的结果是 b=6,a=7

以上代码相当于

temp = a; //先将a进行临时存储
a = a + 1; //然后a自增
b = temp; //将临时的值赋值给b

重点在b = a++,这一句,要记住 b 赋的值是 a 未自增之前的值。

#####################################

右移运算符:>>   , 无符号右移:>>>

整型字符存储是有8位,比如 9 ,二进制存储为 0000 1001,通过右移运算符 1 也就是 9 >> 1 后,变成 1000 0100,就是后面的 1 移到了前面

无符号右移 1 位—9>>>1 :0000 0100

########################################

逻辑运算符: &   &&    |      ||             <   >    ==

& 和 &&的区别:& 两边都运算是否为真,&& 左边为假,则右边不运算;| 和 || 一样:左边为真,右边则不进行运算,如果左边为假,右边继续运算

#####################################################

与或非运算符:  &  |     与上面的逻辑运算符区分一下

二进制运算

  0010 1011                                                                   0010 1011  

&0000 0111                                                                 | 0000 0111

=0000 0011     与运算,两个为1才为1                          0010 1111     或运算,一个为1结果就是1

######################################################

异或运算符:  ^   

6^3 =  0110 ^ 0011  = 0101 为了减少一点缩写,前面的 4 个 0 我就没有写了。是二进制运算

值得注意的是:6^3^3 = 6          6^3^6 = 3      练习中会用到这种特性

#########################################################

连接符:在输出的时候注意一下

int a = 3,b = 4;
System.out.println("5+5="+5+5);  // 5+5=55
System.out.println("5+5="+(5+5));   // 5+5=10
System.out.println("a="+a+",b="+b);   // a=3,b=4
//字符串连接使用简单,就不做讲解

 

####

赋值运算符,一般不用考虑
+=;可能发生自动类型转换
Short s=4;
s=s+5;   //编译不通过,因为右边是 int型和short型相加,类型不同不可以相加
s+=5;   //编译通过,这个发生了类型转换,short型自动转成了int型,所以可以相加,如果理解不了,那就记住吧 /滑稽

 

####################################################################################################

练习

1、最有效率的方式计算2×8

2、把两个整数变量的值进行互换(不通过第三个变量)

System.out.println((2<<3))
答案 1
int a = 5,b = 6;
a = a + b;    //a = 5+6 = 11
b = a - b;    // b = 11-6 = 5
a = a - b;    // a = 11-5 = 6
答案 2.1
int a = 5,b = 6;
a = a ^ b;   // a = 5 ^ 6(a^b)
b = a ^ b;   // b = 5 ^ 6 ^ 6(a^b^b)
a = a ^ b;   // a = 5 ^ 6 ^ 5     此时的 b 已经经过上一个运算变成了 5 
答案 2.2

第二题两个方法使用时注意,不要超出整数范围

 

如果有疑问,欢迎在下方评论,我会回复。

 

posted @ 2018-03-12 11:21  Alos403  阅读(206)  评论(0编辑  收藏  举报