今天去筆試一家小公司發(fā)現(xiàn)自己的Java基礎(chǔ)知識太薄弱,所以決定惡補自己的Java搜骡。如題,這個問題在今天的筆試題中出現(xiàn)了蹦玫,在其他面試BAT的同學(xué)的面經(jīng)中也有看過啊片,屬于基礎(chǔ)題只锻,但卻很容易被人忽略,比如我钠龙。
Java的八種數(shù)據(jù)類型包括:四種整型炬藤,兩種浮點型御铃,一種字符型,一種用于表示真值的布爾型沈矿。
String不是基本數(shù)據(jù)類型上真。
1.整型
以上圖片詳細(xì)說明了Java的四種整型的分類、占據(jù)的存儲空間和取值范圍羹膳,整型可以表示計算機中常用的四種進(jìn)制:二進(jìn)制睡互、八進(jìn)制、十進(jìn)制和十六進(jìn)制陵像。二進(jìn)制的數(shù)需要在前面加上0b就珠,如0b101表示5;八進(jìn)制需要在數(shù)字面前加上0醒颖,如010表示十進(jìn)制中的8妻怎,但這樣容易混淆,所以不建議使用八進(jìn)制泞歉;十六進(jìn)制的數(shù)需要在前面加上0x逼侦,比如0x11表示17
與C++中整型的區(qū)別:
a.Java中的整型存儲要求與機器無關(guān),從一臺機器移植到另外一臺機器上運行不會報錯腰耙;C++中的整型存儲與機器有關(guān)榛丢,比如int型在16位的機器上占用2字節(jié),在32位的機器上占用4字節(jié)挺庞,而在64位的機器上占用8字節(jié)晰赞,所以在32位機器上寫的代碼放到16位的機器上運行可以會發(fā)生溢出。
b.Java中沒有無符號整數(shù)而C++有(unsigned類型)
2.浮點型
來自Java技術(shù)核心卷1
一個不加任何修飾符的小數(shù)默認(rèn)為double類型选侨,float類型的小數(shù)需要在小數(shù)后面加上后綴F加以區(qū)分掖鱼,如3.14F
注意:
a.double類型中有三個特殊的常量:Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY和Double.NaN侵俗,分別表示正無窮大锨用、負(fù)無窮大和非數(shù)值丰刊。
b.浮點數(shù)使用二進(jìn)制系統(tǒng)進(jìn)行表示隘谣,所以計算時會有誤差,比如System.out.print(2.0-1.1);輸出是0.8999999999999999啄巧。
c.使用String.format("%.xf",a);方法可以指定小數(shù)保留小數(shù)點后x位輸出寻歧,其中x表示保留小數(shù)點后的位數(shù),a為你要輸出的數(shù)字秩仆。如圖:
這幾行代碼段輸出結(jié)果是:
3.字符型
字符型只有一種码泛,就是char,用單引號括住一個字符來表示澄耍,如'a'噪珊,與字符串要區(qū)別開來晌缘,字符串使用雙引號來表示,如"a"痢站。
有一些有特殊意義的字符磷箕,在字符面前加/加以區(qū)分,如/u表示這是一個Unicode字符阵难,還有一些特殊的轉(zhuǎn)義字符岳枷,如下圖:
4.布爾型
布爾型是最簡單的數(shù)據(jù)類型,它只有兩個值呜叫,true和false空繁,在判斷時使用。
與C++的區(qū)別:
C++中0可以代替false朱庆,非0值相當(dāng)于true盛泡,但在java中不可以這樣,如:if(x=0)在C++中永遠(yuǎn)為false娱颊,因為它先把0賦值給x然后判斷x是否不等于0饭于,而在java中這種情況會報錯:不能將其他類型轉(zhuǎn)化成布爾型。
That's all.