语言求余和乘除优先级_愉快地学Java语言:第二章基本程序设计 第2讲
導讀
本文適合Java入門,不太適合Java中高級軟件工程師。
本文以《Java程序設計基礎篇》第10版為藍本,采用不斷提出問題,然后解答問題的方式來講述。
本篇文章只是這個系列中的一篇,如果你喜歡這種講解方式,或者覺得從中能學到知識,可以關注我,以便查閱本系列其他文章。
本文是第二章的第2講,如果想看第1講,可以查看:
愉快地學Java語言:第二章基本程序設計 第1講
8數值數據類型和操作
Java中有多少個數值類型,它們都是什么?
一共有六種數值類型,分類歸納為:
- 整數:byte,short,int,long
- 浮點數:float(單精度),doubl(雙精度)
大家不禁會想標準IEEE754是什么?
IEEE 754 是美國電氣電子工程師協會通過的一個標準,用于在計算機上表示浮點數。該標準已被廣泛采用。Java采用32位IEEE 754表示float型,64位IEEE 754表示double型。
都支持哪些種類的操作呢?
支持加(+),減(-),乘(*),除(/),求余(或稱取模,%)
要注意的運算要點有哪些呢?
- 當除數都是整數時,除法結果是整數,小數部分舍棄。
- 對于%,只有當被除數是負數時,余數才是負數。
- 操作符%通常用在正整數上,它也可用于負整數和浮點值。只有當被除數是負數時,余數才是負的。
- 兩個浮點數值的相等測試并不可靠。應該測試兩個浮點數的差小于某個閾值,來比較他們是否接近。
例:
double x =1.0-0.1-0.1
x==0.8//可能為false
此外,使用方法Math.pow(a,b)來計算a的b次冪。
9數值型直接量
前面我們了解了變量,那么下面的代碼中出現的數字是什么呢?
int i =0;
它是直接量。直接量是一個程序中直接出現的常量值。
由于0數字,所以數值型直接量。
數值型直接量的要點包括:
- 數值型直接量包括:整型直接量,浮點型直接量。
- Long型的整型直接量要在數字后加字母L或l。
- 二進制整型直接量以0b或0B開頭,例:0B1111
- 八進制整型直接量以0開頭,例:07777
- 十六進制整型直接量以0X開頭,例:0XFFFF
- 浮點型直接量要在數字后加字母F或f(folat型直接量),D或d(double型直接量)
整型直接量默認是int型的,指的是什么呢?
即,如果一個數字直接出現在代碼中,其后沒有字母,也不任何標志開頭(0b,0B,0,0X開頭),那么它表達整型值。
與此相似地,浮點型直接量默認情況下是double型的。
上面那個表格中,出現了3.4028235E+38這種表示法,那么它是什么呢?
它是科學記數法,用 aX10b的形式表示浮點型直接量。
2_3這種寫法你見過嗎?
它也表示數值型直接量。為了提高可讀性,Java允許在兩個數字之間使用下劃線來表示數值型直接量。
10表達式求值以及操作符優先級
如何對表達式進行求值運算呢?
算數我們都會,其實算數運算規則也適用于表達式求值。
我們都知道,先算乘除,再算加減,那么有多個操作符的時候怎么算呢?
這涉及到運算符優先級的問題,先計算優先級高的,乘除優先級比加減優先級高。乘與除優先級相同,加與減優先級相同。
關于操作符的優先級可以列一個總表,但由于好多操作符目前還沒有接觸,所以暫且不列。
11增強賦值操作符
上面列舉了所有的增強賦值操作符,那么為什么要使用它呢?
看下面這個例子:
int i = 10;
i = i - 1;
這個例子很簡單,首先聲明int型變量i,并初始化賦值10。然后,將i減1,再將結果賦給i。那么此時i的值是9.
有沒有更簡潔的寫法呢?
當然有,i - = 1;
不過,也沒簡潔多少,只是少寫了個字母i而已。
12自增自減操作符
看到命名,你想到了什么嗎?
對了,操作符放到變量前面就是前置操作符,放到后面就是后置操作符。
有沒有發現什么規律?
前置操作符使用變化后的值,后置操作符使用變化前的值。
例如,計算++i相當于計算i=i+1;這樣i當前的值是原值加1后的結果。
13數值類型轉換
什么是類型轉換?
將一種數據類型的值轉換為另一種數據類型的操作。
為什么要轉換類型?
實際應用的需要,再者就是為了合理的存儲數據。
先來看幾個概念:
擴寬類型:將一個小范圍類型的變量轉換為大范圍類型的變量。
縮窄類型:將一個大范圍類型的變量轉換為小范圍類型的變量。Java自動擴寬數據類型,縮窄類型必須執行顯示轉換,如果不顯示轉換會出現編譯錯誤。
能給個形象的比喻嗎?
形象地說,擴寬類型就好比有11個人想進能容納10個人的屋子,縮窄類型就好比能容納10個人的屋子只進了9個人,前者無論如何也容納不下第11個人,后者是對資源的浪費。
例如,顯示轉換
float f = 5.55f;
int i = (int)f;//此時i的值是5。
如果寫成:float f = 5.55;呢?
那么一定會報編譯錯誤,因為別忘了,浮點型直接量默認情況下是double型的,double精度高于float,double轉換為float屬于縮窄類型。
看到左側的紅叉了碼,驗證了我們的判斷。把鼠標方在其上面,看看具體的信息:Type mismatch: cannot convert from double to float
那么在類型轉換中還應該注意點什么呢?
- 類型轉換中,被轉換變量不會被改變。
- 形如x1 op= x2的增強賦值表達式,執行的實際是x1=(T)(x1 op x2),T是x1的類型。
- 浮點型轉換為int,小數部分會被截掉。
14常見錯誤
如果賦給變量的值,超過它的存儲范圍,會怎么樣呢?
這種情形被稱為溢出。超過變量所能承載的最大值、最小值算溢出。然而Java不會給出警告或者報錯。產生的結果會獲讓人覺得奇怪。
例如,int型變量能存儲的最大值是2147483647,最小值是-2147483648
若有下面的賦值表達式:
int i = 2147483647 + 1;
那么此時i的值是-2147483648
若有賦值表達式:
Int i = -2147483648 - 1;
那么此時i的值是2147483647。
每天30分鐘,堅持一個月就能為Java開發打下堅實的基礎!努力學習吧!
總結
以上是生活随笔為你收集整理的语言求余和乘除优先级_愉快地学Java语言:第二章基本程序设计 第2讲的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浙江下架 42 款侵害用户权益 App,
- 下一篇: 二百万存银行一年利息是多少