java 运算符

来源:互联网 发布:libsvm c语言 使用 编辑:程序博客网 时间:2024/06/05 09:02

1:运算顺序从左到右,赋值顺序从右到左。

2:单操作运算符,++(自动递增)、--(自动递减),+(取正)、-(取负)、~(按位取反)、!(逻辑取反)、()(造型)

  a:自动递增,自动递减放前先加减在赋值,反之先赋值在加减

  b:取正负和算数加减相同,编译器可根据上下文自动判断属于什么运算符

  c:按位运算符对一个整数型操作数进行按位操作,生成与输入值相反,输入0则输出1。

  d:逻辑运算对布尔类型进行取反操作

  e:造型运算符用于强转类型

public static void main(String arr[]){int x =1;int y=++x;System.out.println(x+"__"+y);x =1;int z=x++;System.out.println(x+"__"+z);x =1;y=--x;System.out.println(x+"__"+y);x =1;z=x--;System.out.println(x+"__"+z);x=1;y=~x;System.out.println(y);boolean x_ = true;boolean y_ = !x_;System.out.println(y_);x=1;double t=(double)x;System.out.println(t);}
2__22__10__00__1-2false1.0
3:算数运算符,+(加)、-(减)、*(乘)、/(除)、%(取模)

  a:加减用于基本数据类型,运算结果数据溢出不会抛异常,会影响精度。+可以用作两个字符串链接。

  b:乘运算用于基本数据类型,运算结果数据溢出不会抛异常,会影响精度。

  c:除运算用于基本数据类型,除数为0,操作数中有一个浮点数输出Infinity,否则抛出异常 java.lang.ArithmeticException。

  d:取模运算用于基本数据类型,除数为0,操作数中有一个浮点数输出NaN,否则抛出异常 java.lang.ArithmeticException。取模运算正负与被除数相同。

4:位移运算符,<<(左移位)、>>(右移位)、>>>(无符号右移位)

  a:移位操作必须是整数型(字符型,字节型,短整型,整型,长整形),移位运算会将字符型,字节型,短整型转化为整形。

  b:带符号左移位高位舍弃低位补0(相当于乘2)。带符号右移位低位舍弃高位补0或1(相当于除2)。无符号右移位低位舍弃高位补0。

public static void main(String arr[]){//0000 0000 0000 0000 0000 0000 0000 0001 //00 0000 0000 0000 0000 0000 0000 000100int y=1<<2;System.out.println(y);//0000 0000 0000 0000 0000 0000 0000 0101//000000 0000 0000 0000 0000 0000 0000 01y=5>>2;System.out.println(y);//最高位0为正 1为负 -1则为1000 0000 0000 0000 0000 0000 0000 0001//补码:取反+1 0000 0000 0000 0000 0000 0000 0000 0001//1111 1111 1111 1111 1111 1111 1111 1111//0011 1111 1111 1111 1111 1111 1111 1111y=-1>>>2;System.out.println(y);}
5:比较运算符:<(小于)、<=(小于等于)、>(大于)>=(大于等于)、==(等于)!=(不等于)

  a:==,!= 判断的是对象的引用值即内存地址。

public static void main(String arr[]){final String a="a";String b ="b";String c ="ab";System.out.println(a+b==c);}
false
6:按位运算符:&(按位与)、|(按位或)、^(按位异或)、~(按位取反)

public static void main(String arr[]){//0000 0000 0000 0000 0000 0000 0000 0001int x=1;//0000 0000 0000 0000 0000 0000 0000 0010int y=2;//两个操作数中位都为1,结果才为1,否则结果为0//0000 0000 0000 0000 0000 0000 0000 0000System.out.println(x&y);//两个位只要有一个为1,那么结果就是1,否则就为0//0000 0000 0000 0000 0000 0000 0000 0011System.out.println(x|y);//如果位为0,结果是1,如果位为1,结果是0//1111 1111 1111 1111 1111 1111 1111 1110//取反+1 0000 0000 0000 0000 0000 0000 0000 0010//1111 1111 1111 1111 1111 1111 1111 1101//取反+1 0000 0000 0000 0000 0000 0000 0000 0011System.out.println(~x+"_"+~y);//两个操作数的位中,相同则结果为0,不同则结果为1。//0000 0000 0000 0000 0000 0000 0000 0011System.out.println(x^y);}
03-2_-33
7:逻辑运算符:&&(逻辑与)(两个操作都为true,运行结果为true)、||(逻辑或)(两个操作至少有一个为true,运行结果为true)、!(逻辑非)(生成与输入相反值),逻辑短路特性,&&是两边同时为真则为真,如果左边为假,右边不计算。 || 是只要有一边为真 结果就为真,左边为真,右边不计算。

8:条件运算符:?:(相当于一个简化版的if else)






0 0