日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 十 = 0_从零学java笔录-第10篇 数据类型(四)

發布時間:2024/10/8 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 十 = 0_从零学java笔录-第10篇 数据类型(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文是《凱哥陪你學系列之java基礎篇》

感謝:

感謝網友:志遠162。在上一篇中對錯誤指出。

在上篇中模運算正負號和分子保持一致而不是分母。希望大家記住

本篇主要內容:

1:比較運算

2:邏輯運算

3:位運算

4:三元運算

1: 比較運算:

比較運算符:等于,不等于,大于,大于等于,小于,小于等于。

在java中比較兩個數等于使用的是雙等號。比如 3==2

注意:比較運算符運算的結果是true或是false。

其中 instanceof這個先不用管。這個以后學習中需要的

2 邏輯運算符

Java中邏輯運算

邏輯運算符的作用:

用于連接兩個boolean類型的表達式。

比如在數學中我們 2

但是 如果寫出 x>2,x<5 這兩個表達式和 2

所以就出現了邏輯運算符。

那么用java表達 x>2 其 x<5怎么表達?

(x>2 & x<5)這樣就OK了。

代碼演示:

class LogicDemo{

public static void main (String [] args){

int a = 3;

int b = 6;

System.out.println(a>2&a<5);

System.out.println(b>2&b<5);

}

}

運行結果:

分析原因:

System.out.println(a>2&a<5);為什么是true?

因為: a=3.而3>2.&符號左邊是true 。又因為 3<5 .&符號右邊是true.

所以&符號左右兩邊都是true。所以就是true.

System.out.println(b>2&b<5);為什么是false?

因為: b=6.而6>2.&符號左邊是true 。而右邊 6<5是false.

所以&符號左右兩邊就是 true和false。而輸出的是false.

所以我們可以總結出&符號的特點

總結與(&):

&:與 或是叫 且。而且的意思

總結與(&):

&:與 或是叫 且。而且的意思

文字表達:

true & true = true;

true & false = false;

false & true = false;

false & false = false;

規律:

&符號:兩邊只要有一邊是false結果必為false.

只有兩邊都是true,結果才是true。

總結與(|)

l:與、或者。就是或者的意思

文字表達:

true & true = true;

true & false = true;

false & true = true;

false & false = true;

規律:

|符號:兩邊只要有一邊是true結果必為tr.ue

只有兩邊都是false,結果才是false。

與和或使用場景

當要取中間值或是數據(也就是區間值)的時候使用 & 。

比如 想要3 和4 那么就是 2

當要取不是區間值,使用或

比如 想要不是 3和4 那么就是 x<2 | x>5。取小于2或者是大于5的數

總結異或(^)

異或:

true & true = false;

true & false = true;

false & true = true;

false & false = true;

^和|的區別:

或是 兩邊都是真的時候結果依然為真

但是異或,兩邊都是真的時候 結果卻為false.

總結非運算(!)

非運算取相反的值。

!ture = false;

!false = true;

短路邏輯運算:(面試題)

&& 雙與其特點和單個&特點相同的。

但是只要有一邊為假就不比較另一邊了。

比如:int i = 1;

i>2 && i<5;

這個運算過程就是,先比較 1>2 結果是false.當使用&& 的時候就不在比較右邊了。

但是如果使用& 還需要比較右邊。所以&& 起到短路效果。

|| 和 |的效果是一樣。但是||起到短路效果的。

為什么會出現 &&或是是||?

因為這個從效率上來講比單&效率高。

&&和&區別:

&& 只能做邏輯運算符,起到短路效果。

& 不僅是邏輯運算符還是位運算符。

&:無論左邊結果是什么,右邊都參與運算。

&&:當左邊是false時候,右邊就不參與運算了。

||和|

|:無論左邊結果是什么,右邊都參與運算

||:如果左邊是真,右邊不參與運算。

|:還是位運算的

位運算符

Java中位運算符:

與運算:

6&3.

因為位運算直接對應的是二進制。

而我們知道6和3是int類型。而int類型在內存中是4個字節。32位二進制。

所以,6&3在內存中:

簡寫:

分析為什么 6&3 結果是十進制的2

0:false

1:true

而我們有知道&運算的特點。只要有一個為false結果必為false.

所以運算的結果就是二進制的010 對應的十進制就是2

同理 6|3 = 7

異或運算:

根據異或特點:兩邊相同即為假,兩邊不同才為真。

所以 6^3 = 5

6^3^3=6

所以,異或特點:

當一個數異或兩一個數兩次后,結果還是這個數本身。

異或作用:

作為加密的一種方式。

比如數字6 先用3異或一次后得到新的二進制。然后在網絡上傳輸。等接受方拿到異或后的新二進制在和3進行異或后,就得到原來的數據6了。

反碼:

其實就是取反后的二進制碼

6的反碼(~6): 是-7

理解:

反碼就是取反后在加1.

左移:

3>>2:含義 3左移兩位:

在內存中處理過程:

3在內存中完整的表示方式:

說明:兩邊的||表示在內存中臨界邊。

左移兩位

得到新的二進制就是1100 轉成十進制就是12

那么3<<3 = 24

分析原因:

因為這里操作的是二進制。所以左移一位就是2的1次方。左移3位就是2(3)

所以 :

總結:

左移N位其實就是該數乘以2的N次冪

所以 <

右移:

6>>1 =

6在內存中二進制:

右移一位:

右移一位后,最高位就空出一位。注意這里不能直接用0補。

如果是整數,使用0補,如果是負數使用1補。

也就是:原數據最高位是什么,右移后,最高位和原數據最高位相同。

對應二進制變成110對應的十進制就是3.

6>>2=1

找規律:

右移N位,其實就是該數除以2的N次冪

無符號右移:>>>

無符號右移與右移區別:

無符號右移,無論原數據最高位是什么,右移完成后最高位都用0補。

注意:

左移和右移,都操作的是二進制數據。

位運算練習:

練習1:

最優效率的方式算出2乘以8等于幾?

內存中運算過程

分析得到 8=2(3).8等于2的3次方

所以 2*8 = 2*2(3)

2在內存中二進制表現:

2(3):2的3次方其實就是2左移3位。即時:2<<3

2的二進制左移三位后:

后面不夠用0補全。

結果

有效的就是10000對應的十進制就是16。

所以代碼:

練習2:

對兩個整數變量的值進行互換(注意:不需要第三方變量)

分析:

正常的,使用第三方變量互換原理。

題目明確不能使用第三方變量。

方式1:

int a = 3,b = 5;

分析:

a =? a+b; //此時a = 8

b =? a-b;//此時b = 8-5 = 3

a =? a – b;//因為在上一步 b = 3 所以此時 a = 8-3 = 5.

這樣輸出的 a = 5,b=3.a 和 b就互換了。

雖然使用這種方式也可實現a與b的互換。但是如果a和b都比較大

那么 a+b就有可能超出int范圍。這樣就會出現類型強制轉換或是精度丟失的錯誤。

方案二:

使用異或運算。

從上面講解我們知道 一個數異或另一個數兩次之后,結果還是這個數的本身。

所以:

分析原因:

a = a^b;??? //這個沒什么說的 此時a = a^b了

b = a^b;??? //這個時候因為上一步 a= a^b了。此時 b = ((a^b)^b)。其實 b = a

a = a^b;??? //有第一步 a = a^b ,有第二步 b = a。所以此時 a =( (a^b)^a).其實就是 a =b

將a b數據帶入:

三元運算符

三元運算符(三目運算):三個元素參與運算的符號。

代碼:

練習:

需求:比較兩個整數,輸出其中交大的

代碼:

/**

三元運算符練習:

需求:

比較兩個整數,輸出其中交大的

**/

class OperatTest{

public static void main (String [] args){

int a = 5;

int b = 3;

System.out.println("a,b中較大的值為:"+ (a>b?a:b));

}

}

輸出結果為:

練習二:

需求:求三個整數中較大的。

代碼(部分):

//求三個整數中較大的。

int o =3,p =6,q = 1;

int temp = (o>p?o:p);

int max = temp>q?temp:q;

System.out.println("三個數中較大的值為:"+ max);

結果:

ps:歡迎關注凱哥微信公眾號:凱哥Java

?

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的java 十 = 0_从零学java笔录-第10篇 数据类型(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。