java面试之运算符

一 移位运算符

“ < <”, “> > ”, “> > > ”在Java中是左移、有符号右移和无符号右移运算符。

 (1)左移动运算符(< <):
    会将操作的数向左边移动,移动的位的个数由左操作数指定,左移后,低位会被自动补零(0)。
(2)右移动运算符(> > ):
    反过来,把操作数向右移动,移动的位个数同样由右操作数指定。注意:面对带正负号的数,会采用符号扩展,如果原值是正数,则高位补上0;如果原值是负数,高位补1。
(3)无正负号的右移运算符(>>>):
     采用0补充,意思就是说,无论是正号还是负号,都在高位补0。
(4)注意,没有<<<这个运算符

(5)对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

 

测试的小例子:

public class Test6 {
	/**
	 * *
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		int a1 = 16 << 2;
		System.out.println(a1);
		int a2 = 16 >> 2;
		System.out.println(a2);
		int b1 = 15 >> 2;
		System.out.println(b1);
		int a3 = -16 << 2;
		System.out.println(a3);
		int a4 = -16 >> 2;
		System.out.println(a4);
		int a5 = -16 >>> 2;
		System.out.println(a5);
		int a6 = 16 >>> 2;
		System.out.println(a6);
		byte c1 = 'a';
		System.out.println(c1 << 2);
		char c2 = 'b';
		System.out.println(c2 << 2);
		short c3 = 1;
		System.out.println(c3 << 2);
	}
}

 

结果:   

        64
        4
        3
        -64
        -4
        1073741820
        4
        388
        392
        4
 

二 逻辑运算符
1, 逻辑运算符有“与”(AND)、“或”(OR)、“异或(XOR )”、“非(NOT)”,分别用“&”、“|”、“^”、“~”表示。
2, &运算规则:如果两个运算数都是为1,则结果为1。否则,其他情况下,结果都为0。
3, |运算规则:任意一个运算数为1,则结果为1。
4, ^运算规则:两个运算数不同时,则结果为1。否则,结果为0。
5, ~运算规则:对运算数的每一位取反。

public class Test7 {
	/**
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		int i = 1;
		int x = 2;
		int y = 3;
		char c = 4;
		byte t = 2;
		System.out.println(i & x);
		System.out.println(i | x);
		System.out.println(i ^ x);
		System.out.println(~i);
		System.out.println(c & t);
		System.out.println(c | t);
		System.out.println(c ^ t);
		System.out.println(~c);
	}
}

 

  结果:

          0
          3
          3
          -2
          0
          6
          6
          -5

3.算术运算符

 (byteshortchar)进行算术运算后,结果会自动提升成int类型。

 

byte b1 = 1; byte b2 = 2; byte b3 = b1+b2;//这句话编译的时候报 int类型不能转换byte类型 int i1 = b1+b2;

 

  &&&的区别,其实在进行逻辑与运算时,既可以使用&&也可以使用&,在功能上本身没有区别。两者区别的位置在,对于&来说,如果左侧条件为false,也会计算右侧条件的值,而对于&&来说,如果左侧的条件为false,则不计算右侧的条件,这种现象被称作短路现象。

 

优先级 运算符                                                                  结合性

1 () [] .                                                                           从左到右

2 ! +(正) -(负) ~ ++ --                                                           从右向左

3 * / %                                                                            从左向右

4 +(加) -(减)                                                                   从左向右

5 << >> >>>                                                                    从左向右

6 < <= > >= instanceof                                                    从左向右

7 == !=                                                                            从左向右

8 &(按位与)                                                                           从左向右

9 ^                                                                                   从左向右

10 |                                                                                   从左向右

11 &&                                                                                   从左向右

12 ||                                                                           从左向右

13 ?:                                                                           从右向左 

14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>=           从右向左

 

 

 

你可能感兴趣的:(java,C++,c,面试,C#)