❶ java中的邏輯運算符!
三、邏輯運算符:
&(與)
|(或)
!(反)
&:當兩邊同時為真時,結果為真,否則為假
|
:當兩邊有一邊為真時,結果為真,否則為假
!
:真值變假值,假值變真值
學JAVA也有不短的時間了,現在開發也有1年多了,不過你說的那些基礎知識我也記不得。我一開始也一樣害怕,學了就忘記了
不過告訴你,JAVA不是背出來的,是邏輯。
記憶方面,你只需要知道到哪裡去查閱。
這就是為什麼有那麼多API
reference等的原因啊,因為大家都記不得。
❷ JAVA 中的 -> 是什麼意思
本文主要是講解 Java 中的運算符。對於運算符而言是編程參與計算的基礎核心內容。最基礎的加減乘除取余。到後面的邏輯運算大於小於等於不等於。
本文內容思維導圖
先從最簡單的算術運算符說起。
算術運算符
算術運算符又分為: 一元運算符和二元運算符, 並且在 Java 中包含三元運算符, 就是條件運算符或者叫作三目運算符只是名字不同,含義相同。
一元運算符
一元運算符只有一個變數就可以進行操作。常用的一元運算符就是自加,自減。一共四個一元運算符。
示例代碼, 這里使用 JShell 快速查看結果。
需要注意其中的自加和自減的規則。當運算符在前的時候 ++ a; 運算符的優先順序比較高, 所以會先處理這個代碼, 所以可以看到代碼裡面直接返回了結果 4。但是 a ++ 的時候卻沒有直接返回結果, 因為他的運算符比價低。 所以重新調用該變數就會列印出來當前的值。
代碼定義如下:
運行查看結果:
二元運算符
二元運算符一共5個。分辨是加減乘除取余(+、-、*、/、%)。
其中,在進行除法運算的時候,遵守除數不能為 0;
如果除數為 0 就會報錯, 錯誤如下:
代碼示例如下:
運行查看結果,編譯, 運行:
賦值運算符
對於賦值運算符基本上貫穿了整個類的周期。常用的 = 賦值。 和簡寫賦值和算術運算符的使用方式。賦值運算符有如下圖所示的使用方式。
使用 JShell 進行測試代碼如下:
代碼示例如下:
inta=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 中只有一個就是 ? :
三目運算的語法格式:
大部分情況下, 對於三目運算是 if 和 else 的簡寫。舉例說明:
運算符的優先順序
所有的數學運算都是從左向右進行運算的, 對於 Java 來說大部分運算也是遵守從左向右的規則。 但是一元運算符,賦值運算符和三目運算符例外。他們是從右向左進行運算。
運算符的內容告一段落, 接下來就是開始邏輯表達式的學習。 教程編寫不易。希望各位大看官點贊收藏加關注。更多內容大放送。
❸ java都有哪些運算符及其用法
Java的運算符可分為4類:算術運算符、關系運算符、邏輯運算符和位運算符。
1.算術運算符
Java的算術運算符分為一元運算符和二元運算符。一元運算符只有一個操作數;二元運算符有兩個操作數,運算符位於兩個操作數之間。算術運算符的操作數必須是數值類型。
(1)一元運算符:
一元運算符有:正(+)、負(-)、加1(++)和減1(--)4個。
加1、減1運算符只允許用於數值類型的變數,不允許用於表達式中。加1、減1運算符既可放在變數之前(如++i),也可放在變數之後(如i++),兩者的差別是:如果放在變數之前(如++i),則變數值先加1或減1,然後進行其他相應的操作(主要是賦值操作);如果放在變數之後(如i++),則先進行其他相應的操作,然後再進行變數值加1或減1。
例如:
int i=6,j,k,m,n;
j = +i; //取原值,即j=6
k = -i; //取負值,即k=-6
m = i++; //先m=i,再i=i+1,即m=6,i=7
m = ++i; //先i=i+1,再m=i,即i=7,m=7
n = j--; //先n=j,再j=j-1,即n=6,j=5
n = --j; //先j=j-1,再n=j,即j=5,n=5
在書寫時還要注意的是:一元運算符與其前後的操作數之間不允許有空格,否則編譯時會出錯。
(2)二元運算符
二元運算符有:加(+)、減(-)、乘(*)、除(/)、取余(%)。其中+、-、*、/完成加、減、乘、除四則運算,%是求兩個操作數相除後的余數。
%求余操作舉例:
a % b = a - (a / b) * b
取余運算符既可用於兩個操作數都是整數的情況,也可用於兩個操作數都是浮點數(或一個操作數是浮點數)的情況。當兩個操作數都是浮點數時,例如7.6 % 2.9時,計算結果為:7.6 - 2 * 2.9 = 1.8。
當兩個操作數都是int類型數時,a%b的計算公式為:
a % b = a - (int)(a / b) * b
當兩個操作數都是long類型(或其他整數類型)數時,a%b的計算公式可以類推。
當參加二元運算的兩個操作數的數據類型不同時,所得結果的數據類型與精度較高(或位數更長)的那種數據類型一致。
例如:
7 / 3 //整除,運算結果為2
7.0 / 3 //除法,運算結果為2.33333,即結果與精度較高的類型一致
7 % 3 //取余,運算結果為1
7.0 % 3 //取余,運算結果為1.0
-7 % 3 //取余,運算結果為-1,即運算結果的符號與左操作數相同
7 % -3 //取余,運算結果為1,即運算結果的符號與左操作數相同
2.關系運算符
關系運算符用於比較兩個數值之間的大小,其運算結果為一個邏輯類型的數值。關系運算符有六個:等於(==)、不等於(!=)、大於(>)、大於等於(>=)、小於(<)、小於等於(<=)。
例如:
9 <= 8 //運算結果為false
9.9 >= 8.8 //運算結果為true
'A' < 'a' //運算結果為true,因字元'A'的Unicode編碼值小於字元'a'的
要說明的是,對於大於等於(或小於等於)關系運算符來說,只有大於和等於兩種關系運算都不成立時其結果值才為false,只要有一種(大於或等於)關系運算成立其結果值即為true。例如,對於9 <= 8,9既不小於8也不等於8,所以9 <= 8 的運算結果為false。對於9 >= 9,因9等於9,所以9 >= 9的運算結果為true。
3.邏輯運算符
邏輯運算符要求操作數的數據類型為邏輯型,其運算結果也是邏輯型值。邏輯運算符有:邏輯與(&&)、邏輯或(||)、邏輯非(!)、邏輯異或(^)、邏輯與(&)、邏輯或(|)。
真值表是表示邏輯運算功能的一種直觀方法,其具體方法是把邏輯運算的所有可能值用表格形式全部羅列出來。Java語言邏輯運算符的真值表如下:
邏輯運算符的真值表
A B A&&B A||B !A A^B A&B A|B
false false false false true false false false
true false false true false true false true
false true false true true true false true
true true true true false false true true
前兩列是參與邏輯運算的兩個邏輯變數,共有4種可能,所以表2.5共有4行。後6列分別是6個邏輯運算符在邏輯變數A和邏輯變數B取不同數值時的運算結果值。
要說明的是,兩種邏輯與(&&和&)的運算規則基本相同,兩種邏輯或(||和|)的運算規則也基本相同。其區別是:&和|運算是把邏輯表達式全部計算完,而&&和||運算具有短路計算功能。所謂短路計算,是指系統從左至右進行邏輯表達式的計算,一旦出現計算結果已經確定的情況,則計算過程即被終止。對於&&運算來說,只要運算符左端的值為false,則因無論運算符右端的值為true或為false,其最終結果都為false。所以,系統一旦判斷出&&運算符左端的值為false,則系統將終止其後的計算過程;對於 || 運算來說,只要運算符左端的值為true,則因無論運算符右端的值為true或為false,其最終結果都為true。所以,系統一旦判斷出|| 運算符左端的值為true,則系統將終止其後的計算過程。
例如,有如下邏輯表達式:
(i>=1) && (i<=100)
此時,若i等於0,則系統判斷出i>=1的計算結果為false後,系統馬上得出該邏輯表達式的最終計算結果為false,因此,系統不繼續判斷i<=100的值。短路計算功能可以提高程序的運行速度。
作者建議讀者:在程序設計時使用&&和||運算符,不使用&和|運算符。
用邏輯與(&&)、邏輯或(||)和邏輯非(!)可以組合出各種可能的邏輯表達式。邏輯表達式主要用在 if、while等語句的條件組合上。
例如:
int i = 1;
while(i>=1) && (i<=100) i++; //循環過程
上述程序段的循環過程將i++語句循環執行100次。
4.位運算符
位運算是以二進制位為單位進行的運算,其操作數和運算結果都是整型值。
位運算符共有7個,分別是:位與(&)、位或(|)、位非(~)、位異或(^)、右移(>>)、左移(<<)、0填充的右移(>>>)。
位運算的位與(&)、位或(|)、位非(~)、位異或(^)與邏輯運算的相應操作的真值表完全相同,其差別只是位運算操作的操作數和運算結果都是二進制整數,而邏輯運算相應操作的操作數和運算結果都是邏輯值。
位運算示例
運算符 名稱 示例 說明
& 位與 x&y 把x和y按位求與
| 位或 x|y 把x和y按位求或
~ 位非 ~x 把x按位求非
^ 位異或 x^y 把x和y按位求異或
>> 右移 x>>y 把x的各位右移y位
<< 左移 x<<y 把x的各位左移y位
>>> 右移 x>>>y 把x的各位右移y位,左邊填0
舉例說明:
(1)有如下程序段:
int x = 64; //x等於二進制數的01000000
int y = 70; //y等於二進制數的01000110
int z = x&y //z等於二進制數的01000000
即運算結果為z等於二進制數01000000。位或、位非、位異或的運算方法類同。
(2)右移是將一個二進制數按指定移動的位數向右移位,移掉的被丟棄,左邊移進的部分或者補0(當該數為正時),或者補1(當該數為負時)。這是因為整數在機器內部採用補碼表示法,正數的符號位為0,負數的符號位為1。例如,對於如下程序段:
int x = 70; //x等於二進制數的01000110
int y = 2;
int z = x>>y //z等於二進制數的00010001
即運算結果為z等於二進制數00010001,即z等於十進制數17。
對於如下程序段:
int x = -70; //x等於二進制數的11000110
int y = 2;
int z = x>>y //z等於二進制數的11101110
即運算結果為z等於二進制數11101110,即z等於十進制數-18。要透徹理解右移和左移操作,讀者需要掌握整數機器數的補碼表示法。
(3)0填充的右移(>>>)是不論被移動數是正數還是負數,左邊移進的部分一律補0。
5.其他運算符
(1)賦值運算符與其他運算符的簡捷使用方式
賦值運算符可以與二元算術運算符、邏輯運算符和位運算符組合成簡捷運算符,從而可以簡化一些常用表達式的書寫。
賦值運算符與其他運算符的簡捷使用方式
運算符 用法 等價於 說明
+= s+=i s=s+i s,i是數值型
-= s-=i s=s-i s,i是數值型
*= s*=i s=s*i s,i是數值型
/= s/=i s=s/i s,i是數值型
%= s%=i s=s%i s,i是數值型
&= a&=b a=a&b a,b是邏輯型或整型
|= a|=b a=a|b a,b是邏輯型或整型
^= A^=b a=a^b a,b是邏輯型或整型
<<= s<<=i s=s<<i s,i是整型
>>= s>>=i s=s>>i s,i是整型
>>>= s>>>=i s=s>>>i s,i是整型
(2)方括弧[]和圓括弧()運算符
方括弧[]是數組運算符,方括弧[]中的數值是數組的下標,整個表達式就代表數組中該下標所在位置的元素值。
圓括弧()運算符用於改變表達式中運算符的優先順序。
(3)字元串加(+)運算符
當操作數是字元串時,加(+)運算符用來合並兩個字元串;當加(+)運算符的一邊是字元串,另一邊是數值時,機器將自動將數值轉換為字元串,這種情況在輸出語句中很常見。如對於如下程序段:
int max = 100;
System.out.println("max = "+max);
計算機屏幕的輸出結果為:max = 100,即此時是把變數max中的整數值100轉換成字元串100輸出的。
(4)條件運算符(?:)
條件運算符(?:)的語法形式為:
<表達式1> ?<表達式2> : <表達式3>
條件運算符的運算方法是:先計算<表達式1>的值,當<表達式1>的值為true時,則將<表達式2>的值作為整個表達式的值;當<表達式1>的值為false時,則將<表達式3>的值作為整個表達式的值。如:
int a=1,b=2,max;
max = a>b?a:b; //max等於2
(5)強制類型轉換符
強制類型轉換符能將一個表達式的類型強制轉換為某一指定數據類型,其語法形式為:
(<類型>)<表達式>
(6)對象運算符instanceof
對象運算符instanceof用來測試一個指定對象是否是指定類(或它的子類)的實例,若是則返回true,否則返回false。
(7)點運算符
點運算符「.」的功能有兩個:一是引用類中成員,二是指示包的層次等級。
6.運算符的優先順序
以下按優先順序從高到低的次序列出Java語言中的所有運算符,表中結合性一列中的「左右」表示其運算次序為從左向右,「右左」表示其運算次序為從右向左。
優先順序 運算符 結合性
1 . [] () ; ,
2 ++ ―― += ! ~ +(一元) -(一元) 右左
3 * / % 左右
4 +(二元) -(二元) 左右
5 << >> >>> 左右
6 < > <= >= instanceof 左右
7 = = != 左右
8 & 左右
9 ^ 左右
10 | 左右
11 && 左右
12 || 左右
13 ?: 右左
14 = *= /= %= += -= <<= >>= >>>= &= ^= |= 右左
❹ java邏輯運算符作用
一般如果要判斷兩個條件時用&&連接:
如:
if(i<10&&i>0)表示如果變數i的值即大於0,且小10,就執行下面的代碼。
boolean ok = false;
if(!ok)
{
System.out.println("ok");
}
//結果會列印ok;
if(!End)return;和if(End==false)return
if(End)return;和if(End==true)return;是一個意思。
(4)java邏輯非擴展閱讀:
運算符指明對操作數的運算方式。組成表達式的Java操作符有很多種。運算符按照其要求的操作數數目來分,可以有單目運算符、雙目運算符和三目運算符,它們分別對應於1個、2個、3個操作數。運算符按其功能來分,有算術運算符、賦值運算符、關系運算符、邏輯運算符、位運算符和其他運算符。
❺ 那位朋友幫我介紹一下java中邏輯運算符非的用法
所有一元運算符,如 ! 運算符,按照下面的規則來求表達式的值:
假如應用於 undefined 或 null 表達式,則會產生一個運行時錯誤。
對象被轉換為字元串。
假如可能,字元串被轉換為數值。否則會產生一個運行時錯誤。
Boolean 值被當作數值(假如是 false 則為 0,假如是 true 則為 1)。
該運算符被用來產生數值。
對於 ! 運算符,假如 expression 是非零的,則 result 是零。假如 expression 是零,則 result 是 1
❻ java邏輯運算符都有哪些
邏輯運算符包括 &&、||、!。其中 && 和 || 是雙目運算符,實現邏輯與、邏輯或;!是單目運算符,實現邏輯非。
邏輯運算符的優先順序為:!運算級別最高,&& 運算高於 || 運算。!運算符的優先順序高於算術運算符,而 && 和 || 運算則低於關系運算符。結合方向是:邏輯非(單目運算符)具有右結合性,邏輯與和邏輯或(雙目運算符)具有左結合性。
(6)java邏輯非擴展閱讀:
邏輯運算符的示例。
x>0 && x<=100 //第一行語句
y%4==0 || y%3==0 //第二行語句
!(x>y) //第三行語句
其中,第一行語句用於判斷 x 的值是否大於 0 且小於或等於 100,只有兩個條件同時成立結果才為真(true)。
第二行語句用於判斷 y 的值是否能被 4 或者 3 整除,只要有一個條件成立,結果就為真(true)。
第三行語句先比較 x 和 y,再將比較結果取反,即如果 x 大於 y 成立,則結果為假(false),否則為真(true)。
❼ JAVA中的邏輯運算符!
三、邏輯運算符:
&(與) |(或) !(反)
&:當兩邊同時為真時,結果為真,否則為假
| :當兩邊有一邊為真時,結果為真,否則為假
! :真值變假值,假值變真值
學JAVA也有不短的時間了,現在開發也有1年多了,不過你說的那些基礎知識我也記不得。我一開始也一樣害怕,學了就忘記了
不過告訴你,JAVA不是背出來的,是邏輯。
記憶方面,你只需要知道到哪裡去查閱。
這就是為什麼有那麼多API reference等的原因啊,因為大家都記不得。
❽ java 中|| 和 && 這類的符號都表示什麼
&&和||是一種邏輯運算符,&&是邏輯與,當兩個數都為真,則結果為真。||是邏輯或,兩個數任意一個為真,則結果為真。
舉個例子:
1、a && b
當a、b都為真時,結果為真。有一個為假或者都為假時結果為假。
2、a || b
當a、b有一個為真時,結果為真。a、b都為假時結果為假。
(8)java邏輯非擴展閱讀:
在java中還有其他的邏輯符號,比如:!、|、 &
「!」是非運算符號,比如a為真,則!a則為假。a如果為假,則!a為真。
而「|」也是邏輯或,「&」也是邏輯與,但是他們與「||」和「&&」有些區別,區別如下:
「&」與「|」無論第一個判斷條件是否成立,邏輯運算符前後兩個條件都會進行判斷。
「&&」與「||」,前者第一個條件不成立,後面的條件均不進行判斷,返回false;後者第一個條件成立,後面的條件均不進行判斷,返回true。
❾ java邏輯運算符中的邏輯與邏輯或和簡潔與簡潔或區別是什麼
摘要 您好親,在JAVA中的邏輯運算符就三種與、或、非。沒有您說的簡潔與?簡潔或?邏輯運算符包括 &&、||、!。其中 && 和 || 是雙目運算符,實現邏輯與、邏輯或;!是單目運算符,實現邏輯非。結果為 boolean 型的變數或表達式可以通過邏輯運算符結合成為邏輯表達式。