位运算符(<<,>>,>>>)
左移(<<):所输入数的二进制数向左移,然后在转换为十进制数
class main { public static void main(String[] args) { int i1=31; System.out.println(i1<<3);//248 }}
注意:移动的位数有限,不能移动到将二进制数1作为第一位,否则转换为十进制数是负数
class main { public static void main(String[] args) { int i1=31; System.out.println(i1<<28); }}
右移(>>,>>>):所输入数的二进制数向右移,然后在转换为十进制数
>>:有符号右移
class main { public static void main(String[] args) { int i1=-31; System.out.println(i1>>2); }}
>>>:无符号右移
class main { public static void main(String[] args) { int i1=-31; System.out.println(i1>>>2); }}
与运算符(&)
&与运算符:二进制运算二者均为1则为1,其余为0
例:12&5
0 0 0 0 1 1 0 0 (12)
& 0 0 0 0 0 1 0 1 (5)
——————————————————
0 0 0 0 0 1 0 0 (4)
或运算符(|)
|或运算符:二进制运算有一个为1其余均为0
例:12|5
0 0 0 0 1 1 0 0 (12)
| 0 0 0 0 0 1 0 1 (5)
——————————————————
0 0 0 0 1 1 0 1 (13)
异或运算符(^)
^异或运算符:二进制运算两者不一样取值为1,其余均为0
例:12^5
0 0 0 0 1 1 0 0 (12)
^ 0 0 0 0 0 1 0 1 (5)
——————————————————
0 0 0 0 1 0 0 1 (9)
三元运算符
格式:(条件表达式)?表达式1:表达式2;
如果条件表达式为true,运算后结果为表达式1
如果条件表达式为false,运算后结果为表达式2
注意:表达式1和表达式2为同种类型
public class V{ public static void main(String[] args){ //方法一 /int a=3; int b=2; System.out.println("a:"+a+"b:"+b); int c=a; a=b; b=c; System.out.println("a:"+a+"b:"+b); //方法二 int a=3; int b=2; System.out.println("a:"+a+"b:"+b); a=a^b; b=a^b;//(a^b)^b==a a=a^b;//(a^b)^a==b System.out.println("a:"+a+"b:"+b); } }
三元运算符与if-else的联系与区别:同在一定程度上可以与if-else相互交换(三元运算符一定可以转化为if-else,反之不一定)