基礎(chǔ)知識
共八種數(shù)據(jù)類型:4種整型(byte, short, int, long),2種浮點(diǎn)型(float,double),booean,char
| 類型 | 名稱 | 占幾個字節(jié) | 范圍 | 后綴、表示法 |
|---|---|---|---|---|
| 整型 | byte | 1 | 2^8/2 = -128,最大-128~127 | 無,超過范圍報(bào)錯 |
| 整型 | short | 2 | 2^16/2 = 32767,-32768~32767 | 無,超過范圍報(bào)錯 |
| 整型 | int | 4 | 2^32/2 = 約21億 | 無,超過范圍報(bào)錯,默認(rèn)類型 |
| 整型 | long | 8 | 2^64/2 = 約1000億億 | l或L,如果不加則為int轉(zhuǎn)換為long,大于int最大值時(shí)報(bào)錯 |
| 浮點(diǎn)型 | float | 4 | 最大10^38 | 必須加f或F |
| 浮點(diǎn)型 | double | 8 | 最大10^308 | 無,超過范圍報(bào)錯,默認(rèn)類型 |
| 布爾型 | boolean | 官方未公布 | true/false | |
| 字符型 | char | 2 | Java中使用UTF-16儲存字符 |
整型的賦值
- 一個整數(shù)默認(rèn)作為int類型處理
int i = 100 - 變量是long,小于int最大值,則引發(fā)自動類型轉(zhuǎn)換,int轉(zhuǎn)換為long
long i = 100 - 變量是long,大于int最大值,編譯出錯,數(shù)字必須加L
long i = 100000000000000000 //編譯出錯
long i = 100000000000000000L //編譯通過 - 變量是byte、short、int,小于對應(yīng)最大值,引發(fā)自動類型轉(zhuǎn)換
short i = 10 //int類型的10自動轉(zhuǎn)換為short - 變量是byte、short、int,大于對應(yīng)最大值,編譯出錯,可以強(qiáng)制類型轉(zhuǎn)換,但數(shù)字會有變化。
short i = 10000000 //編譯出錯
short i = (short)10000000 //數(shù)字會被截?cái)?/code>
字符型
Java中的char類型使用unicode,unicode是一個16位的字符集,最大容量65535,容納了全世界所有書面語言的字符,Java采用UTF-16將unicode編碼為16位數(shù)字,用于儲存或傳輸。
char類型可以通過以下三種方式初始化:
char ch = 'A'
char ch = 65
char ch = '\u0041'
十六進(jìn)制的0041就是A在unicode中的碼點(diǎn),十六進(jìn)制0041的十進(jìn)制數(shù)就是65
浮點(diǎn)數(shù)
- 浮點(diǎn)數(shù)有兩種表示法:加小數(shù)點(diǎn)、用e
- 沒有小數(shù)點(diǎn)和e的數(shù)值,都當(dāng)作int
- float占4字節(jié),32位,其中符號1位,尾數(shù)23位,指數(shù)8位(-128-127),底數(shù)為2,轉(zhuǎn)為底數(shù)10后范圍是±3.40E+38
- double占8字節(jié),64位,其中符號1位,尾數(shù)52位,指數(shù)11位(-1024-1023),底數(shù)為2,轉(zhuǎn)為底數(shù)10后范圍是±1.79E+308
- 商業(yè)計(jì)算中需要精確表示一個數(shù),推薦使用BigDecimal
- 還有三個特殊的數(shù),
Infinity、-Infinity、NaN,
1.0/0.0會得到Infinity,1/0則會拋出異常
類型轉(zhuǎn)換
- 數(shù)值范圍小的類型會自動轉(zhuǎn)換為范圍大的類型,順序如下:
byte-short-int-long-float-double
double d = 100, 打印輸出100.0 - char比較特殊,可以自動轉(zhuǎn)換為int和比int大的類型
int f = 'A', 打印輸出65
float f = 'A', 打印輸出65.0 - ""+任意基本類型,都會轉(zhuǎn)換為String
- true + "ABC",輸出trueABC
- 注意:2 + 3 + "ABC",輸出5ABC
- 注意:"ABC" + 2 + 3,輸出ABC23
- String轉(zhuǎn)換為基本數(shù)據(jù)類型
- 基本類型都提供了各自的包裝類:Integer、Float、Boolean等
- 除了char,其他都提供一個parseXxx(String str)方法將String轉(zhuǎn)換為各自類型
int i = Integer.parseInt("100")
double i = Double.parseDouble("100.0")
- 基本類型轉(zhuǎn)換為String
- 對所有基本類型,都可以采用String.valueof(任意基本類型)
- 更常用的,使用""+基本類型,即可轉(zhuǎn)換為String
- 表達(dá)式中的類型轉(zhuǎn)換
一個表達(dá)式的返回值總是表達(dá)式中最高級的那個數(shù)據(jù)類型
123d + 12,返回double類型
3 / 2, 返回int類型,1.5直接截?cái)酁?