标签:另一个 operator body 计算 static 问题 print 布尔逻辑 str
Java 语言支持如下运算符:
算术运算符: +,-,*,/,%,++
赋值运算符 =
关系运算符: >,<,>=,<=,==,!= instanceof
逻辑运算符: &&,||,!
位运算符: &,|,^,~ , >>,<<,>>>
条件运算符 ?
扩展赋值运算符:+=,-=,*=,/=
int a = 3; int b = a++; //执行完后,b=3。先给b赋值,再自增。 int c = ++a; //执行完后,c=5。先自增,再给b赋值
注意:java中的乘幂处理:
int a = 3^2; //java中不能这么处理, ^是异或符号。 double b = Math.pow(3, 2);
整数运算:
如果两个操作数有一个为Long, 则结果也为long
没有long时,结果为int。即使操作数全为shot,byte,结果也是int.
浮点运算:
如果两个操作数有一个为double, 则结果为double.
只有两个操作数都是float, 则结果才为float.
逻辑与:&&和&,逻辑或:||和|,逻辑非:!。
逻辑与和逻辑或采用短路的方式。从左到右计算,如果确定值则不会再计算下去。
逻辑与只要有一个为false, 则直接返回false.
逻辑或只要有一个为true, 则直接返回true;
boolean c = 1>2&&2>(3/0);
~ -- 取反 & -- 按位与
| -- 按位或 ^ -- 按位异或
<<:左移运算符, >>:右移运算符 >>>:无符号移位运算符
右移一位相当于除2取商。
左移一位相当于乘2。
int a = 3*2*2; int b = 3<<2; //相当于:3*2*2; int a = 12/2/2; int b = 12>>2;
运算符 |
用法举例 |
等效的表达式 |
+= |
a += b |
a = a+b |
-= |
a -= b |
a = a-b |
*= |
a *= b |
a = a*b |
/= |
a /= b |
a = a/b |
%= |
a %= b |
a = a%b |
“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接。
三目条件运算符,语法格式:
x ? y : z
其中 x 为 boolean 类型表达式,先计算 x 的值,若为true,则整个三目运算的结果为表达式 y 的值,否则整个运算结果为表达式 z 的值。
运算符优先级的问题:
|
. ( ) { } ; , |
L to R |
* / % |
L to R |
+ - |
L to R |
<< >> >>> |
L to R |
< > <= >= instanceof |
L to R |
== != |
L to R |
& |
L to R |
^ |
L to R |
| |
L to R |
&& |
L to R |
|| |
R to L |
? : |
R to L |
= *= /= %= |
代码示意:
public class TestOperator{ public static void main(String[] agrs){ //简单运算符 int a = 1; int b = 2; int c = a+b; System.out.println("c的值为:"+c); //一元运算符 int d = 1; int e =d++; //执行完后,d=1。先给e赋值,再自增 int f =++d; //执行完后,f=3。先自增,然后再赋值,这里自增2次,在e那已经自增一次。 System.out.println("e的值为:"+e); System.out.println("f的值为:"+f); //位运算符 int m = 2; int n = 4; System.out.println(m&n); System.out.println(m|n); System.out.println(~n); System.out.println(m^n); //三目运算符 int a1 = 10; int a2 = 20; System.out.println((a1>a2)?false:true); } }
标签:另一个 operator body 计算 static 问题 print 布尔逻辑 str
原文地址:http://www.cnblogs.com/OliverQin/p/6710904.html