對(duì)象數(shù)組(也是你上面所說(shuō)的引用數(shù)組)你在聲明初始化后,JAVA給它的默認(rèn)值就是為null值的,只有自己再去實(shí)例化具體的對(duì)象,它才不為null。所以你不去實(shí)例化,調(diào)用它的方法就會(huì)報(bào)那個(gè)空指針的異常!
創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括譙城網(wǎng)站建設(shè)、譙城網(wǎng)站制作、譙城網(wǎng)頁(yè)制作以及譙城網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,譙城網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到譙城省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
附:注意下聲明并初始化不同類型的數(shù)組時(shí)它給的默認(rèn)值是什么就好了,相當(dāng)于int[] a = new int[3],則表明數(shù)組a里面的元素默認(rèn)都為0
你想寫(xiě)引用數(shù)組,首先要明白引用是什么。
引用是變量空間存儲(chǔ)的是值的內(nèi)存地址而不是拷貝。
數(shù)組是個(gè)對(duì)象,所以數(shù)組就是引用類型。
你所說(shuō)的引用數(shù)組我估計(jì)是引用現(xiàn)有數(shù)組,
那么,你只要將現(xiàn)有創(chuàng)建好的數(shù)組賦給新聲明的數(shù)組即可。
int[] arr1 = {1,2,3};
int[] arr2 = arr1;
因?yàn)閿?shù)組是一個(gè)對(duì)象。。
java中的參數(shù)傳遞是引用傳遞。。
傳遞到
public B(String[] sss,String s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
這里的sss是那個(gè)數(shù)組對(duì)象的一個(gè)引用。。相當(dāng)于指針。。
sss[0]="bbbbb";
sss[1]="ccccc";
這樣處理相當(dāng)于是在調(diào)用這個(gè)數(shù)組的對(duì)象的方法。。
即相當(dāng)于在對(duì)這個(gè)對(duì)象做處理。。
所以這個(gè)對(duì)象的值改變了。。
但是String [] a={null,"aaaaa"};a這個(gè)引用依然指向那個(gè)對(duì)象。。所以輸出結(jié)果就是改變后的結(jié)果。。
假如你將
public B(String[] sss,String s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
改為
public B(String[] sss,String s){
String[] strs = new String[2];
strs[0]="bbbbb";
strs[1]="ccccc";
sss = strs;
s="2222";
}
這樣的話..是不會(huì)改變那個(gè)對(duì)象的值的..
只是對(duì)sss這個(gè)引用重新賦值..讓他指向了另一個(gè)對(duì)象而已..
這樣的話前面的a引用依然指向那個(gè)對(duì)象..那個(gè)對(duì)象的值也不會(huì)改變..
為什么那個(gè)String對(duì)象的值沒(méi)有改變呢..
跟上面一樣了..
只是對(duì)s引用重新賦值了..讓他指向了一個(gè)新的String對(duì)象..
而String aa="111111";aa依然指向的是值為111111的這個(gè)String對(duì)象..
因?yàn)閿?shù)組是一個(gè)對(duì)象。。
java中的參數(shù)傳遞是引用傳遞。。
傳遞到
public
b(string[]
sss,string
s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
這里的sss是那個(gè)數(shù)組對(duì)象的一個(gè)引用。。相當(dāng)于指針。。
sss[0]="bbbbb";
sss[1]="ccccc";
這樣處理相當(dāng)于是在調(diào)用這個(gè)數(shù)組的對(duì)象的方法。。
即相當(dāng)于在對(duì)這個(gè)對(duì)象做處理。。
所以這個(gè)對(duì)象的值改變了。。
但是string
[]
a={null,"aaaaa"};a這個(gè)引用依然指向那個(gè)對(duì)象。。所以輸出結(jié)果就是改變后的結(jié)果。。
假如你將
public
b(string[]
sss,string
s){
sss[0]="bbbbb";
sss[1]="ccccc";
s="2222";
}
改為
public
b(string[]
sss,string
s){
string[]
strs
=
new
string[2];
strs[0]="bbbbb";
strs[1]="ccccc";
sss
=
strs;
s="2222";
}
這樣的話..是不會(huì)改變那個(gè)對(duì)象的值的..
只是對(duì)sss這個(gè)引用重新賦值..讓他指向了另一個(gè)對(duì)象而已..
這樣的話前面的a引用依然指向那個(gè)對(duì)象..那個(gè)對(duì)象的值也不會(huì)改變..
為什么那個(gè)string對(duì)象的值沒(méi)有改變呢..
跟上面一樣了..
只是對(duì)s引用重新賦值了..讓他指向了一個(gè)新的string對(duì)象..
而string
aa="111111";aa依然指向的是值為111111的這個(gè)string對(duì)象..
如果只是要測(cè)試把數(shù)組的內(nèi)容輸出來(lái),那直接把
thisArray=BasicArray.a;這句注釋掉就可以了。
你一定要賦值那可以這樣:
thisArray.a = thatArray.a;// 用定義的引用去調(diào)a
不過(guò)做這個(gè)賦值操作沒(méi)有必要,不影響運(yùn)行響結(jié)果。