本文概要
- Java的运算符优先级
有许多类型Java中的运营商,其给出如下:
- 一元运算符,
- 算术运算符,
- 移位运算符,
- 关系运算符
- 位运算符,
- 逻辑运算符,
- 三元运营商和
- 赋值运算符。
操作类型 | 类别 | 优先权 |
---|---|---|
Unary | postfix | EXPR ++ expr– |
prefix | ++expr --expr +expr -expr ~ ! | |
算术 | multiplicative | * / % |
添加 | + - | |
Shift | 转移 | <
<
>
>
>
>
>
|
Relational | 对照 | <
>
<
= >
= instanceof |
equality | ==!= | |
Bitwise | bitwise AND | & |
bitwise exclusive OR | ^ | |
按位或 | | | |
Logical | 逻辑与 | &
&
|
logical OR | || | |
Ternary | ternary | ? : |
Assignment | assignment | = + = – = * = / =%=&= ^ = | = < < = > > = > > > = |
Java的一元运算符只需要一个操作数。一元运算符是用来执行各种操作即:
- 递增/递减由一个值
- 否定的表达
- 反转布尔值
class OperatorExample{
public static void main(String args[]){
int x=10;
System.out.println(x++);
//10 (11)
System.out.println(++x);
//12
System.out.println(x--);
//12 (11)
System.out.println(--x);
//10
}}
输出:
10
12
12
10
爪哇元运算符实施例2:++和 –
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=10;
System.out.println(a++ + ++a);
//10+12=22
System.out.println(b++ + b++);
//10+11=21}}
输出:
22
21
Java的元运算符例子:?和!
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=-10;
boolean c=true;
boolean d=false;
System.out.println(~a);
//-11 (minus of total positive value which starts from 0)
System.out.println(~b);
//9 (positive of total minus,positive starts from 0)
System.out.println(!c);
//false (opposite of boolean value)
System.out.println(!d);
//true
}}
输出:
-11
9
false
true
Java的算术运算符
Java的arithmatic运营商被用来进行加,减,乘,除。他们作为基本的数学运算。
Java的算术运算符示例
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
System.out.println(a+b);
//15
System.out.println(a-b);
//5
System.out.println(a*b);
//50
System.out.println(a/b);
//2
System.out.println(a%b);
//0
}}
输出:
15
5
50
2
0
Java的算术运算符示例:表达式
class OperatorExample{
public static void main(String args[]){
System.out.println(10*10/5+3-1*4/2);
}}
输出:
21
Java的向左移位运算符
在Java左移位运算符< < 用来移入所有比特中的值的指定次数的左侧。
Java的左移运算实例
class OperatorExample{
public static void main(String args[]){
System.out.println(10<
<
2);
//10*2^2=10*4=40
System.out.println(10<
<
3);
//10*2^3=10*8=80
System.out.println(20<
<
2);
//20*2^2=20*4=80
System.out.println(15<
<
4);
//15*2^4=15*16=240
}}
输出:
40
80
80
240
Java的向右移位运算符
Java的右移位运算符> > 用于通过正确的操作数指定的位数向左操作数的值右移。
Java的向右移位运算实例
class OperatorExample{
public static void main(String args[]){
System.out.println(10>>2);
//10/2^2=10/4=2
System.out.println(20>>2);
//20/2^2=20/4=5
System.out.println(20>>3);
//20/2^3=20/8=2
}}
输出:
2
5
2
Java的移位运算实例:> > VS > > >
class OperatorExample{
public static void main(String args[]){
//For positive number,>> and >>> works same
System.out.println(20>>2);
System.out.println(20>>>2);
//For negative number,>>> changes parity bit (MSB) to 0
System.out.println(-20>>2);
System.out.println(-20>>>2);
}}
输出:
5
5
-5
1073741819
Java和操作实例:逻辑& & 和按位&
逻辑& & 运算符不检查第二个条件,如果第一个条件是假的。它检查只有第一个是真正的第二个条件。
按位与操作者总是检查这两个条件的第一条件是真还是假。
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
int c=20;
System.out.println(a<
b&
&
a<
c);
//false &
&
true = false
System.out.println(a<
b&
a<
c);
//false &
true = false
}}
输出:
false
false
Java和操作实例:逻辑& & VS按位&
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
int c=20;
System.out.println(a<
b&
&
a++<
c);
//false &
&
true = false
System.out.println(a);
//10 because second condition is not checked
System.out.println(a<
b&
a++<
c);
//false &
&
true = false
System.out.println(a);
//11 because second condition is checked
}}
输出:
false
10
false
11
Java或操作实例:逻辑||和按位|
逻辑||运营商不检查第二个条件,如果第一个条件是真实的。它检查只有第一个是假的第二个条件。
按位|运营商总是检查这两个条件的第一条件是真还是假。
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
int c=20;
System.out.println(a>b||a<
c);
//true || true = true
System.out.println(a>b|a<
c);
//true | true = true
//|| vs |
System.out.println(a>b||a++<
c);
//true || true = true
System.out.println(a);
//10 because second condition is not checked
System.out.println(a>b|a++<
c);
//true | true = true
System.out.println(a);
//11 because second condition is checked
}}
输出:
true
true
true
10
true
11
Java的三元运算符
Java的三元运营商作为一个内衬替代的if-then-else语句,并使用了很多的Java编程。它是唯一有条件的经营者这需要三个操作数。
Java的三元运算符实例
class OperatorExample{
public static void main(String args[]){
int a=2;
int b=5;
int min=(a<
b)?a:b;
System.out.println(min);
}}
输出:
2
另一个例子:
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
int min=(a<
b)?a:b;
System.out.println(min);
}}
输出:
5
Java的赋值运算符
Java的赋值运算符是最常见的操作之一。它用于其右边的值赋给它左边的操作数。
Java的赋值运算符实例
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=20;
a+=4;
//a=a+4 (a=10+4)
b-=4;
//b=b-4 (b=20-4)
System.out.println(a);
System.out.println(b);
}}
输出:
14
16
Java的赋值运算符实例
class OperatorExample{
public static void main(String[] args){
int a=10;
a+=3;
//10+3
System.out.println(a);
a-=4;
//13-4
System.out.println(a);
a*=2;
//9*2
System.out.println(a);
a/=2;
//18/2
System.out.println(a);
}}
输出:
13
9
18
9
Java的赋值运算符示例:将短
class OperatorExample{
public static void main(String args[]){
short a=10;
short b=10;
//a+=b;
//a=a+b internally so fine
a=a+b;
//Compile time error because 10+10=20 now int
System.out.println(a);
}}
输出:
Compile time error
类型转换后:
class OperatorExample{
public static void main(String args[]){
short a=10;
short b=10;
a=(short)(a+b);
//20 which is int now converted to short
System.out.println(a);
}}
【Java中的操作符】输出:
20
推荐阅读
- Java中的Unicode系统
- Java数据类型
- Java变量
- JVM(Java虚拟机介绍)
- JDK、JRE和JVM之间的区别
- 如何在Java中设置路径
- 简单Java程序(Hello World示例)
- Java程序工作的内部细节
- Java和C++的对比