目录
一 运算符分类
算术运算符 | 二元运算符 | +,-,*,/,% |
一元运算符 | ++,-- | |
赋值运算符 | = | |
扩展运算符 | +=,-=,*=,/= | |
关系运算符 | >,<,>=,<=,==,!= instanceof | |
逻辑运算符 | &&,||,!,^ | |
位运算符 | &,|,^,~ , >>,<<,>>> | |
条件运算符 | ? : | |
字符串连接符 | + |
二 运算符的优先级
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、-- | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |
三 算数运算符
运 算 符 | 名 称 | 说 明 | 例 子 |
---|---|---|---|
+ | 加 | 求 a 加 b 的和 还可用于 String 类型,进行字符串连接操作 | a + b |
- | 减 | 求 a 减 b 的差 | a - b |
* | 乘 | 求 a 乘以 b 的积 | a * b |
/ | 除 | 求 a 除以 b 的商 | a / b |
% | 取余 | 求 a 除以 b 的余数 | a % b |
- | 取反符号 | 取反运算 | b=-a |
++ | 自加一 | 先取值再加一,或先加一再取值 | a++ 或 ++a |
-- | 自减一 | 先取值再减一,或先减一再取值 | a-- 或 --a |
整数运算:
1. 如果两个操作数有一个为Long, 则结果也为long。
2. 没有long时,结果为int。即使操作数全为short,byte,结果也是int。
浮点运算:
3. 如果两个操作数有一个为double,则结果为double。
4. 只有两个操作数都是float,则结果才为float。
int x=4;
int y=3;
float z1 = x/y;
System.out.println("z1="+z1); //输出:1.0
float z2 = (float) x/y;
float z3 = x/(float) y;
float z4 = (float) x/(float) y;
System.out.println("z2="+z2); //输出:1.3333334
System.out.println("z3="+z3); //输出:1.3333334
System.out.println("z4="+z4); //输出:1.3333334
int x1 = 3;
int x2 = x1++; //先给x2赋值,x1再自增
System.out.println("x1="+x1); // 输出4
System.out.println("x2="+x2); // 输出3
int y1 = 3;
int y2 = ++y1; //y1先自增,再给y2赋值
System.out.println("y1="+y1); // 输出4
System.out.println("y2="+y2); // 输出4
四 赋值和扩展运算符
运算符 | 用法举例 | 等效的表达式 |
---|---|---|
+= | 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 |
五 关系运算符
运算符 | 含义 | 示例 |
---|---|---|
== | 等于 | a==b |
!= | 不等于 | a!=b |
> | 大于 | a>b |
< | 小于 | a<b |
>= | 大于或等于 | a>=b |
<= | 小于或等于 | a<=b |
==、!= 是所有(基本和引用)数据类型都可以使用
> 、>=、 <、 <= 仅针对数值类型(byte/short/int/long,float/double)以及char
六 逻辑运算符
运算符 | 说明 | |
---|---|---|
逻辑与 | &( 与) | 两个操作数为true,结果才是true,否则是false |
逻辑或 | |(或) | 两个操作数有一个是true,结果就是true |
短路与 | &&( 与) | 只要有一个为false,则直接返回false |
短路或 | ||(或) | 只要有一个为true, 则直接返回true |
逻辑非 | !(非) | 取反:!false为true,!true为false |
逻辑异或 | ^(异或) | 相同为false,不同为true |
boolean a = 1>2 && 2>(3/0);
System.out.println(a);
//1>2的结果为false,那么整个表达式的结果即为false,将不再计算2>(3/0)
boolean b = 1>2 & 2>(3/0);
System.out.println(b);
//1>2的结果为false,但还要计算2>(3/0),因为0不能做除数,所以会输出异常信息
七 位运算符
Java 定义的位运算直接对整数类型的位进行操作,这些整数类型包括byte,short,int,long和char
位运算符主要用来对操作数二进制的位进行运算。按位运算表示按每个二进制位(bit)进行计算,其操作数和运算结果都是整型值
详见:http://c.biancheng.net/view/784.html
八 条件运算符
result = <expression> ? <statement1> : <statement3>;
// expression 是一个布尔表达式
// 当 expression 为真时,执行 statement1, 否则就执行 statement3
int x,y,z;
x = 6;
y = 2;
z = x>y ? x-y : x+y;
System.out.println(z);
// 输出4