国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

閑話Java中的類型轉(zhuǎn)換

2019-11-18 15:44:47
字體:
供稿:網(wǎng)友

  要說類型轉(zhuǎn)換,首先要說一說java的數(shù)據(jù)類型。java中的數(shù)據(jù)類型分為兩種:基本類型、引用類型。基本數(shù)據(jù)類型沒有什么好說的byte char short int long float double boolean,這些類型除了boolean之外,其他的與C語言中的類型沒有太大的區(qū)別。
因?yàn)檫@篇文章的論題是類型轉(zhuǎn)換,所以在此不討論boolean值的用法。

  下面要說的是引用類型。引用在有的書里也叫做句柄,它很類似C/C++中的指針,但要注重引用和指針并不是同一個概念。指針是一個存放地址的變量,他使C/C++程序員能夠靈活地訪問內(nèi)存,但這也給程序的安全性帶來了很大的隱患,由于程序員可以對指針隨意的運(yùn)算操作,所以一不留神就會破壞其他的存儲單位,導(dǎo)致程序中出現(xiàn)意想不到的結(jié)果。引用繼續(xù)了指針節(jié)省內(nèi)存的優(yōu)點(diǎn),又限制了對地址的操作,所以他是安全的。引用類型包括所有類生成的實(shí)例和數(shù)組(不管是對象數(shù)組還是基本類型數(shù)組都實(shí)現(xiàn)Cloneable接口,所以他也是一個對象實(shí)例),所有引用類型都繼續(xù)自O(shè)bject這個類。要說明一點(diǎn)的是java中的所有變量都是一個引用,不管是引用類型還是基本類型。

  現(xiàn)在要正式討論類型的轉(zhuǎn)換了。用過C/C++的人對基本類型的轉(zhuǎn)換都會很清楚,基本類型轉(zhuǎn)換分為類型提升和強(qiáng)制轉(zhuǎn)換。

  例如:

int a=100;
long b=a+100;//這個地方就用到了類型提升,a+100從int提升到了long
a=(int)b;//這個地方用到了強(qiáng)制轉(zhuǎn)換
  強(qiáng)制類型轉(zhuǎn)換在某種情況下會丟失精度,如:

byte b;
int a=200;
b=(byte)a;//雖然這里用到了強(qiáng)制轉(zhuǎn)換,但因?yàn)閎yte的范圍是-127到127
//所以強(qiáng)制轉(zhuǎn)換后寬度會被截短
  在java中除了這些轉(zhuǎn)換之外基本數(shù)據(jù)類型還可以被隱式的轉(zhuǎn)換成String,例如:

System.out.//就會隱式的轉(zhuǎn)換成String
  引用類型的轉(zhuǎn)換實(shí)現(xiàn)起來要比C++簡單的多,假如一個對象與另一個對象沒有任何的繼續(xù)關(guān)系,那么他們就不能進(jìn)行類型轉(zhuǎn)換。假如要把一個派生類對象賦值給基類對象這個稱為上溯造型。假如要把基類對象賦值給派生類對象就需要強(qiáng)制類型轉(zhuǎn)換,這稱為下溯造型,下溯造型有一些危險,要安全的進(jìn)行下溯造型有一個前題,基類對象必須是從派生類對象中上溯過來的。

  例如:

class Base{}
class Child extends Base{
 public static void main(String[] args){
  Base base=new Child();//上溯造型
  Child child=(Child)base;//下溯造型
  Child child1=(Child)new

  Base();//拋出ClassCastException異常
 }
}
  最后,談一談String與引用類型的轉(zhuǎn)換。前面已經(jīng)說過,所有的對象都是從Object繼續(xù)過來的,Object中有一個toString方法。這個方法是所有的對象都可以轉(zhuǎn)換成String,假如想把自定義的類轉(zhuǎn)換成String,最安全的做法是重寫toString方法。和基本類型一樣假如對象前有String對象用+連接,對象就會隱式轉(zhuǎn)換成String,這種情況實(shí)際上是隱式調(diào)用了toString方法。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 和硕县| 建湖县| 洱源县| 金寨县| 黄山市| 无棣县| 阜新市| 祁门县| 保山市| 潜山县| 泸西县| 仙游县| 曲沃县| 丰县| 翁牛特旗| 蒲江县| 理塘县| 湟中县| 昭平县| 邯郸市| 西和县| 阿克陶县| 濉溪县| 平泉县| 白河县| 卢氏县| 阿巴嘎旗| 富顺县| 德令哈市| 项城市| 镇康县| 普格县| 隆安县| 弥渡县| 铜陵市| 名山县| 洞头县| 舞阳县| 盐源县| 乌苏市| 汾阳市|