📅  最后修改于: 2020-09-24 02:58:14             🧑  作者: Mango
Java中的运算符是用于执行操作的符号。例如:+,-,*,/等。
Java中有许多类型的运算符,如下所示:
Operator Type | Category | Precedence |
---|---|---|
Unary | postfix | expr++ expr-- |
prefix | ++expr --expr +expr -expr ~ ! |
|
Arithmetic | multiplicative | * / % |
additive | + - |
|
Shift | shift | << >> >>> |
Relational | comparison | < > <= >= instanceof |
equality | == != |
|
Bitwise | bitwise AND | & |
bitwise exclusive OR | ^ |
|
bitwise inclusive OR | | |
|
Logical | logical AND | && |
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
}}
输出:
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
}}
输出:
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
}}
输出:
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
}}
输出:
class OperatorExample{
public static void main(String args[]){
System.out.println(10*10/5+3-1*4/2);
}}
输出:
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
}}
输出:
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
}}
输出:
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);
}}
输出:
如果第一个条件为假,则逻辑&&运算符不会检查第二个条件。仅在第一个条件为真时,它才检查第二个条件。
按位&运算符始终检查两个条件,无论第一个条件为true还是false。
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
int c=20;
System.out.println(a
输出:
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
int c=20;
System.out.println(a
输出:
逻辑||如果第一个条件为真,运算符不会检查第二个条件。仅在第一个条件为假时,它才检查第二个条件。
按位|运算符始终检查两个条件,无论第一个条件为真还是假。
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
int c=20;
System.out.println(a>b||ab|ab||a++b|a++
输出:
JavaTernary运算符用作if-then-else语句的一种衬里替换,并且在Java编程中使用很多。它是唯一使用三个操作数的条件运算符。
class OperatorExample{
public static void main(String args[]){
int a=2;
int b=5;
int min=(a
输出:
另一个例子:
class OperatorExample{
public static void main(String args[]){
int a=10;
int b=5;
int min=(a
输出:
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);
}}
输出:
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);
}}
输出:
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);
}}
输出:
类型转换后:
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);
}}
输出: