Java提供了一组丰富的运算符来操作变量。无涯教程可以将所有JAVA操作符分为以下几组-
算术运算符在数学表达式中的使用方式与它们在代数中的使用方式相同。下表列出了算术运算符-
假设整数变量A=10,变量B=20,则-
Operator | Remark | Example |
---|---|---|
+ | 两个值相加 | A + B=30 |
- | 两个值相减 | A - B=-10 |
* | 两个值相乘 | A * B=200 |
/ | 两个值相除 | B/A=2 |
% | 取模操作 | B % A=0 |
++ | 递增+1 | B++ =21 |
-- | 递增-1 | B--=19 |
public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b=" + (a + b) ); System.out.println("a - b=" + (a - b) ); System.out.println("a * b=" + (a * b) ); System.out.println("b/a=" + (b / a) ); System.out.println("b % a=" + (b % a) ); System.out.println("c % a=" + (c % a) ); System.out.println("a++ =" + (a++) ); System.out.println("b-- =" + (a--) ); // 检查 d++ 和 ++d 的区别 System.out.println("d++ =" + (d++) ); System.out.println("++d =" + (++d) ); } }
这将产生以下结果-
a + b=30 a - b=-10 a * b=200 b/a=2 b % a=0 c % a=5 a++ =10 b-- =11 d++ =25 ++d =27
Java语言支持以下关系运算符,假设变量A=10,变量B=20,则-
Operator | Remark | Example |
---|---|---|
== | 相等 | (A == B) is not true. |
!= | 不相等 | (A != B) is true. |
> | 大于 | (A > B) is not true. |
< | 小于 | (A < B) is true. |
>= | 大于或等于 | (A >= B) is not true. |
<= | 小于或等于 | (A <= B) is true. |
public class Test { public static void main(String args[]) { int a = 10; int b = 20; System.out.println("a == b=" + (a == b) ); System.out.println("a != b=" + (a != b) ); System.out.println("a > b=" + (a > b) ); System.out.println("a < b=" + (a < b) ); System.out.println("b >= a=" + (b >= a) ); System.out.println("b <= a=" + (b <= a) ); } }
这将产生以下结果-
a == b=false a != b=true a > b=false a < b=true b >= a=true b <= a=false
Java定义了几个按位运算符,这些运算符可以应用于整数类型(long、int、short、char和byte)。
逐位运算符作用于位并执行逐位运算。假设a=60和b=13;现在以二进制格式,它们将如下所示:-
A=0011 1100
B=0000 1101
-----------------
a & b=0000 1100
a|b=0011 1101
a^b=0011 0001
~a?=1100 0011
Operator | Remark | Example |
---|---|---|
& | AND(和) | (A & B)=12 which is 0000 1100 |
| | OR(或) | (A | B)=61 which is 0011 1101 |
^ | XOR(异或) | (A ^ B)=49 which is 0011 0001 |
~ | 非 | (~A )=-61 which is 1100 0011 in 2's complement form due to a signed binary number. |
<< | 左移 | A << 2=240 which is 1111 0000 |
>> | 右移 | A >> 2=15 which is 1111 |
>>> | 右移补零 | A >>>2=15 which is 0000 1111 |
public class Test { public static void main(String args[]) { int a = 60; /* 60=0011 1100 */ int b = 13; /* 13=0000 1101 */ int c = 0; c = a & b; /* 12=0000 1100 */ System.out.println("a & b=" + c ); c = a | b; /* 61=0011 1101 */ System.out.println("a | b=" + c ); c = a ^ b; /* 49=0011 0001 */ System.out.println("a ^ b=" + c ); c = ~a; /*-61=1100 0011 */ System.out.println("~a=" + c ); c = a << 2; /* 240=1111 0000 */ System.out.println("a << 2=" + c ); c = a >> 2; /* 15=1111 */ System.out.println("a >> 2 =" + c ); c = a >>> 2; /* 15=0000 1111 */ System.out.println("a >>> 2=" + c ); } }
这将产生以下结果-
a & b=12 a | b=61 a ^ b=49 ~a=-61 a << 2=240 a >> 2 =15 a >>> 2=15
下表列出了逻辑运算符,假设布尔变量A=true,变量B=false,则-
Operator | Remark | Example |
---|---|---|
&& | AND | (A && B) is false |
|| | OR | (A || B) is true |
! | NOT | !(A && B) is true |
public class Test { public static void main(String args[]) { boolean a = true; boolean b = false; System.out.println("a && b=" + (a&&b)); System.out.println("a || b=" + (a||b) ); System.out.println("!(a && b)=" + !(a && b)); } }
这将产生以下结果-
a && b=false a || b=true !(a && b)=true
下面是Java语言-支持的赋值运算符
Operator | Remark | Example |
---|---|---|
= | 赋值 | C=A + B 相等于 A + B=C |
+= | 相加与赋值 | C += A 相等于 C=C + A |
-= | 相减与赋值 | C -= A 相等于 C=C – A |
*= | 相乘与赋值 | C *= A 相等于 C=C * A |
/= | 相除与赋值 | C /= A 相等于 C=C/A |
%= | 取模与赋值 | C %= A 相等于 C=C % A |
<<= | 左移与赋值 | C <<= 2 相等于 C=C << 2 |
>>= | 右移与赋值 | C >>= 2 相等于 C=C >> 2 |
&= | 按位与赋值 | C &= 2 相等于 C=C & 2 |
^= | 按位异或与赋值 | C ^= 2 相等于 C=C ^ 2 |
|= | 按位OR与赋值 | C |= 2 相等于 C=C | 2 |
public class Test { public static void main(String args[]) { int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c=a + b=" + c ); c += a ; System.out.println("c += a =" + c ); c -= a ; System.out.println("c -= a=" + c ); c *= a ; System.out.println("c *= a=" + c ); a = 10; c = 15; c /= a ; System.out.println("c /= a=" + c ); a = 10; c = 15; c %= a ; System.out.println("c %= a =" + c ); c <<= 2 ; System.out.println("c <<= 2=" + c ); c >>= 2 ; System.out.println("c >>= 2=" + c ); c >>= 2 ; System.out.println("c >>= 2=" + c ); c &= a ; System.out.println("c &= a =" + c ); c ^= a ; System.out.println("c ^= a =" + c ); c |= a ; System.out.println("c |= a =" + c ); } }
这将产生以下结果-
c=a + b=30 c += a =40 c -= a=30 c *= a=300 c /= a=1 c %= a =5 c <<= 2=20 c >>= 2=5 c >>= 2=1 c &= a =0 c ^= a =10 c |= a =10
条件运算符也称为三元运算符。这个运算符由三个操作数组成,用于计算布尔表达式。运算符的目标是决定应该将哪个值赋给变量。运算符编写为-
variable x=(expression) ? value if true : value if false
以下是一个-示例
public class Test { public static void main(String args[]) { int a, b; a = 10; b = (a == 1) ? 20: 30; System.out.println( "Value of b is : " + b ); b = (a == 10) ? 20: 30; System.out.println( "Value of b is : " + b ); } }
这将产生以下输出-
Value of b is : 30 Value of b is : 20
是否属于特定类型(类型或接口类型)。instanceof运算符被写为-
(object reference variable ) instanceof (class/interface type)
public class Test { public static void main(String args[]) { String name = "James"; //following will return true since name is type of String boolean result = name instanceof String; System.out.println( result ); } }
这将产生以下输出-
true
是与右侧类型兼容的赋值,则此运算符仍将返回TRUE。以下是另一个示例-
class Vehicle {} public class Car extends Vehicle { public static void main(String args[]) { Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println( result ); } }
这将产生以下输出-
true
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)