java基本功16課:(1)數(shù)組與內(nèi)存控制

1.數(shù)組初始化

1.1 靜態(tài)初次化:指定數(shù)組每個(gè)元素的值,由系統(tǒng)決定數(shù)值長(zhǎng)度。

  String[] book=new String[]{"java","c++","python"};

1.2動(dòng)態(tài)初始化話:初始化時(shí)指定數(shù)組長(zhǎng)度,系統(tǒng)自動(dòng)分配初始值。

 String[] book=new String[10];

2.數(shù)組變量和數(shù)據(jù)對(duì)象的區(qū)別

2.1先思考以下的代碼

         person[] per=new person[2];
         //賦值
         per[0]=new person("小明",12);
         per[1]=new person("小紅",22);
         person myperson=per[0];
         //輸出myperson的值
         myperson.toString();  //值是什么?
         //改變賦值
         per[0].setName("張三");
         //輸出myperson的值
         myperson.toString();    //值是什么?
         兩次輸出是否相等。

接下來(lái)再看一段代碼

        //建立一個(gè)int[] 數(shù)組并初始化
         int[] array={1,2,3,4,5};
         int k=array[2];
         int o=30;
         array[4]=o;
         //輸出
         System.out.println("k="+k+" o="+o+" array="+Arrays.toString(array));
         //改變賦值
         array[2]=20;
         System.out.println("k="+k); //K的值是什么 改變了嗎
        //改變賦值
         o=40;
         System.out.println("array[4]="+array[4]); //array[4]是什么 改變了嗎

輸出結(jié)果

name=小明  age=12
name=張三  age=12
k=3 o=30 array=[1, 2, 3, 4, 30]
k=3
array[4]=30

兩段代碼,剛好可以解析數(shù)組變量和數(shù)組對(duì)象的區(qū)別。

  • 數(shù)組變量:其實(shí)可以用變量來(lái)理解,例如int i 這個(gè)i就是個(gè)int變量而已。他就像是C語(yǔ)言的指針一樣,當(dāng)作是一個(gè)指針,其他本身并沒(méi)有值。他是一個(gè)指引,指向存儲(chǔ)這個(gè)值的地方的地址。
  • 數(shù)據(jù)對(duì)象:相當(dāng)于new 一個(gè)空間。數(shù)據(jù)就是放在這個(gè)內(nèi)存空間里面(堆內(nèi)存)。
    但是java程序無(wú)法直接處理這個(gè)內(nèi)存空間。要通過(guò)數(shù)組變量來(lái)調(diào)用這個(gè)空間。
  • 這就解析了:
  • 為什么per[0]的值改變,myperson的值也改變呢?那是因?yàn)?,myperson跟per[0]所指向的內(nèi)存空間是一樣的,因此內(nèi)存空間的值改變了,他們所顯示的值也都變了。
  • 那為什么o的變量改變了,而array[4]的值沒(méi)有變呢?他們內(nèi)存空間不是一樣的嗎?這就涉及到基本變量的問(wèn)題了,在方法聲明的變量屬于局部變量,保存在棧中,而數(shù)據(jù)元素則作為數(shù)據(jù)對(duì)象的一部分,保存在棧之中。所有他們的內(nèi)存空間不一樣。因此在賦值過(guò)程中,只是賦值,并沒(méi)有改變他們的指引噢。

小結(jié)

要理解好數(shù)組變量和數(shù)據(jù)對(duì)象的關(guān)系,聯(lián)系上基本數(shù)據(jù)類型來(lái)理解。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容