`

Java语法(二)运算符

 
阅读更多

 

一、算术运算符:

  单目:+(取正)-(取负) ++(自增1) - -(自减1)

  双目:+ - * / %(取余)

  三目:a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;这整个运算符包括一个关系运算符(可以是“>”"<""!="等等),一个“?”,一个“:”,冒号前后需要有两个表达式或者是值或者是对象。

 

二、关系运算:

  等于符号:==,不等于符号: != ,大于符号:>, 小于符号:<,大于等于符号: >= ,小于等于符号: <= 。

 

三、位运算符 逻辑运算符:

  位运算符 与(&)、非(~)、或(|)、异或(^)

  &:当两边操作数的位同时为1时,结果为1,否则为0。如1100&1010=1000

  | :当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110

  ~:0变1,1变0

  ^:两边的位不同时,结果为1,否则为0.如1100^1010=0110

  逻辑运算符

  与(&&)、非(!)、或(||)

b & 0xff,返回值是int类型,1位变四位,符号位跑到最前面那个字节了,所以可以把[-128,127]变为[0,255],

 

四、赋值运算符

  = += -= *= /= %= &= ^= |= <<= >>=

 

五、instanceof运算符

  该运算符是双目运算符,左面的操作元是一个对象,右面是一个类。当左面的对象是右面的类创建的对象时,该运算符运算结果是true,否则是false。

 

六、  位移运算符--效率非常高,用于大数量的计算,String的数值,primitive date type 转换byte等

  << 带符号左移

>>带符号右移

>>> 无号右移,用于数据压缩等?

java基本数据类型都是有符号的,没有无符号的

 

public class Test {
    public static void main( String[] args ) {
        byte b = (byte) -8;
        // -2
        System.out.println( b >> 2 );
        // 11111111111111111111111111111110
        System.out.println( Integer.toBinaryString( b >> 2 ) );
        // 1073741822
        System.out.println( b >>> 2 );
        // 111111111111111111111111111110
        System.out.println( Integer.toBinaryString( b >>> 2 ) );
        // -32
        System.out.println( b << 2 );
        // 11111111111111111111111111100000
        System.out.println( Integer.toBinaryString( b << 2 ) );
        // 255,
        System.out.println( 0xff );
        // 15
        System.out.println( 0xff >> 4 );
        // -255,
        System.out.println( -0xff );
    }
}

 

 

 

七、运算符优先级

  从高到低:[ ] ( ) ++ -- ! ~ instanceof * / % + - << >> >>> <> < = > \ == != &^& & || ? := op= 

不必记优先级,尽量的使用括号来实现运算次序,提高程序可读性。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics