Java初學者:基本數據類型的強制類型轉換


前文書我們講到了基本的輸入輸出,今天我們再回到基本的數據類型那里,但是我們不會贅述之前的內容,我們今天講一講下強制類型轉換。

    首先我們需要明確一下概念,明確一下什么叫作強制類型轉換,強制類型轉換就是以強制的手段把一個數據類型的數據轉換成其他數據類型的數據。

    舉個例子,假設我們有個整型數據9,我們要強制把它轉換成浮點型數據,我們知道,如果不考慮取值范圍的話,浮點型數據就是數學里面的小數,大家覺得轉換以后會怎么樣呢?這不難猜測,應該會變成9.0,事實也是如此。再比如,我們有個浮點型數據6.7,如果我們強制轉換成整形數據呢?我們知道,如果不考慮取值范圍的話,整型數據也就是數學里的整數,大家覺得轉換以后會怎么樣呢?按照我們的猜測,四舍五入,似乎應該等於7,但是事實上,java會給你6,而不是7(雖然也能得到7,但那是Math下的內建函數干的事情,不屬於強制類型轉換的范疇),也就是說,java只會給你浮點型數據的整數部分,而不會四舍五入。
前文書我們講到了基本的輸入輸出,今天我們再回到基本的數據類型那里,但是我們不會贅述之前的內容,我們今天講一講基本數據類型的強制類型轉換。


    首先我們需要明確一下概念,明確一下什么叫作強制類型轉換,強制類型轉換就是以強制的手段把一個數據類型的數據轉換成其他數據類型的數據。在基本數據類型的范疇,一般有兩類強制類型轉換,數值之間的強制類型轉換,和數值與字符串之間的轉換。


    數值之間的轉換,舉個例子,假設我們有個整型數據9,我們要強制把它轉換成浮點型數據,我們知道,如果不考慮取值范圍的話,浮點型數據就是數學里面的小數,大家覺得轉換以后會怎么樣呢?這不難猜測,應該會變成9.0,事實也是如此。再比如,我們有個浮點型數據6.7,如果我們強制轉換成整形數據呢?我們知道,如果不考慮取值范圍的話,整型數據也就是數學里的整數,大家覺得轉換以后會怎么樣呢?按照我們的猜測,四舍五入,似乎應該等於7,但是事實上,java會給你6,而不是7(雖然也能得到7,但那是Math下的內建函數干的事情,不屬於強制類型轉換的范疇),也就是說,java只會給你浮點型數據的整數部分,而不會四舍五入。怎么轉換呢?比較簡單,比如你想把整型的9轉換成浮點型,那么是這樣的:(double)9,如果你想把浮點型6.7轉換成整型,那么是這樣的:(int)6.7,是不是很簡單呢。


    那么數值與字符串之間的轉換呢?比如把字符串"4.5"轉成浮點數4.5,或者反過來,把浮點型數字4.5轉換成"4.5",這乍一聽起來覺得沒必要,而且,為什么我們非要弄個"4.5"這樣的字符串呢?如果說要print出來的話,直接print浮點型數字,也是可以的啊。從目前所學到的知識來看,確實如此,但是,如果你要做讀取文件的操作,而要對文件里的數字做數值處理,這就需要將表示數字的字符串轉換成數字了,因為,java將讀取的文件內容全都看做字符串,而不是數值。相對的,把浮點型數據轉換成字符串,確實不怎么常用,但是在某些特定的糾結時候,還是不得不用。


    那么,如何將表示數字的字符串轉換為數字呢?這里需要用到Double或者Integer的內建函數,以浮點型為例,整型與其相似。比如我們要把"4.5"轉換成4.5,那么是這樣的


    Double.valueOf("4.5"),或者Double.parseDouble("4.5")。 利用java的反射機制,我們使用 print語句System.out.println(Double.valueOf("4.5").getClass().getSimpleName()),如果運行的話,可以看到java會給出Double,證明我們確實得到了一個浮點型數據。


    還有一種比較簡單但是有投機取巧之嫌的方法就是,用一個空字符串加上一個數字,就會得到一個表示那個數字的字符串, 比如,同樣的功能我們可以這么實現:"" + 4.5。這是利用了java的字符串的操作,我們以后會介紹到。


    數值轉換為字符串,雖然不常用,但是我們還是說一下吧,比如說,把4.5轉換成"4.5",最最簡單的方法是利用java的字符串操作,用一個空字符串加上一個數字,就會得到一個表示那個數字的字符串, 比如,我們可以這么實現:"" + 4.5, 就會得到一個"4.5",但是這有投機取巧之嫌。比較正式的方法其實是利用String的內建方法:String.valueOf(4.5),也許你會注意到,上面我們似乎也用到了valueOf方法,是的,不同的包里面,可能會有同名的內建函數,這沒什么,但是他們的用法和意義可能會不同。不過,Double有parseDouble內建方法,但是String卻並沒有這個方法。


    最后是布爾型,它只有兩個值,true和false, 我至今沒見過布爾型轉換成其它類型,雖然String的內建函數valueOf的參數可以是布爾值,但我並不覺得布爾型轉換成字符串有什么實際意義,也許是小編我比較沒見識,希望大家指正。


    好了,今天暫且說到這里,最后我們做個簡單的程序來練習一下強制類型轉換,在這個程序中,我們要求用戶輸入三個數字,一個是整型,一個是浮點型,一個是字符串,我們假設用戶輸入的都是數字或者表示數字的字符串,然后我們用強制類型轉換,再打印出一些信息。此程序其實沒什么實用性,只是說明一下問題罷了。如下:

好了,我們今天就說到這里,各位看官若是初學者,請與本菜鳥一同共勉。欲知后事如何,且聽下回分解。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM