本文目錄一覽:
- 1、java運算符有哪些。求解一定要全 還有中文標註,謝謝了。
- 2、JAVA中&&和||是什麼意思?怎麼用
- 3、Java運算符?
- 4、 是什麼意思?’ title=’JAVA 中的 -> 是什麼意思?’>JAVA 中的 -> 是什麼意思?
- 5、java中的位運算符及其用法。
- 6、三目運算符的簡寫是什麼
java運算符有哪些。求解一定要全 還有中文標註,謝謝了。
一、算術運算符:
單目:+(取正)-(取負) ++(自增1) – -(自減1)
雙目:+ – * / %(取余)
三目:ab?true:false 說明:當a大於b的時候,為true(也就是冒號之前的值),否則為false;這整個運算符包括一個關係運算符(可以是“””””!=”等等),一個“?”,一個“:”,冒號前後需要有兩個表達式或者是值或者是對象。
二、關係運算:
等於符號:==,不等於符號: != ,大於符號:, 小於符號:= ,小於等於符號: = 。
三、位運算符 邏輯運算符:
位運算符 與()、非(~)、或(|)、異或(^):當兩邊操作數的位同時為1時,結果為1,否則為0。如11001010=1000
| :當兩邊操作數的位有一邊為1時,結果為0,否則為1。如1100|1010=1110
~:0變1,1變0
^:兩邊的位不同時,結果為1,否則為0.如1100^1010=0110
邏輯運算符
與()、非(!)、或(||)
四、賦值運算符
= += -= *= /= %= = ^= |= =
五、instanceof運算符
該運算符是雙目運算符,左面的操作元是一個對象,右面是一個類。當左面的對象是右面的類創建的對象時,該運算符運算結果是true,否則是false。
六、 運算符綜述
Java 的表達式就是用運算符連接起來的符合Java 規則的式子.運算符的優先級決定了表達式中運算執行的先後順序.例如,xy!z相當於(xy)(!z),沒有必要去記憶運算符號的優先級別,在編寫程序時可盡量的使用括號來實現你想要的運算次序,以免產生難以閱讀或含糊不清的計算順序.運算符的結合性決定了並列相同級別的運算符的先後順序,例如,加減的結合性是從左到右,8-5+3 相當於(8-5)+3.邏輯否運算符 的結合性是右到左, x 相當於!(!x).表3.4是Java所有運算符的優先級和結合性。
七 位移運算符
帶符號左移 帶符號右移 無號右移
例子: int a1 = 8; // 0000 0000 0000 1000
System.out.println(a12); //// 0000 0000 0000 0010
輸出為 2
JAVA中&&和||是什麼意思?怎麼用
JAVA中意思是“條件與”邏輯操作符,使用方法是xy,功能描述:x和y均為true,取值是true,否則取值是false。
JAVA中||意思是“條件或”邏輯操作符,使用方法是x||y,功能描述:x和y有一個為true,取值是true,否則取值是false。
擴展資料:
JAVA語言中進行邏輯表達式求值運算時,不但要注意邏輯運算符本身的運算規則,而且還必須從最左邊一個計算部分開始,按照邏輯運算的規則計算該部分的值。每計算完一個部分就與該部分右邊緊靠着的邏輯運算符根據真值表進行邏輯值判斷。
在邏輯表達式的求解過程中,任何時候只要邏輯表達式的值已經可以確定,則求解過程不再進行,求解結束。
參考資料來源:
百度百科——
百度百科——||
Java運算符?
1.運算符
1)算術運算符
+-*/%++–
+:如果有加數為“”(字符串),表示連接
%:2%1 0
++:自增1 num++:先參與運算,然後在自增 ++num:先自增,再參與運算
–:自減1 num– –num
2)賦值運算符
= += -= *= /= %=……
num=3;
+= num+=3=num=num+3
左邊?=右邊=左邊=左邊?右邊
3)關係運算符
==!===
表達式的結果為:boolean類型
==:用來判斷兩個數是否相等
4)邏輯運算符
||!^|
結果類型:boolean類型
與:串聯,並且
或:並聯,或者
非:取反
異或:不同為真,相同為假
與: 區別:
:短路與,如果第一個能判斷出結果,則雲南電腦培訓認為後面的不再判斷
:所有的都會判斷
|| |區別:同上面
5)位運算符:
|~^
對數值按位操作:
63
00000110
00000011
00000010
:23=16補0
:162=4:正數補0,負數補1
:補0
三目運算符:
?:
條件表達式?結果1:結果2;
如果表達式結果為true:結果為結果1
否則為結果2
12?1:0;結果為0
是什麼意思?’>JAVA 中的 -> 是什麼意思?
本文主要是講解 Java 中的運算符。對於運算符而言是編程參與計算的基礎核心內容。最基礎的加減乘除取余。到後面的邏輯運算大於小於等於不等於。
本文內容思維導圖
先從最簡單的算術運算符說起。
算術運算符
算術運算符又分為: 一元運算符和二元運算符, 並且在 Java 中包含三元運算符, 就是條件運算符或者叫作三目運算符只是名字不同,含義相同。
一元運算符
一元運算符只有一個變量就可以進行操作。常用的一元運算符就是自加,自減。一共四個一元運算符。
示例代碼, 這裡使用 JShell 快速查看結果。
需要注意其中的自加和自減的規則。當運算符在前的時候 ++ a; 運算符的優先級比較高, 所以會先處理這個代碼, 所以可以看到代碼裡面直接返回了結果 4。但是 a ++ 的時候卻沒有直接返回結果, 因為他的運算符比價低。 所以重新調用該變量就會打印出來當前的值。
代碼定義如下:
運行查看結果:
二元運算符
二元運算符一共5個。分辨是加減乘除取余(+、-、*、/、%)。
其中,在進行除法運算的時候,遵守除數不能為 0;
如果除數為 0 就會報錯, 錯誤如下:
代碼示例如下:
運行查看結果,編譯, 運行:
賦值運算符
對於賦值運算符基本上貫穿了整個類的周期。常用的 = 賦值。 和簡寫賦值和算術運算符的使用方式。賦值運算符有如下圖所示的使用方式。
使用 JShell 進行測試代碼如下:
代碼示例如下:
int a = 0;
a = 3;
System.out.println(a);// 3
a += 3;
System.out.println(a);// 6
a -= 3;
System.out.println(a);// 3
a *= 3;
System.out.println(a);// 9
a /= 3;
System.out.println(a);// 3
a %= 2;
System.out.println(a);// 1
比較運算符
比較運算符, 也可以說是布爾運算符。 主要是比較兩個表達式的結果。 (表達式) 操作符 (表達式)
根據上面的運算符進行案例演示, 一定要動手練習。 更能加深印象。
只要知道比較運算是最終得到一個布爾類型的值。並且在進行比較運算的時候, 一定要注意其優先級。代碼這次自己動手做吧。 有上面的演示, 應該很容易就搞定。
邏輯運算符
對於邏輯運算符, 主要就是 3 個。 邏輯與、邏輯或、邏輯非。和數學中的與或非意思一致。
格式: 表達式1 邏輯運算符 表達式2
邏輯運算符大多數情況下會和其他的運算符一起使用, 主要做一些簡單或複雜的邏輯運算。 並且通常都是和 if, for 等邏輯表達式一起使用。
簡單的說一說, 對於邏輯與和邏輯或不同點。 邏輯與為第一個表達式和第二個表達式都等於真值的情況下才會表達式成立。 邏輯或是第一個表達式為真值的情況下, 就不會在執行第二個表達式。 因為不管第二個表達式是否成立, 該邏輯運算都是真值了。
位運算符
對於任何編程語言而言, 最終的操作都是二進制表示, 因為計算機只認識二進制, 而八進制,十進制或者十六進制都是為了讓開發人員方便開發。對於 Java 來說, 也可以針對數的某個值進行運算。這就需要位運算符的參與了。也是為了方便對二進制進行操作。
位運算符主要有一下運算符:
位與
按位與和邏輯運算符的邏輯與很類似,一個比較的表達式, 一個是按照位來進行判斷。在二進制中, 位與的判斷為都為 1 的記做 1 否則記做 0。
按位與規則如下:
0 0 = 0;
0 1 = 0;
1 0 = 0;
1 1 = 1;
先看一個都是正整數的值 10 2。
最終得出結果 0000 1010 0000 0010 = 0000 0010 轉換成十進制就是2。
對於負值的位與運算有點區別的地方就是參與運算的是補碼。
舉例說明: 10 -2
具體如何得到補碼, 可以參考我之前寫的文章基礎類型的相互轉換。這裡對於負值的情況需要了解什麼是原碼,反碼和補碼。參與運算的是補碼。-2 的原碼是 1000 0010 反碼是 1111 1101 補碼 在反碼的基礎最後一位加 1 得到1111 1110。
最終結果得到 0000 1010 1111 1110 = 0000 1010 十進制也就是 10。
這個時候怎麼校驗結果是否正確呢? 直接寫 Java 代碼就好了, 打開 jshell:
位或 |
按位或, 和邏輯或很類似, 只要二者有一位 1 結果就是 1。
按位或規則如下:
0 | 0 = 0;
0 | 1 = 1;
1 | 0 = 1;
1 | 1 = 1;
根據上面的運算得到了 10 | 2 = 10。
負值有略有不同。
還是要靈活運用原碼反碼和補碼,特別是負數的情況下, 因為正數的原碼和補碼一致。
位反 ~
按位反, 和邏輯非類似。 是對位進行直接取反。
按位反規則如下:
~1 = 0;
~0 = 1;
先用 2 進行運算處理:
在進行 -2 的運算操作
-2 的原碼 需要轉換成補碼, 用補碼進行取反運算。 得到 1 的二進制。
代碼演示如下:
位異或 ^
位異或是基於二進制的位運算。 採用符號 XOR 在 Java 中使用 ^ 進行表示。兩個值相同取 0, 不同的取 1。
按位異或規則如下:
1 ^ 1 = 0;
0 ^ 0 = 0;
1 ^ 0 = 1;
0 ^ 1 = 1;
舉例 10 ^ 2
舉例 10 ^ -2
代碼演示結果的準確性:
異或在代碼優化和實際的工作中會經常用到。 後續實戰中用到了在詳細分析用法, 現在知道進行異或運算即可。
位左移
將一個操作數進行二進制位往左移, 移動後空出來的低位用 0 進行填充。移除的高位捨去。高位丟棄,低位補零。
操作數 移動的位數
舉例說明 10 2
位左移代碼演示:
位右移
將一個操作數進行二進制往右移, 移動後,有兩種情況,一種有無符號一種是有符號。也就是最高位為 0 移動後高位補 0, 如果最高位(符號位)為 1, 移動後空缺位都為 1.
操作數 移動的位數
舉例說明 10 2
對於負數舉例 -2 2 空缺位補 1:
位右移代碼演示:
注意這兩者的區別。
無符號位右移
這個是和右移操作上是一致的, 但是不管是否最高位(符號位)為 1, 空缺位都使用 0 進行補齊。
操作數 移動的位數
舉例說明 10 2
對於負數來說。 這裡有點區別, 因為對於負值來說, 上面其實都是 32 位, 為了讓大家看起來舒服轉換成了對應的 8 位的。 因為無符號位右移會改變正負值, 所以 32 位的負值和 8 位的負值是不一致的。
並且 Java 在處理 byte, short , char 等值進行移位操作前, 會先將類型轉換成 int 因為 int 佔用 32 位。
所以 -2 2 的時候,8 位運算應該是如下:
因為會先轉換成 32 位。 所以 32 位的 -2 等於如下:
也就是結果: 1073741823
無符號位右移代碼如下:
理解原理。 更能發現問題。
類型比較運算符
這裡說的類型比較是對象的比較。 判斷每個定義的變量是否是某個類。該類可以是(接口、抽象類)。
語法規則:
boolean = 變量 instanceof 類
舉例說明:
運行查看結果:
這裡需要注意:
null 值是沒有引用的, 所以和任何值都不相等。
instanceof 比較的是引用類型, 不能用於基礎類型的比較。
條件(三目)運算符
三目運算在 Java 中只有一個就是 ? :
三目運算的語法格式:
`布爾表達式 ? 表達式1 : 表達式2`
大部分情況下, 對於三目運算是 if 和 else 的簡寫。舉例說明:
int a = 1; int b = 2;
String msg = a b ? “a 比 b 大” : “a 比 b 小”;
System.out.println(msg);
//上面的結果和下面一致
if(a b){
msg = “a 比 b 大!”;
}else{
msg = “a 比 b 小!”;
}
//msg 是 “a 比 b 小!”
運算符的優先級
所有的數學運算都是從左向右進行運算的, 對於 Java 來說大部分運算也是遵守從左向右的規則。 但是一元運算符,賦值運算符和三目運算符例外。他們是從右向左進行運算。
運算符的內容告一段落, 接下來就是開始邏輯表達式的學習。 教程編寫不易。希望各位大看官點贊收藏加關注。更多內容大放送。
java中的位運算符及其用法。
位邏輯運算符有“與”(AND)、“或”(OR)、“異或(XOR)”、“非(NOT)”,分別用“”、“|”、“^”、“~”表示。
下面的例子說明了位邏輯運算符:
// Demonstrate the bitwise logical operators.
class BitLogic {
public static void main(String args[]) {
String binary[] = {
“0000”, “0001”, “0010”, “0011”, “0100”, “0101”, “0110”, “0111”,
“1000”, “1001”, “1010”, “1011”, “1100”, “1101”, “1110”, “1111”
};
int a = 3; // 0 + 2 + 1 or 0011 in binary
int b = 6; // 4 + 2 + 0 or 0110 in binary
int c = a | b;
int d = a b;
int e = a ^ b;
int f = (~a b) | (a ~b);
int g = ~a 0x0f;
System.out.println(” a = ” + binary[a]);
System.out.println(” b = ” + binary[b]);
System.out.println(” a|b = ” + binary[c]);
System.out.println(” ab = ” + binary[d]);
System.out.println(” a^b = ” + binary[e]);
System.out.println(“~ab|a~b = ” + binary[f]);
System.out.println(” ~a = ” + binary[g]);
}
}
在本例中,變量a與b對應位的組合代表了二進制數所有的 4 種組合模式:0-0,0-1,1-0,和1-1。“|”運算符和“”運算符分別對變量a與b各個對應位的運算得到了變量c和變量d的值。對變量e和f的賦值說明了“^”運算符的功能。字符串數組binary代表了0到15對應的二進制的值。在本例中,數組各元素的排列順序顯示了變量對應值的二進制代碼。數組之所以這樣構造是因為變量的值n對應的二進制代碼可以被正確的存儲在數組對應元素binary[n]中。例如變量a的值為3,則它的二進制代碼對應地存儲在數組元素binary[3]中。~a的值與數字0x0f (對應二進制為0000 1111)進行按位與運算的目的是減小~a的值,保證變量g的結果小於16。因此該程序的運行結果可以用數組binary對應的元素來表示。該程序的輸出如下:
a = 0011
b = 0110
a|b = 0111
ab = 0010
a^b = 0101
~ab|a~b = 0101
~a = 1100
左移運算符
左移運算符使指定值的所有位都左移規定的次數。它的通用格式如下所示:
value num
這裡,num指定要移位值value移動的位數。也就是,左移運算符使指定值的所有位都左移num位。每左移一個位,高階位都被移出(並且丟棄),並用0填充右邊。這意味着當左移的運算數是int類型時,每移動1位它的第31位就要被移出並且丟棄;當左移的運算數是long類型時,每移動1位它的第63位就要被移出並且丟棄。
在對byte和short類型的值進行移位運算時,你必須小心。因為你知道Java在對表達式求值時,將自動把這些類型擴大為 int型,而且,表達式的值也是int型 。對byte和short類型的值進行移位運算的結果是int型,而且如果左移不超過31位,原來對應各位的值也不會丟棄。但是,如果你對一個負的byte或者short類型的值進行移位運算,它被擴大為int型後,它的符號也被擴展。這樣,整數值結果的高位就會被1填充。因此,為了得到正確的結果,你就要捨棄得到結果的高位。這樣做的最簡單辦法是將結果轉換為byte型。下面的程序說明了這一點:
// Left shifting a byte value.
class ByteShift {
public static void main(String args[]) {
byte a = 64, b;
int i;
i = a 2;
b = (byte) (a 2);
System.out.println(“Original value of a: ” + a);
System.out.println(“i and b: ” + i + ” ” + b);
}
}
該程序產生的輸出下所示:
Original value of a: 64
i and b: 256 0
因變量a在賦值表達式中,故被擴大為int型,64(0100 0000)被左移兩次生成值256(10000 0000)被賦給變量i。然而,經過左移後,變量b中惟一的1被移出,低位全部成了0,因此b的值也變成了0。
既然每次左移都可以使原來的操作數翻倍,程序員們經常使用這個辦法來進行快速的2的乘法。但是你要小心,如果你將1移進高階位(31或63位),那麼該值將變為負值。下面的程序說明了這一點:
// Left shifting as a quick way to multiply by 2.
class MultByTwo {
public static void main(String args[]) {
int i;
int num = 0xFFFFFFE;
for(i=0; i4; i++) {
num = num 1;
System.out.println(num);
}
}
}
該程序的輸出如下所示:
536870908
1073741816
2147483632
-32
初值經過仔細選擇,以便在左移 4 位後,它會產生-32。正如你看到的,當1被移進31位時,數字被解釋為負值。
右移運算符
右移運算符使指定值的所有位都右移規定的次數。它的通用格式如下所示:
value num
這裡,num指定要移位值value移動的位數。也就是,右移運算符使指定值的所有位都右移num位。
下面的程序片段將值32右移2次,將結果8賦給變量a:
int a = 32;
a = a 2; // a now contains 8
當值中的某些位被“移出”時,這些位的值將丟棄。例如,下面的程序片段將35右移2次,它的2個低位被移出丟棄,也將結果8賦給變量a:
int a = 35;
a = a 2; // a still contains 8
用二進制表示該過程可以更清楚地看到程序的運行過程:
00100011 35
2
00001000 8
將值每右移一次,就相當於將該值除以2並且捨棄了餘數。你可以利用這個特點將一個整數進行快速的2的除法。當然,你一定要確保你不會將該數原有的任何一位移出。
右移時,被移走的最高位(最左邊的位)由原來最高位的數字補充。例如,如果要移走的值為負數,每一次右移都在左邊補1,如果要移走的值為正數,每一次右移都在左邊補0,這叫做符號位擴展(保留符號位)(sign extension),在進行右移操作時用來保持負數的符號。例如,–8 1 是–4,用二進制表示如下:
11111000 –8
1
11111100 –4
一個要注意的有趣問題是,由於符號位擴展(保留符號位)每次都會在高位補1,因此-1右移的結果總是–1。有時你不希望在右移時保留符號。例如,下面的例子將一個byte型的值轉換為用十六進制表示。注意右移後的值與0x0f進行按位與運算,這樣可以捨棄任何的符號位擴展,以便得到的值可以作為定義數組的下標,從而得到對應數組元素代表的十六進制字符。
// Masking sign extension.
class HexByte {
static public void main(String args[]) {
char hex[] = {
‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’,
‘8’, ‘9’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f”
};
byte b = (byte) 0xf1;
System.out.println(“b = 0x” + hex[(b 4) 0x0f] + hex[b 0x0f]);
}
}
該程序的輸出如下:
b = 0xf1
無符號右移
正如上面剛剛看到的,每一次右移,運算符總是自動地用它的先前最高位的內容補它的最高位。這樣做保留了原值的符號。但有時這並不是我們想要的。例如,如果你進行移位操作的運算數不是數字值,你就不希望進行符號位擴展(保留符號位)。當你處理像素值或圖形時,這種情況是相當普遍的。在這種情況下,不管運算數的初值是什麼,你希望移位後總是在高位(最左邊)補0。這就是人們所說的無符號移動(unsigned shift)。這時你可以使用Java的無符號右移運算符,它總是在左邊補0。下面的程序段說明了無符號右移運算符。在本例中,變量a被賦值為-1,用二進制表示就是32位全是1。這個值然後被無符號右移24位,當然它忽略了符號位擴展,在它的左邊總是補0。這樣得到的值255被賦給變量a。
int a = -1;
a = a 24;
下面用二進制形式進一步說明該操作:
11111111 11111111 11111111 11111111 int型- 1的二進制代碼
24 無符號右移24位
00000000 00000000 00000000 11111111 int型255的二進制代碼由於無符號右移運算符只是對32位和64位的值有意義,所以它並不像你想象的那樣有用。因為你要記住,在表達式中過小的值總是被自動擴大為int型。這意味着符號位擴展和移動總是發生在32位而不是8位或16位。這樣,對第7位以0開始的byte型的值進行無符號移動是不可能的,因為在實際移動運算時,是對擴大後的32位值進行操作。下面的例子說明了這一點:
// Unsigned shifting a byte value.
class ByteUShift {
static public void main(String args[]) {
char hex[] = {
‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’,
‘8’, ‘9’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’
};
byte b = (byte) 0xf1;
byte c = (byte) (b 4);
byte d = (byte) (b 4);
byte e = (byte) ((b 0xff) 4);
System.out.println(” b = 0x”
+ hex[(b 4) 0x0f] + hex[b 0x0f]);
System.out.println(” b 4 = 0x”
+ hex[(c 4) 0x0f] + hex[c 0x0f]);
System.out.println(” b 4 = 0x”
+ hex[(d 4) 0x0f] + hex[d 0x0f]);
System.out.println(“( b 0xff) 4 = 0x”
+ hex[(e 4) 0x0f] + hex[e 0x0f]);
}
}
該程序的輸出顯示了無符號右移運算符對byte型值處理時,實際上不是對byte型值直接操作,而是將其擴大到int型後再處理。在本例中變量b被賦為任意的負byte型值。對變量b右移4位後轉換為byte型,將得到的值賦給變量c,因為有符號位擴展,所以該值為0xff。對變量b進行無符號右移4位操作後轉換為byte型,將得到的值賦給變量d,你可能期望該值是0x0f,但實際上它是0xff,因為在移動之前變量b就被擴展為int型,已經有符號擴展位。最後一個表達式將變量b的值通過按位與運算將其變為8位,然後右移4位,然後將得到的值賦給變量e,這次得到了預想的結果0x0f。由於對變量d(它的值已經是0xff)進行按位與運算後的符號位的狀態已經明了,所以注意,對變量d再沒有進行無符號右移運算。
B = 0xf1
b 4 = 0xff
b 4 = 0xff
(b 0xff) 4 = 0x0f
位運算符賦值
所有的二進制位運算符都有一種將賦值與位運算組合在一起的簡寫形式。例如,下面兩個語句都是將變量a右移4位後賦給a:
a = a 4;
a = 4;
同樣,下面兩個語句都是將表達式a OR b運算後的結果賦給a:
a = a | b;
a |= b;
下面的程序定義了幾個int型變量,然後運用位賦值簡寫的形式將運算後的值賦給相應的變量:
class OpBitEquals {
public static void main(String args[]) {
int a = 1;
int b = 2;
int c = 3;
a |= 4;
b = 1;
c = 1;
a ^= c;
System.out.println(“a = ” + a);
System.out.println(“b = ” + b);
System.out.println(“c = ” + c);
}
}
該程序的輸出如下所示:
a = 3
b = 1
c = 6
三目運算符的簡寫是什麼
三目運算符的簡寫是:js。三目運算符,又稱條件運算符,是計算機語言(c,c++,java等)的重要組成部分。它是唯一有3個操作數的運算符,有時又稱為三元運算符,一般來說三目運算符的結合性是右結合的。
原創文章,作者:N75GV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/127525.html