一.算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。
下面列出了所有的算术运算符:
public class Test {
??? public static void main(String[] args) {
??? ??? int a=20;
??? ??? int b=40;
??????? 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("a++="+(++a));//先加后用
??????? System.out.println("b--="+(b--));//先用后减
??????? System.out.println("b="+b);
??? }
}
运行结果:
a+b=60
a-b=-20
a*b=800
b/a=2
b%a=0
a++=21
b--=40
b=39
?
二.关系运算符
操作符 ??? 描述 ??
== ????????? 检查如果两个操作数的值是否相等,如果相等则条件为真。 ???
=! ??????? 检查如果两个操作数的值是否相等,如果值不相等则条件为真。
>? ?????????? 检查左操作数的值是否大于右操作数的值,如果是那么条件为真。 ?
<? ?????????? 检查左操作数的值是否小于右操作数的值,如果是那么条件为真。 ?
> = ???????? 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真。 ?
<= ????????? 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真。?
?
三.逻辑运算符
逻辑运算符共有三种:
1.“非”(“!”):
非运算(!)表示否定,取反,如:!true等于false、!false等于true、!2等于false、!0等于true。
2.“和”(“&&”):
和运算(&&)前后两个条件都为真时,才返回true,否则返回false。
3.“或”(“||”):
或运算(||)前后两个条件有一个为真是,返回true,都为假时,返回false。
public class Test {
?? ?public static void main(String[] args) {
?? ??? ?int a = 5;
?? ??? ?int b = 8;
?? ??? ?int c = 5;
?? ??? ?System.out.println("a>b ?" + !(a > b));
?? ??? ?System.out.println("a>b && a<b ?" + ((a > b) && (a < b)));
?? ??? ?System.out.println("a>b || a<b ?" + ((a >= b) || (a == b)));
?? ??? ?System.out.println("a>b || a=c ?" + ((a < b) || (a == c)));
?? ?}
}
运行结果:
a>b ?true
a>b && a<b ?false
a>b || a<b ?false
a>b || a=c ?true
四.位运算符
位运算符主要针对二进制,它包括了:
1.“与”("&"):
与运算(&)两个操作数的位都为 1,结果才为 1,否则结果为 0。
2.“非”("~"):
非运算(~)的操作数的位如果为 0,结果是 1,如果为 1,结果是 0。
3.“或”("|"):
或运算(|)两个操作数的位只要有一个为 1,那么结果就是 1,否则就为 0。
4.“异或”("^"):
异或运算(^)的两个操作数的位相同时结果为 0,不同时结果为 1。
public class Test {
?? ?public static void main(String[] args) {
?? ??? ???????? int a=10;//0000 0000 0000 0000 0000 0000 0000 1010
??????????????? int b=20;//0000 0000 0000 0000 0000 0000 0001 0100
??????????????? int x=30;//0000 0000 0000 0000 0000 0000 0001 1110
??????????????? int y=40;//0000 0000 0000 0000 0000 0000 0010 1000
??????????????? System.out.println("~a ="+(~a));
??????????????? System.out.println("a & b ="+(a&b));
??????????????? System.out.println("a | b ="+(a|b));
??????????????? System.out.println("x ^ y ="+(x^y));
?? ?}
}
运行结果:
~a =-11
a & b =0
a | b =30
x ^ y =54
五.移位运算符
1.左移位运算符(<<)
将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补 0)。
2.“有符号”右移位运算符(>>)
将运算符左边的运算对象向右移动运算符右侧指定的位数。
“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。
3.“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。
public class Test {
?? ?public static void main(String[] args) {
?? ??? ?//-8:1111 1111 1111 1111 1111 1111 1111 1000
??????? System.out.println("-8>>3 ="+(-8>>3));
??????? System.out.println("-8<<3 ="+(-8<<3));
??????? System.out.println("-8>>>3 ="+(-8>>>3));
?? ?}
}
运行结果:
-8>>3 =-1
-8<<3 =-64
-8>>>3 =536870911
?
六.赋值运算符
操作符 描述 例子 = 简单的赋值运算符,将右操作数的值赋给左侧操作数 C = A + B将把A + B得到的值赋给C + = 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 C + = A等价于C = C + A - = 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 C - = A等价于C = C -?
七.条件运算符
?
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。
variable x = (expression) ? value if true : value if false
?
public class Test {
??? public static void main(String[] args) {
??? ??? int a=20;
??? ??? int b=40;
??????? System.out.println((a>b)?"a>b":"a<=b");
??? }
}
运行结果:
a<=b
?
八.instanceof运算符
使用格式如下:
( Object reference variable ) instanceOf? (class/interface type)
?
public class Test {
??? public static void main(String[] args) {
??? ??? String a="It's a string.";
??????? System.out.println((a instanceof String));
??? }
}
运行结果:
true
?
运算符优先级:
类别 操作符 关联性 后缀 () [] . (点操作符) 左到右 一元 + + - !? 从右到左 乘性? * /% 左到右 加性? + - 左到右 移位? >> >>> ?<<? 左到右 关系? >> = << =? 左到右 相等? ==? != 左到右 按位与 & 左到右 按位异或 ^ 左到右 按位或 | 左到右 逻辑与 && 左到右 逻辑或 | | 左到右 条件 ?: 从右到左 赋值 = + = - = * = / =%= >> = << =&= ^ = | = 从右到左 逗号 , 左到右?
?
?
参见:http://www.w3cschool.cc/java/java-operators.html
?