++ – 自动递增或者自减 操作符
先执行++ 运算在执行输出语句
先把值传给输出语句后执行++
int i = 1;
//System.out.println("i++:" + i++);
System.out.println("++i:" + ++i);// 2
System.out.println("++i:" + i++);// 2
//System.out.println("++i:" + ++i);
关系操作符
equels 和 == 的区别
Integer integer = new Integer(2);
Integer integer1 = new Integer(2);
System.out.println(integer == integer1);// false
System.out.println(integer != integer1);//ture
System.out.println(integer.equals(integer1));// ture
自建Java类 未实现equals() 方法
value v = new value();
value v1 = new value();
System.out.println(v == v1);// false
System.out.println(v != v1);//ture
System.out.println(v.equals(v1));// false
== 比较的是对象的引用;equals 比较的是对象的内容
下边是Integer 中实现equals方法
public boolean equals(Object obj) { if (obj instanceof Integer) { return value == ((Integer)obj).intValue(); } return false; }
对比下边的描述可能更容易理解
value v2 = new value();
value v3 = v2 ;
System.out.println(v2 == v3);// true
System.out.println(v2 != v3);//false
System.out.println(v2.equals(v3));// true
按位操作符
&
两个输入位都是1才是1
int a = 0x16;
int b = 0x12;
System.out.println("二进制"+ Integer.toBinaryString(a));
System.out.println("a : "+ a);
System.out.println("二进制"+ Integer.toBinaryString(b));
System.out.println("b : " + b);
System.out.println("& : "+ Integer.toBinaryString(a&b));
System.out.println("b : " + (a & b));
执行结果
二进制10110
a : 22
二进制10010
b : 18
& : 10010
b : 18
|
两个输入位都为零才是零
int a = 0x16;
int b = 0x12;
System.out.println("二进制"+ Integer.toBinaryString(a));
System.out.println("a : "+ a);
System.out.println("二进制"+ Integer.toBinaryString(b));
System.out.println("b : " + b);
System.out.println("| : "+ Integer.toBinaryString(a|b));
System.out.println("b : " + (a | b));
运行结果如下:
二进制10110
a : 22
二进制10010
b : 18
& : 10110
b : 22
^
如果输入的位有一个为1 但不全是1则输出位为1
int a = 0x16;
int b = 0x12;
System.out.println("二进制"+ Integer.toBinaryString(a));
System.out.println("a : "+ a);
System.out.println("二进制"+ Integer.toBinaryString(b));
System.out.println("b : " + b);
System.out.println("| : "+ Integer.toBinaryString(a^b));
System.out.println("b : " + (a ^ b));
执行结果如下
二进制10110
a : 22
二进制10010
b : 18
^ : 100
b : 4
移位操作符
移位操作符只用来处理整数类型
左移位操作符 :<<
有符号右移操作符:>>
无符号右移操作符 : >>>
int a = 0x16;
System.out.println("二进制"+ Integer.toBinaryString(a));
System.out.println("a : "+ a);
int i = a >> 2;
System.out.println("右移有符号"+ Integer.toBinaryString(i));
System.out.println("i : "+ i);
int j = (-a) >>> 2;
System.out.println("查看-22: "+ Integer.toBinaryString(-a));
System.out.println("右移无符号"+ Integer.toBinaryString(j));
System.out.println("j : "+ j);
int k = a << 2;
System.out.println("左移"+ Integer.toBinaryString(k));
System.out.println("k : "+ k);
执行结果如下
二进制10110
a : 22
右移有符号101
i : 5
查看-22: 11111111111111111111111111101010
右移无符号111111111111111111111111111010
j : 1073741818
左移1011000
k : 88