標籤:
2.2 資料類型2.2.1 Java資料類型 2.3 常用運算子
Java提供了一組運算子豐富的操縱變數。我們可以把所有的Java操作符為以下幾組:
算術運算子
關係運算子
位元運算符
邏輯運算子
賦值運算子
其它運算子
算術運算子:
算術運算子用於在數學運算式中,他們是在代數中使用的方法相同。下表列出了算術運算子:
假設整型變數A=10和變數B=20,則:
算術運算執行個體
運算子 |
描述 |
執行個體 |
+ |
Addition - Adds values on either side of the operator |
A + B = 30 |
- |
Subtraction - Subtracts right hand operand from left hand operand |
A - B = -10 |
* |
Multiplication - Multiplies values on either side of the operator |
A * B = 200 |
/ |
Division - Divides left hand operand by right hand operand |
B / A = 2 |
% |
Modulus - Divides left hand operand by right hand operand and returns remainder |
B % A = 0 |
++ |
Increment - Increases the value of operand by 1 |
B++ =21 |
-- |
Decrement - Decreases the value of operand by 1 |
B-- =19 |
關係運算子:
有下列由Java語言支援的關係運算子
假設變數A=10和變數B=20,則:
關係運算子執行個體
運算子 |
描述 |
執行個體 |
== |
Checks if the values of two operands are equal or not, if yes then condition becomes true. |
(A == B) is not true. |
!= |
Checks if the values of two operands are equal or not, if values are not equal then condition becomes true. |
(A != B) is true. |
> |
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. |
< |
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. |
>= |
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. |
<= |
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定義了幾個位元運算符,它可以應用到整數類型,長型,整型,短整型,字元和位元組。
位元運算符作用於位,並執行逐位操作。假設當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,則:
位元運算執行個體
運算子 |
描述 |
執行個體 |
& |
Binary AND Operator copies a bit to the result if it exists in both operands. |
(A & B) will give 12 which is 0000 1100 |
| |
Binary OR Operator copies a bit if it exists in either operand. |
(A | B) will give 61 which is 0011 1101 |
^ |
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 |
~ |
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. |
<< |
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 |
>> |
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 |
>>> |
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=ture,變數B=false,那麼:
邏輯運算子執行個體
運算子 |
描述 |
執行個體 |
&& |
Called Logical AND operator. If both the operands are non-zero, then the condition becomes true. |
(A && B) is false. |
|| |
Called Logical OR Operator. If any of the two operands are non-zero, then the condition becomes true. |
(A || B) is true. |
! |
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語言支援賦值操作符:
賦值運算子執行個體
運算子 |
描述 |
執行個體 |
= |
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 : 30Value of b is : 20
instanceof運算子:
這個操作符只用於對象引用變數。操作檢查對象是否為特定類型(類類型或介面類型)。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+3* 2;這裡x被賦值13,而不是20,因為運算子*的優先順序高於+,所以它首先被乘以3 * 2,然後加7。
這裡,具有最高優先順序的操作出現在表格上方,那些具有最低出現在底部。在運算式中,優先順序較高的運算子將首先評估計算。
分類 |
運算子 |
關聯 |
Postfix |
() [] . (dot operator) |
Left to right |
Unary |
++ - - ! ~ |
Right to left |
Multiplicative |
* / % |
Left to right |
Additive |
+ - |
Left to right |
Shift |
>> >>> << |
Left to right |
Relational |
> >= < <= |
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 |
Comma |
, |
Left to right |
Java私人學習筆記——第2章 資料類型和運算子