橘子味的心
标题:Java运算符

java中的运算符是用于执行运算(加,减,乘,除等)操作的符号。例如:+-*/等。

Java中有许多类型的运算符,如下所示:

  • 一元运算符
  • 算术运算符
  • 移位运算符
  • 关系运算符
  • 按位运算符
  • 逻辑运算符
  • 三元运算符
  • 分配运算符
运算符 优先级
后缀 expr++expr--
一元 ++expr--expr+expr-expr~!
乘、除法 *, /,%
加、减法 +-
移位 <<>>>>>
关系 <><=>=instanceof
相等 ==!=
按位与 &
按位异或 ^
按位或
逻辑与 &&
逻辑或
三元 ? :
赋值 =+=-=*=/=%=&=^=<<=>>=>>>=

下面分别来看上述运行算的示例:

1. Java一元运算符示例:++ 和 —

  1. class OperatorExample{
  2. public static void main(String args[]){
  3. int x=10;
  4. System.out.println(x++);//10 (11)
  5. System.out.println(++x);//12
  6. System.out.println(x--);//12 (11)
  7. System.out.println(--x);//10
  8. }
  9. }
  10. Java

输出结果如下:

2. Java一元运算符示例2:++ 和 —

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 10;
  4. int b = 10;
  5. System.out.println(a++ + ++a);// 10+12=22
  6. System.out.println(b++ + b++);// 10+11=21
  7.  
  8. }
  9. }
  10. Java

输出结果如下:

3. Java一元运算符示例3:〜 和 !

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 10;
  4. int b = -10;
  5. boolean c = true;
  6. boolean d = false;
  7. System.out.println(~a);// -11 (minus of total positive value which
  8. // starts from 0)
  9. System.out.println(~b);// 9 (positive of total minus, positive starts
  10. // from 0)
  11. System.out.println(!c);// false (opposite of boolean value)
  12. System.out.println(!d);// true
  13. }
  14. }
  15. Java

输出结果如下:

  1. -11
  2. 9
  3. false
  4. true
  5. Java

4. Java算术运算符示例

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 10;
  4. int b = 5;
  5. System.out.println(a + b);// 15
  6. System.out.println(a - b);// 5
  7. System.out.println(a * b);// 50
  8. System.out.println(a / b);// 2
  9. System.out.println(a % b);// 0
  10. }
  11. }
  12. Java

输出结果如下:

5. Java算术运算符示例:表达式

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. System.out.println(10 * 10 / 5 + 3 - 1 * 4 / 2);
  4. }
  5. }
  6. Java

输出结果如下:

6. java的移位运算实例:左移

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. System.out.println(10 << 2);// 10*2^2=10*4=40
  4. System.out.println(10 << 3);// 10*2^3=10*8=80
  5. System.out.println(20 << 2);// 20*2^2=20*4=80
  6. System.out.println(15 << 4);// 15*2^4=15*16=240
  7. }
  8. }
  9. Java

输出结果如下:

  1. 40
  2. 80
  3. 80
  4. 240
  5. Java

7. java的移位运算实例:右移

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. System.out.println(10 >> 2);// 10/2^2=10/4=2
  4. System.out.println(20 >> 2);// 20/2^2=20/4=5
  5. System.out.println(20 >> 3);// 20/2^3=20/8=2
  6. }
  7. }
  8. Java

输出结果如下:

8. java的移位运算实例:>> 和 >>>

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. // For positive number, >> and >>> works same
  4. System.out.println(20 >> 2);
  5. System.out.println(20 >>> 2);
  6. // For nagative number, >>> changes parity bit (MSB) to 0
  7. System.out.println(-20 >> 2);
  8. System.out.println(-20 >>> 2);
  9. }
  10. }
  11. Java

输出结果如下:

  1. 5
  2. 5
  3. -5
  4. 1073741819
  5. Java

9. Java AND运算符示例:逻辑&&和位&

如果第一个条件为假(false),则逻辑&&运算符不检查第二个条件。它只有在第一个条件为真(true)时才会检查第二个条件。

按位与(&)运算符总是检查两个条件,不管第一个条件是真还是假。

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 10;
  4. int b = 5;
  5. int c = 20;
  6.  
  7. System.out.println(a < b && a < c);// false && true = false
  8. System.out.println(a < b & a < c);// false & true = false
  9.  
  10. }
  11. }
  12. Java

输出结果如下:

  1. false
  2. false
  3. Java

10. Java与运行算实例:逻辑&&与按位&

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 10;
  4. int b = 5;
  5. int c = 20;
  6. System.out.println(a < b && a++ < c);// false && true = false
  7. System.out.println(a);// 10 because second condition is not checked
  8. System.out.println(a < b & a++ < c);// false && true = false
  9. System.out.println(a);// 11 because second condition is checked
  10. }
  11. }
  12. Java

输出结果如下:

  1. false
  2. 10
  3. false
  4. 11
  5. Java

11. Java 或运算符示例:逻辑|| 和按位 |

逻辑|| 如果第一个条件为真(true),运算符不检查第二个条件。它只在第一个条件为假(false)时才会检查第二个条件。

按位或 | 运算符总是检查两个条件,不管第一个条件是真(true)还是假(false)。

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 10;
  4. int b = 5;
  5. int c = 20;
  6. System.out.println(a > b || a < c);// true || true = true
  7. System.out.println(a > b | a < c);// true | true = true
  8. // || vs |
  9. System.out.println(a > b || a++ < c);// true || true = true
  10. System.out.println(a);// 10 because second condition is not checked
  11. System.out.println(a > b | a++ < c);// true | true = true
  12. System.out.println(a);// 11 because second condition is checked
  13. }
  14. }
  15. Java

输出结果如下:

  1. true
  2. true
  3. true
  4. 10
  5. true
  6. 11
  7. Java

12. Java 或运算符示例:逻辑|| 和按位 |

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 2;
  4. int b = 5;
  5. int min = (a < b) ? a : b;
  6. System.out.println(min);
  7. }
  8. }
  9. Java

输出结果如下:

另一个例子:

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 10;
  4. int b = 5;
  5. int min = (a < b) ? a : b;
  6. System.out.println(min);
  7. }
  8. }
  9. Java

输出结果如下:

13. Java分配运算符示例

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. int a = 10;
  4. int b = 20;
  5. a += 4;// a=a+4 (a=10+4)
  6. b -= 4;// b=b-4 (b=20-4)
  7. System.out.println(a);
  8. System.out.println(b);
  9. }
  10. }
  11. Java

输出结果如下:

14. Java分配运算符示例:相加short类型数据

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. short a = 10;
  4. short b = 10;
  5. // a+=b;//a=a+b internally so fine
  6. a = a + b;// 编译时错误,因为 10+10=20 现在是 int 类型
  7. System.out.println(a);
  8. }
  9. }
  10. Java

输出结果如下:

  1. 编译时错误....
  2. Java

类型转换后:

  1. class OperatorExample {
  2. public static void main(String args[]) {
  3. short a = 10;
  4. short b = 10;
  5. a = (short) (a + b);// 20 which is int now converted to short
  6. System.out.println(a);
  7. }
  8. }
  9. Java

输出结果如下: