Java 运算符
Java语言支持的运算符如下
- 算术运算符:+,-,*,/,%,++,–
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符 :?:
- 扩展赋值运算符:+=,-=,*=,/=
算术运算符
算术运算符 | 名称 | 说明 | 示例 |
---|---|---|---|
+ | 加 | 求a加b的和 | a+b |
- | 减 | 求a减b的差 | a-b |
* | 乘 | 求a乘以b的积 | a*b |
/ | 除 | 求a除以b的商 | a/b |
% | 模运算,取余 | 求a除以b的余数 | a%b |
示例
public class Main {
public static void main(String[] args) {
int a=10;
int b=3;
//二元运算符
System.out.println(a+b); //相加 得13
System.out.println(a-b); //相减 得7
System.out.println(a/b); //相除 得3 这里是int类型 所有直接取整
System.out.println(a%b); //取余 得1 10除以3等于3余1
}
}
注意点
整数运算中,如果两个或多个操作数当中,有long类型,结果则为long类型,其余都为int类型
示例
public class Main {
public static void main(String[] args) {
long a=1234567893214L;
int b=3088;
short c=123;
byte d=10;
System.out.println(a+b+c+d); //结果为long类型
System.out.println(b+c+d); //结果为int类型
System.out.println(c+d); //结果为int类型
}
}
自增自减运算符
算术运算符 | 名称 | 说明 |
---|---|---|
++ | 自增运算符 | 对操作数自增1 |
– | 自减运算符 | 对操作数自减1 |
自增自减运算符在前后的区别
- 自增自减运算符如果在数值或变量前,则先自增或自减,再赋值
- 自增自减运算符如果在数值或变量后,则先赋值,再自增或自减
public class Main {
public static void main(String[] args) {
int a=3;
System.out.println(a);
int b=a++;
System.out.println(b); //先赋值,在运算
int c=++a;
System.out.println(c); //先运算,在赋值
}
}
关系运算符
- 关系运算符返回值为布尔值
- 只支持左右两边操作数是数值类型
关系运算符 | 名称 | 说明 | 示例 | 结果 |
---|---|---|---|---|
> | 大于 | 如果a的值大于b的值, 则返回 true | 2>3 | false |
< | 小于 | 如果a的值小于b的值,则返回true | 3<5 | true |
>= | 大于等于 | 如果a的值大于等于b的值, 则返回 true | 2>=2 | ture |
<= | 小于等于 | 如果a的值小于等于b的值, 则返回 true | 4<=7 | false |
== | 等于 | 如果a的值等于b的值,则返回true | 5==1 | false |
!= | 不等于,取反 | 如果a的值不等于b的值,则返回true | 4!=4 | false |
实例
public class Main {
public static void main(String[] args) {
int a=20;
int b=10;
int c=30;
System.out.println(a>c);
System.out.println(a<c);
System.out.println(a==c);
System.out.println(a!=b);
}
}
逻辑运算符
逻辑运算符 | 名称 | 说明 |
---|---|---|
&& | 与 | 当两个变量都为真时,则结果为真 |
|| | 或 | 当两个变量有一个为真时,则结果为真 |
! | 非 | 当变量为假时,则结果才为真,反之 |
public class Main {
public static void main(String[] args) {
boolean a=true;
boolean b=false;
boolean c=true;
System.out.println("a:"+a);
System.out.println("b:"+b);
System.out.println("c:"+c);
System.out.println("=======================================================");
//逻辑与运算:两个变量都为真,结果才为真
System.out.println("a && b:"+(a&&b));
System.out.println("a && c:"+(a&&c));
//逻辑或运算:两个变量有一个为真,则结果为真
System.out.println("a || b:"+(a||b));
System.out.println("a || c:"+(a||c));
//如果是真,结果为假,如果是假,结果为真
System.out.println("!a:"+(!a));
System.out.println("!b:"+(!b));
}
}
短路运算
逻辑与运算:如果第一个变量为假,则直接返回假,后面的变量不会在执行
位运算符(了解即可)
- 对二进制进行计算
- 效率高
位运算符 | 名称 | 说明 | 示例 | |
& | 与 | 两个位都为1时,结果才为1 | A = 0011 1100 B = 0000 1101 | A&B=0000 1100 |
| | 或 | 两个位都为0时,结果才为0 | A|B=0011 1101 | |
^ | 异或 | 两个位相同为0,相异为1 | A^B=0011 0001 | |
~ | 取反 | 0变1,1变0 | A=0001 1100 | ~A=1110 0011 |
« | 左移 | 相当于十进制乘以2,各二进位全部左移若干位,高位丢弃,低位补0 | A=0000 0010 | A«3=0001 0000 |
» | 右移 | 相当于十进制的除以2,各二进位全部右移若干位,对无符号数,高位补0 | A=0100 0000 | A»3=0000 1000 |
三元运算符
X ? Y : Z
如果X为true,则结果为Y,否则结果为Z
public class Main {
public static void main(String[] args) {
int score=50;
//如果score 小于 60 返回 不及格 否则返回 及格
String type=score<60?"不及格":"及格";
System.out.println(type);
}
}
幂运算
- 数值的次方计算
- 使用工具类Math
- 语法:double 变量=Math.pow(数值,次方)
public class Main {
public static void main(String[] args) {
//幂运算,使用Math工具类
double a=2;
//计算2的4次方
double b=Math.pow(2,4);
System.out.println(b);
}
}
运算符的优先级
Java内的运算符存在先后顺序
先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |