Java數(shù)組指針的原理特效
忙于項(xiàng)目管理,有陣子沒有關(guān)注具體代碼實(shí)現(xiàn)了,會(huì)看一些代碼還是有些恍惚,故抽出時(shí)間重新總結(jié)以前所學(xué),技術(shù)是根本再忙也不能荒廢:
1.靜態(tài)初始化與動(dòng)態(tài)初始化的原理是一樣的
2.java數(shù)組名就是指針
3.常數(shù)組即常指針,可改值不可改地址
網(wǎng)上摘了現(xiàn)成的代碼直接跑一邊就能總結(jié)出指針特性。
代碼塊
代碼塊語(yǔ)法遵循標(biāo)準(zhǔn)markdown代碼,例如:
package?transformation;import?java.io.BufferedReader;import?java.io.ByteArrayInputStream;import?java.io.ByteArrayOutputStream;import?java.io.IOException;import?java.io.InputStreamReader;import?java.io.ObjectInputStream;import?java.io.ObjectOutputStream;import?java.io.Serializable;import?java.security.MessageDigest;import?java.security.NoSuchAlgorithmException;import?java.util.Arrays;import?java.util.HashMap;import?java.util.Iterator;import?java.util.Map;public?class?shuzu_zhizheng?{????public?static?void?swap(int?a[],int?i,int?j)??????{??????????int?t?=?a[i];??????????a[i]?=?a[j];??????????a[j]?=?t;??????}??????public?static?int[]?a()?{??????????int[]?a?=?{?2,?1?};??????????return?a;??????}??????static?final?int?arr4[]?=?{?8,?3,?5,?1,?4,?2,?7?};?????public?static?void?main(String?args[])?{?????????//1,?靜態(tài)初始化與動(dòng)態(tài)初始化的原理是一樣的??????????int[]?arr?=?{?8,?3,?5,?1,?4,?2,?7?};//?靜態(tài)初始化??????????int[]?arr2?=?new?int[]?{?8,?3,?5,?1,?4,?2,?7?};//?動(dòng)態(tài)初始化??????????//?因?yàn)閯?chuàng)建數(shù)組的原理是一樣的,都是在堆空間里申請(qǐng)內(nèi)存并賦值,所以使用也沒有去別??????????arr[0]?=?0;//arr?=?[0,?3,?5,?1,?4,?2,?7]??????????arr2[0]?=?0;//arr2?=?[0,?3,?5,?1,?4,?2,?7]??????????//2,java數(shù)組名就是指針??????????//論據(jù)1?使用指針修改原來(lái)數(shù)組的值??????????int[]?arr3?=?arr;//?arr3?就是java的指針了?相當(dāng)于?C語(yǔ)言的?int?*arr3?=?arr;指針arr3指向arr的地址??????????arr3[1]?=?0;//使用arr3指針修改arr的1號(hào)地址的值,??????????System.out.println(Arrays.toString(arr));//?這時(shí)arr?=?[0,?0,?5,?1,?4,?2,?7]??????????//論據(jù)2?使用指針指向新數(shù)組的值??????????arr?=?a();//?arr?=?[2,?1]?arr的地址指向了方法a中的變量a在堆空間申請(qǐng)的地址。arr3仍然指向arr的原地址??????????System.out.println(Arrays.toString(arr));//?[2,?1]??????????System.out.println(Arrays.toString(arr3));//?[0,?0,?5,?1,?4,?2,?7]??????????//論據(jù)3?引用傳址??????????swap(arr,0,1);??????????System.out.println(Arrays.toString(arr));//?[1,?2]????????????????????//論據(jù)4?java數(shù)組不是數(shù)組????????????????????//論據(jù)5?java數(shù)組可以有常指針但沒有常量????????????????????arr4[0]?=?0;//編譯通過(guò)?數(shù)組的值不是常量??//??????arr4?=?arr;//此處編譯不通過(guò)?指針arr4是常指針不可以指向新地址。???????????????????}???}
以上就是長(zhǎng)沙達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“你需要了解的,Java數(shù)組指針的原理特效”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。