3.4 JAVA运算符
Java语言中的表达式是由运算符与操作数组合而成的,所谓的运算符就是用来做运算的符号。
在Java中的运算符,基本上可分为算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、转型运算符等。
1、算术运算符
算术运算符包括通常的加(+)、减(一)、乘(*)、除(/)、取模(%),完成整型或浮点型数据的算术运算。许多语言中的取模运算只能用于整型数,Java对此有所扩展,它允许对浮点数进行取模操作。此外,算术运算符还有“++”、“--”两种,分别表示加1和减1操作。与C++类似,“++i”和“i++”的执行顺序稍有不同,前者在i使用之前加1,后者先使用再加1。“--i”与“i--”的情况与此类似。
例子:
public class A {
public static void main(String[] args){
int a = 15;
int b = 2;
double c = 2;
System.out.println(a + "/" + b + "=" + (a / b));
System.out.println(a + "%"+ b + "=" + (a % b));
System.out.println(a + "/" + c + "=" + (a / c));
System.out.println(a + "%" + c + "=" + (a % c));
System.out.println("++a = "+ ++a);
System.out.println("b++ = "+ b++);
}
}
public static void main(String[] args){
int a = 15;
int b = 2;
double c = 2;
System.out.println(a + "/" + b + "=" + (a / b));
System.out.println(a + "%"+ b + "=" + (a % b));
System.out.println(a + "/" + c + "=" + (a / c));
System.out.println(a + "%" + c + "=" + (a % c));
System.out.println("++a = "+ ++a);
System.out.println("b++ = "+ b++);
}
}
输出结果:
15%2=1
15/2.0=7.5
15%2.0=1.0
++a = 16
b++ = 2
15/2.0=7.5
15%2.0=1.0
++a = 16
b++ = 2
2、关系运算符
关系运算符用来比较两个值,包括大于(>)、大于等于(>=)、小于(<)、小于等于(<=)、等于(==)、不等于(!=::)6种。关系运算符都是二元运算符,运算的结果是一个逻辑值。
例子:
public class A {
public static void main(String[] args){
boolean x, y, z, x1, y1;
int a = 15;
int b = 2;
double c =15;
x = a > b; //true;
y = a < b; //false;
z = a != b; //true;
x1 = a>= b;
y1 = a == c;
System.out.println("x =" + x);
System.out.println("y =" + y);
System.out.println("z =" + z);
System.out.println("x1 =" + x1);
System.out.println("y1 =" + y1);
}
}
public static void main(String[] args){
boolean x, y, z, x1, y1;
int a = 15;
int b = 2;
double c =15;
x = a > b; //true;
y = a < b; //false;
z = a != b; //true;
x1 = a>= b;
y1 = a == c;
System.out.println("x =" + x);
System.out.println("y =" + y);
System.out.println("z =" + z);
System.out.println("x1 =" + x1);
System.out.println("y1 =" + y1);
}
}
输出结果:
x =true
y =false
z =true
x1 =true
y1 =true
y =false
z =true
x1 =true
y1 =true
3、逻辑运算符
逻辑运算符包括逻辑与(&&)、逻辑或(||)和逻辑非(!)。前两个是二元运算符,后一个是一元运算符。
Java对逻辑与和逻辑或提供短路操作功能。进行运算时,先计算运算符左侧表达式的值,如果使用该值能得到整个表达式的值,则跳过运算符右侧表达式的计算,否则计算运算符右侧表达式,并得到整个表达式的值。
关系表:
逻辑与(&&)关系表 | 逻辑非(!)关系表 | 逻辑或(||)关系表 | |||||||
A | B | A&&B | A | !A | A | B | A||B | ||
false | false | false | false | true | false | false | false | ||
false | true | false | true | false | false | true | true | ||
true | false | false | true | false | true | ||||
true | true | false | true | true | true |
例子:
public class A {
public static void main(String[] args){
boolean x, y, z, a, b;
a = 'a' > 'b';
b = 'R' != 'r';
x = !a;
y = a && b;
z = a || b;
System.out.println("x =" + x);
System.out.println("y =" + y);
System.out.println("z =" + z);
}
}
public static void main(String[] args){
boolean x, y, z, a, b;
a = 'a' > 'b';
b = 'R' != 'r';
x = !a;
y = a && b;
z = a || b;
System.out.println("x =" + x);
System.out.println("y =" + y);
System.out.println("z =" + z);
}
}
输出结果:
x =true
y =false
z =true
y =false
z =true
4、位运算符
位运算符用来对二进制位进行操作,包括按位取反(~)、按位与(&)、按位或(I)、异或(‘)、右移(》)、左移(《)及无符号右移(>》)。位运算符只能对整型和字符型数据进行操作。
左移位运算符,用符号“<<”表示。它是将运算符左边的对象向左移运动运算符右边指定的位数(在低位补0)。
Java提供两种右移运算符。
“有符号”右移运算符,用符号“>>”表示。它是将运算符左边的运算对象向右移动运算符右侧指定的位数。它使用了“符号扩展”机制,也就是说,如果值为正,在高位补0,若为负,则在高位补1。
“无符号”右移运算符,用符号“>>>”表示。它同“有符号”右移运算符的移动规则是一样的,惟一的区别就是:“无符号”右移运算符,它采用了“零扩展”,也就是说,无论值为正负,都在高位补0。
例子:
public class A {
public static void main(String[] args){
int a = 15;
int b = 2;
int x = a << b;
int y = a >> b;
int z = a >>> b;
System.out.println(a + "<<" + b + "=" + x );
System.out.println(a + ">>" + b + "=" + y);
System.out.println(a + ">>>" + b + "=" + z);
}
}
public static void main(String[] args){
int a = 15;
int b = 2;
int x = a << b;
int y = a >> b;
int z = a >>> b;
System.out.println(a + "<<" + b + "=" + x );
System.out.println(a + ">>" + b + "=" + y);
System.out.println(a + ">>>" + b + "=" + z);
}
}
输出结果:
15<<2=60
15>>2=3
15>>>2=3
15>>2=3
15>>>2=3
5、赋值运算符
赋值运算符是程序中最常用的运算符了,只要有变量的声明,就要有赋值运算。如a = 3。
赋值运算一览表 | ||
运算符 | 一般表示法 | Java语言表示法 |
+ = | 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 = a >> b | a >>= b |
>>> = | a = a >>> b | a >>>= b |
6、转型运算符
例子:
public class A {
public static void main(String[] args){
int x ;
double y;
x = (int)22.5 + (int)34.7;?
x = !a;
y = (double)x;
System.out.println("x =" + x);
System.out.println("y =" + y);
}
}
public static void main(String[] args){
int x ;
double y;
x = (int)22.5 + (int)34.7;?
x = !a;
y = (double)x;
System.out.println("x =" + x);
System.out.println("y =" + y);
}
}
输出结果:
x =56
y =56.0
y =56.0
Java运算符优先级参考图表
优先级 | 运算符 | 结合性 |
1 | () [] . | 从左到右 |
2 | ! +(正) -(负) ~ ++ -- | 从右到左 |
3 | * / % | 从左到右 |
4 | +(加) -(减) | 从左到右 |
5 | << >> >>> | 从左到右 |
6 | <(小于)、 <=(小于等于)、 >(大于)、 >=(大于等于)、 instanceof | 从左到右 |
7 | == != | 从左到右 |
8 | &(按位与) | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | ?: | 从右到左 |
14 | = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= | 从右到左 |