📜  Java-基本运算符

📅  最后修改于: 2020-11-15 04:15:50             🧑  作者: Mango


Java提供了一组丰富的运算符来操作变量。我们可以将所有Java运算符分为以下几类:

  • 算术运算符
  • 关系运算符
  • 按位运算符
  • 逻辑运算符
  • 赋值运算符
  • 杂项运算符

算术运算符

算术运算运算符在数学表达式中的使用方式与在代数中使用的方式相同。下表列出了算术运算运算符-

假设整数变量A持有10,变量B持有20,则-

显示范例

Operator Description Example
+ (Addition) Adds values on either side of the operator. A + B will give 30
– (Subtraction) Subtracts right-hand operand from left-hand operand. A – B will give -10
* (Multiplication) Multiplies values on either side of the operator. A * B will give 200
/ (Division) Divides left-hand operand by right-hand operand. B / A will give 2
% (Modulus) Divides left-hand operand by right-hand operand and returns remainder. B % A will give 0
++ (Increment) Increases the value of operand by 1. B++ gives 21
— (Decrement) Decreases the value of operand by 1. B– gives 19

关系运算符

Java语言支持以下关系运算符。

假设变量A持有10,变量B持有20,则-

显示范例

Operator Description Example
== (equal to) Checks if the values of two operands are equal or not, if yes then condition becomes true. (A == B) is not true.
!= (not equal to) Checks if the values of two operands are equal or not, if values are not equal then condition becomes true. (A != B) is true.
> (greater than) Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. (A > B) is not true.
< (less than) Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. (A < B) is true.
>= (greater than or equal to) Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. (A >= B) is not true.
<= (less than or equal to) Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. (A <= B) is true.

按位运算符

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

下表列出了按位运算运算符-

假设整数变量A保持60并且变量B保持13然后-

显示范例

Operator Description Example
& (bitwise and) Binary AND Operator copies a bit to the result if it exists in both operands. (A & B) will give 12 which is 0000 1100
| (bitwise or) Binary OR Operator copies a bit if it exists in either operand. (A | B) will give 61 which is 0011 1101
^ (bitwise XOR) Binary XOR Operator copies the bit if it is set in one operand but not both. (A ^ B) will give 49 which is 0011 0001
~ (bitwise compliment) Binary Ones Complement Operator is unary and has the effect of ‘flipping’ bits. (~A ) will give -61 which is 1100 0011 in 2’s complement form due to a signed binary number.
<< (left shift) Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand. A << 2 will give 240 which is 1111 0000
>> (right shift) Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand. A >> 2 will give 15 which is 1111
>>> (zero fill right shift) Shift right zero fill operator. The left operands value is moved right by the number of bits specified by the right operand and shifted values are filled up with zeros. A >>>2 will give 15 which is 0000 1111

逻辑运算符

下表列出了逻辑运算符-

假设布尔变量A成立,变量B成立,则-

显示范例

Operator Description Example
&& (logical and) Called Logical AND operator. If both the operands are non-zero, then the condition becomes true. (A && B) is false
|| (logical or) Called Logical OR Operator. If any of the two operands are non-zero, then the condition becomes true. (A || B) is true
! (logical not) Called Logical NOT Operator. Use to reverses the logical state of its operand. If a condition is true then Logical NOT operator will make false. !(A && B) is true

赋值运算符

以下是Java语言支持的赋值运算符-

显示范例

Operator Description Example
= Simple assignment operator. Assigns values from right side operands to left side operand. C = A + B will assign value of A + B into C
+= Add AND assignment operator. It adds right operand to the left operand and assign the result to left operand. C += A is equivalent to C = C + A
-= Subtract AND assignment operator. It subtracts right operand from the left operand and assign the result to left operand. C -= A is equivalent to C = C – A
*= Multiply AND assignment operator. It multiplies right operand with the left operand and assign the result to left operand. C *= A is equivalent to C = C * A
/= Divide AND assignment operator. It divides left operand with the right operand and assign the result to left operand. C /= A is equivalent to C = C / A
%= Modulus AND assignment operator. It takes modulus using two operands and assign the result to left operand. C %= A is equivalent to C = C % A
<<= Left shift AND assignment operator. C <<= 2 is same as C = C << 2
>>= Right shift AND assignment operator. C >>= 2 is same as C = C >> 2
&= Bitwise AND assignment operator. C &= 2 is same as C = C & 2
^= bitwise exclusive OR and assignment operator. C ^= 2 is same as C = C ^ 2
|= bitwise inclusive OR and assignment operator. C |= 2 is same as C = C | 2

杂项运算符

Java语言支持的其他运算符很少。

条件运算符(?:)

条件运算符也称为三元运算符。该运算符由三个操作数组成,用于评估布尔表达式。运算符的目标是确定应将哪个值分配给变量。运算符写为-

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)

如果运算符左侧变量所引用的对象通过了IS-A右侧类/接口类型的检查,则结果为true。以下是一个例子-

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

Java运算符的优先级

运算符优先级确定表达式中术语的分组。这会影响表达式的求值方式。某些运算符具有更高的优先级;例如,乘法运算符的优先级比加法运算符-

例如,x = 7&plus; 3&ast; 2;这里x被赋值为13,而不是20,因为运算符&ast;具有比&plus;更高的优先级,因此它首先与3&ast;相乘。 2,然后加到7。

在此,优先级最高的运算符出现在表格的顶部,而优先级最低的运算符出现在表格的底部。在表达式中,优先级较高的运算符将首先被评估。

Category Operator Associativity
Postfix expression++ expression– Left to right
Unary ++expression –-expression +expression –expression ~ ! Right to left
Multiplicative * / % Left to right
Additive + – Left to right
Shift << >> >>> Left to right
Relational < > <= >= instanceof Left to right
Equality == != Left to right
Bitwise AND & Left to right
Bitwise XOR ^ Left to right
Bitwise OR | Left to right
Logical AND && Left to right
Logical OR || Left to right
Conditional ?: Right to left
Assignment = += -= *= /= %= ^= |= <<= >>= >>>= Right to left

接下来是什么?

下一章将解释Java编程中的循环控制。本章将描述各种类型的循环,以及如何在Java程序开发中使用这些循环以及它们的用途。