java单目取正_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=

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


版权声明:本文为weixin_39907316原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。