Java數(shù)組指針的原理特效
忙于項目管理,有陣子沒有關(guān)注具體代碼實現(xiàn)了,會看一些代碼還是有些恍惚,故抽出時間重新總結(jié)以前所學,技術(shù)是根本再忙也不能荒廢:
1.靜態(tài)初始化與動態(tài)初始化的原理是一樣的
2.java數(shù)組名就是指針
3.常數(shù)組即常指針,可改值不可改地址
網(wǎng)上摘了現(xiàn)成的代碼直接跑一邊就能總結(jié)出指針特性。
代碼塊
代碼塊語法遵循標準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)初始化與動態(tài)初始化的原理是一樣的??????????int[]?arr?=?{?8,?3,?5,?1,?4,?2,?7?};//?靜態(tài)初始化??????????int[]?arr2?=?new?int[]?{?8,?3,?5,?1,?4,?2,?7?};//?動態(tài)初始化??????????//?因為創(chuàng)建數(shù)組的原理是一樣的,都是在堆空間里申請內(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?使用指針修改原來數(shù)組的值??????????int[]?arr3?=?arr;//?arr3?就是java的指針了?相當于?C語言的?int?*arr3?=?arr;指針arr3指向arr的地址??????????arr3[1]?=?0;//使用arr3指針修改arr的1號地址的值,??????????System.out.println(Arrays.toString(arr));//?這時arr?=?[0,?0,?5,?1,?4,?2,?7]??????????//論據(jù)2?使用指針指向新數(shù)組的值??????????arr?=?a();//?arr?=?[2,?1]?arr的地址指向了方法a中的變量a在堆空間申請的地址。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;//編譯通過?數(shù)組的值不是常量??//??????arr4?=?arr;//此處編譯不通過?指針arr4是常指針不可以指向新地址。???????????????????}???}
以上就是長沙達內(nèi)教育java培訓機構(gòu)的小編針對“你需要了解的,Java數(shù)組指針的原理特效”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。