資源描述:
《數(shù)據(jù)類型轉(zhuǎn)換》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、本文向大家描述一下Java數(shù)據(jù)類型轉(zhuǎn)換,Java語言的Java數(shù)據(jù)類型有兩大類:一類是簡單類型,也稱主要類型(Primitive),另一類是引用類型(Reference)。簡單類型變量中存儲的是具體的值,而引用類型的變量中存儲的是對象的引用。Java數(shù)據(jù)類型轉(zhuǎn)換1.Java的簡單類型及其封裝器類⑴Java簡單類型與封裝類我們知道,Java語言是典型的支持面向?qū)ο蟮某绦蛘Z言,但考慮到有些基本Java數(shù)據(jù)類型的結(jié)構(gòu)簡單,占內(nèi)存小且存取速度快等優(yōu)點(diǎn),Java依然提供了對這些非面向?qū)ο蟮暮唵蜫ava數(shù)據(jù)類型的支持。當(dāng)然,Java在提供大量的其它類時(shí),也提供了與簡單Java數(shù)據(jù)類型對
2、應(yīng)的封裝類,于是,Java中就有了諸如int和Integer(float和Float、double和Double……)的不同的Java數(shù)據(jù)類型。Java語言的Java數(shù)據(jù)類型有兩大類:一類是簡單類型,也稱主要類型(Primitive),另一類是引用類型(Reference)。簡單類型變量中存儲的是具體的值,而引用類型的變量中存儲的是對象的引用。Java決定了每種簡單類型的大小。這些大小并不隨著機(jī)器結(jié)構(gòu)的變化而變化。這種大小的不可更改正是Java程序具有很強(qiáng)移植能力的原因之一。下表列出了Java中定義的簡單類型、占用二進(jìn)制位數(shù)及對應(yīng)的封裝器類。表Java中的簡單類型⑵為什么使
3、用封裝類以int和Integer為例來說,雖然從本質(zhì)上它們都代表一個(gè)32位的整數(shù),但它們卻是不同的Java數(shù)據(jù)類型。事實(shí)上,Java中直接使用的整數(shù)都為int(就int和Integer而言),只有當(dāng)數(shù)據(jù)必須作為對象的身份出現(xiàn)時(shí),才必須用int對應(yīng)的封裝器Intege將整數(shù)值封裝成對象。例如:為給java.util包中的Vector添加一個(gè)整數(shù),就必須如下將該整數(shù)值封裝在一個(gè)Integer實(shí)例中:1Vectorv=newVector();2intk=121;3v.addElemt(newInteger(k));4另外,Integer作為int對應(yīng)的封裝器類,提供了許多的方法,
4、比如:Integer的構(gòu)造方法、Integer向其它各種數(shù)值類型的轉(zhuǎn)換方法等等,而這些是int類型數(shù)據(jù)所沒有的。簡單Java數(shù)據(jù)類型之間的轉(zhuǎn)換簡單類型數(shù)據(jù)間的轉(zhuǎn)換,有兩種方式:自動轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換,通常發(fā)生在表達(dá)式中或方法的參數(shù)傳遞時(shí)。⑴JAVA數(shù)據(jù)類型自動轉(zhuǎn)換具體地講,當(dāng)一個(gè)較“小”數(shù)據(jù)與一個(gè)較“大”的數(shù)據(jù)一起運(yùn)算時(shí),系統(tǒng)將自動將“小”數(shù)據(jù)轉(zhuǎn)換成“大”數(shù)據(jù),再進(jìn)行運(yùn)算。而在方法調(diào)用時(shí),實(shí)際參數(shù)較“小”,而被調(diào)用的方法的形式參數(shù)數(shù)據(jù)又較“大”時(shí)(若有匹配的,當(dāng)然會直接調(diào)用匹配的方法),系統(tǒng)也將自動將“小”數(shù)據(jù)轉(zhuǎn)換成“大”數(shù)據(jù),再進(jìn)行方法的調(diào)用,自然,對于多個(gè)同名的重載方法,會
5、轉(zhuǎn)換成最“接近”的“大”數(shù)據(jù)并進(jìn)行調(diào)用。這些類型由“小”到“大”分別為(byte,short,char)--int--long--float—double。這里我們所說的“大”與“小”,并不是指占用字節(jié)的多少,而是指表示值的范圍的大小。請看下面的示例:①下面的語句可以在Java中直接通過:1byteb;2inti=b;3longl=b;4floatf=b;5doubled=b;②如果低級類型為char型,向高級類型(整型)轉(zhuǎn)換時(shí),會轉(zhuǎn)換為對應(yīng)ASCII碼值,例如6charc='c';7inti=c;8System.out.println("output:"+i);輸出:ou
6、tput:99;③對于byte,short,char三種類型而言,他們是平級的,因此不能相互自動轉(zhuǎn)換,可以使用下述的強(qiáng)制類型轉(zhuǎn)換。9shorti=99;10charc=(char)i;11System.out.println("output:"+c);輸出:output:c;④對象多態(tài)中若有方法:12f(bytex){……};13f(shortx){……};14f(intx){……};15f(longx){……};16f(floatx){……};17f(doublex){……};18又有:chary=’A’;那么,語句f(y)會調(diào)用哪一個(gè)方法呢?答案是:f(intx){……
7、}方法,因?yàn)樗男螀⒈葘?shí)參“大”且是最“接近”的。而對于方法:19f(floatx){……};20f(doublex){……};21又有:longy=123L;那么,語句f(y)調(diào)用的方法則是f(floatx){……}。⑵強(qiáng)制JAVA數(shù)據(jù)類型轉(zhuǎn)換將“大”數(shù)據(jù)轉(zhuǎn)換為“小”數(shù)據(jù)時(shí),你可以使用強(qiáng)制類型轉(zhuǎn)換。即你必須采用下面這種語句格式:22intn=(int)3.14159/2;23可以想象,這種轉(zhuǎn)換肯定可能會導(dǎo)致溢出或精度的下降。注:①當(dāng)字節(jié)類型變量參與運(yùn)算,java作自動數(shù)據(jù)運(yùn)算類型的提升,將其轉(zhuǎn)換為int類型。24