關(guān)于引用類型是什么意思,引用類型這個(gè)問(wèn)題很多朋友還不知道,今天小六來(lái)為大家解答以上的問(wèn)題,現(xiàn)在讓我們一起來(lái)看看吧!
1、最簡(jiǎn)答來(lái)說(shuō)除了8中基本類型以外剩下的都是引用類型Java 提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)。
2、Int是java的原始數(shù)據(jù)類型,Integer是java為int提供的封裝類。
3、Java為每個(gè)原始類型提供了封裝類。
4、 原始類型封裝類 boolean -->Boolean char --->Character byte -->Byte short -->Short int -->Integer long -->Long float -->Float double -->Double 引用類型和原始類型的行為完全不同,并且它們具有不同的語(yǔ)義。
5、引用類型和原始類型具有不同的特征和用法,它們包括:大小和速度問(wèn)題,這種類型以哪種類型的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),當(dāng)引用類型和原始類型用作某個(gè)類的實(shí)例數(shù)據(jù)時(shí)所指定的缺省值。
6、對(duì)象引用實(shí)例變量的缺省值為 null,而原始類型實(shí)例變量的缺省值與它們的類型有關(guān)。
7、同時(shí)為了面向?qū)ο蟛僮鞯囊恢滦裕@些基本類型都有相應(yīng)的封裝類型:Integer、Short、Long、Byte、Float、Double、Character等。
8、 因?yàn)榉庋b類型是對(duì)象,所以可以進(jìn)行相應(yīng)的很多對(duì)象能力函數(shù)操作,這樣就可以提供很多基本類型難以完成的工作的完成和實(shí)現(xiàn)。
9、 你可以通過(guò)以下方式來(lái)聲明該類型。
10、 int a,a為int類型的變量 char a,a為char類型的 String對(duì)象 1. 首先String不屬于8種基本數(shù)據(jù)類型,String是一個(gè)對(duì)象。
11、 因?yàn)閷?duì)象的默認(rèn)值是null,所以String的默認(rèn)值也是null;但它又是一種特殊的對(duì)象,有其它對(duì)象沒(méi)有的一些特性。
12、 2. new String()和new String(“”)都是申明一個(gè)新的空字符串,是空串不是null; 3. String str=”punkll”; String str=new String (“punkll”);的區(qū)別: 在這里,我們不談堆,也不談棧,只先簡(jiǎn)單引入常量池這個(gè)簡(jiǎn)單的概念。
13、 常量池(constant pool)指的是在編譯期被確定,并被保存在已編譯的.class文件中的一些數(shù)據(jù)。
14、它包括了關(guān)于類、方法、接口等中的常量,也包括字符串常量。
15、 看例1: String s0=”punkll”; String s1=”punkll”; String s2=”punk” + “l(fā)l”; system.***.println( s0==s1 ); system.***.println( s0==s2 ); 結(jié)果為: true true 首先,我們要知結(jié)果為道Java會(huì)確保一個(gè)字符串常量只有一個(gè)拷貝。
16、 因?yàn)槔又械膕0和s1中的”punkll”都是字符串常量,它們?cè)诰幾g期就被確定了,所以s0==s1為true;而”punk”和”ll”也都是字符串常量,當(dāng)一個(gè)字符串由多個(gè)字符串常量連接而成時(shí),它自己肯定也是字符串常量,所以s2也同樣在編譯期就被解析為一個(gè)字符串常量,所以s2也是常量池中”punkll”的一個(gè)引用。
17、 所以我們得出s0==s1==s2; 用new String() 創(chuàng)建的字符串不是常量,不能在編譯期就確定,所以new String() 創(chuàng)建的字符串不放入常量池中,它們有自己的地址空間。
18、 看例2: String s0=”punkll”; String s1=new String(”punkll”); String s2=”punk” + new String(“l(fā)l”); system.***.println( s0==s1 ); system.***.println( s0==s2 ); system.***.println( s1==s2 ); 結(jié)果為: false false false 例2中s0還是常量池中”punkll”的應(yīng)用,s1因?yàn)闊o(wú)法在編譯期確定,所以是運(yùn)行時(shí)創(chuàng)建的新對(duì)象”punkll”的引用,s2因?yàn)橛泻蟀氩糠謓ew String(“l(fā)l”)所以也無(wú)法在編譯期確定,所以也是一個(gè)新創(chuàng)建對(duì)象”punkll”的應(yīng)用;明白了這些也就知道為何得出此結(jié)果了。
本文分享完畢,希望對(duì)大家有所幫助。
標(biāo)簽:
免責(zé)聲明:本文由用戶上傳,如有侵權(quán)請(qǐng)聯(lián)系刪除!