天天看點

Java文法基礎(二)----運算符

一、運算符:

運算符包括下面幾種:

算術運算符

指派運算符

比較運算符

邏輯運算符

位運算符

三目運算符

最不常用的是位運算符,但也是最接近計算機底層的。

1、算術運算符

Java文法基礎(二)----運算符

(1)+的幾種用法:加法、正數、字元串連接配接符

(2)除法的時候要注意一個問題:整數相除,隻能得到整數。要想得到小數,可以将資料自身*1.0,即将資料自身先轉換為浮點型。

2、指派運算符

符号     =    +=  -=   *=  /=   %=

注:=為基本的指派運算符,其他的為擴充的指派運算符

面試題:

(1)short s=1, s = s+1;

(2) short s=1, s+=1;

上面兩個代碼有沒有問題,如果有,哪裡有問題?

答案:代碼(1)是有錯誤的,會損失精度,byte,short在定義的時候,他們接收的其實是一個int類型的值。這個是自己做了一個資料檢測的,如果不再它們的範圍内,就報錯。效果如下:

Java文法基礎(二)----運算符

代碼(2)沒有錯誤,因為:擴充的指派運算符其實隐含了一個強制類型轉換。

也就是說,i += 1;  不是等價于 i = i + 1; 而是等價于 i = (i的資料類型)(s + 1);

Java文法基礎(二)----運算符

3、關系運算符

Java文法基礎(二)----運算符

注1:比較運算符的結果都是boolean型,也就是要麼是true,要麼是false。

注2:比較運算符“==”不能誤寫成“=” 。舉例:

Java文法基礎(二)----運算符

4、邏輯運算符

Java文法基礎(二)----運算符

(1)邏輯運算符用于連接配接布爾型表達式,在java中不可以寫成3<x<6,應該寫成x>3 & x<6 。

(2)“&”和“&&”的差別?同理, “|”和“||”的差別?

a:最終結果都一樣。例如:a和b必須同時為真,a&b、a&&b的結果才為真。

b:&&具有短路效果,左邊是false,右邊不執行。||具有短路效果,左邊是true,右邊不執行。

注:開發中常用的邏輯運算符:  &&,||,!

(3)異或( ^ )與或( | )的不同之處是:當左右都為true時,異或的結果為false。

5、位運算符:

Java文法基礎(二)----運算符

雖然開發中用的不多,但會在很多源碼中看到,因為計算機底層的計算都是位運算。

面試題1:實作兩個整數變量的交換

代碼如下:

Java文法基礎(二)----運算符
Java文法基礎(二)----運算符

<code> </code>

面試題2:請用最有效率的方式寫出計算2乘以8的結果。

答案:2 * 8等價于2 &lt;&lt; 3

知識回顧:

    &lt;&lt;:左移    左邊最高位丢棄,右邊補齊0

    &gt;&gt;:右移    最高位是0,左邊補齊0;最高為是1,左邊補齊1

    &gt;&gt;&gt;:無符号右移 無論最高位是0還是1,左邊補齊0

6、三目運算符:

格式:(關系表達式)?表達式1:表達式2;

如果條件為true,運算後的結果是表達式1;

如果條件為false,運算後的結果是表達式2;

示例:

擷取兩個數中大數:

擷取三個整數中的最大值:

Java文法基礎(二)----運算符
Java文法基礎(二)----運算符

建議用方式一 。另外,方式二中,第10行和第12行是一樣的,是三目運算符的嵌套使用。

比較兩個整數是否相等:

Java文法基礎(二)----運算符
Java文法基礎(二)----運算符

二 、鍵盤錄入資料

我們目前在寫程式的時候,資料值都是固定的,但是實際開發中,資料值肯定是變化的,是以,我準備把資料改進為鍵盤錄入,提高程式的靈活性。

如何實作鍵盤錄入資料呢?(目前先記住使用)

(1)導包(位置放到class定義的上面):import java.util.scanner;

(2)建立鍵盤錄入對象:scanner sc = new scanner(system.in);

(3)通過對象擷取資料:int x = sc.nextint();

代碼舉例:

Java文法基礎(二)----運算符