最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基礎(chǔ)之?dāng)?shù)組的初始化過程

 更新時間:2024年10月21日 11:00:45   作者:john_heping  
Java數(shù)組分為靜態(tài)和動態(tài)初始化,靜態(tài)初始化中,程序員設(shè)定元素初始值,系統(tǒng)決定長度;動態(tài)初始化中,程序員設(shè)定長度,系統(tǒng)提供初始值,數(shù)組初始化后長度固定,存儲在堆內(nèi)存中,數(shù)組變量在棧內(nèi)存指向堆內(nèi)存數(shù)組對象,基本類型數(shù)組存儲數(shù)據(jù)值,引用類型數(shù)組存儲對象引用

Java基礎(chǔ)總結(jié)

一、數(shù)組初始化

1、數(shù)組初始化概念

Java是靜態(tài)語言,因此Java的數(shù)組也是靜態(tài)的。就是說數(shù)組在被初始化后數(shù)組的長度是不可改變的。而Java的數(shù)組初始化就是給數(shù)組對象分配內(nèi)存空間并且給每個數(shù)組元素給予初始值。

數(shù)組的幾種初始化方式:

靜態(tài)初始化:程序員決定數(shù)組元素的初始值,系統(tǒng)決定長度。

String[] names = new String[]{"張三","李四","王五"};
String[] books = {"射雕英雄傳","天龍八部","笑傲江湖"};

動態(tài)初始化:程序員只決定數(shù)組元素的長度,系統(tǒng)分配元素初始值(通常為null,0等)。

String[] strAll = new String[5];

數(shù)組對象的長度初始化后長度就不可改變了,他們在堆內(nèi)存中已經(jīng)開辟了對應(yīng)大小的內(nèi)存空間。

數(shù)組變量是一個引用類型的變量,數(shù)組變量在棧內(nèi)存中指向存放在堆內(nèi)存中的數(shù)組對象。內(nèi)存分配如下圖所示:

2、基本類型數(shù)組和引用類型的數(shù)組初始化的不同

2.1、基本類型數(shù)組初始化

對于基本類型的數(shù)組,他們的初始化就是在堆內(nèi)存中開辟一個固定長度和大小的空間用于存儲基本類型數(shù)據(jù)。

比如int(初始值為0),float(初始值為0.0),char(初始值為‘\u0000’),boolean(初始值為false)等。

對應(yīng)數(shù)組類型只能存儲對應(yīng)的數(shù)據(jù),并且可以替換,但唯一不變的是數(shù)組的長度大小不會變。

我們看看下面這個方法

public static void main(String[] args){
    //動態(tài)初始化int數(shù)組nums,長度為5
    int[] nums = [5];
    //給nums數(shù)組設(shè)置元素
    for(i=0;i<5;i++){
        nums[i]=i;
    }
}

根據(jù)這段代碼,我們可以得出它在內(nèi)存中的變化是怎么樣,看下圖:

從這個圖可以看出,基本類型的數(shù)組元素都是存在數(shù)組開辟的內(nèi)存空間中并且長度不變,元素可以替換。相當(dāng)于一個瓶子里可以裝可樂也可以裝雪碧,只要你是液體的就行,瓶子只有那么大只能裝那么多。

2.1、引用類型數(shù)組初始化

引用類型的數(shù)組,它初始化完成后數(shù)組長度也是固定的,和基本類型數(shù)組不同的地方就是數(shù)組對象元素。

基本類型數(shù)組元素是存放對應(yīng)基本類型的元素具體值,而引用類型數(shù)組對象元素存放的是引用,這個引用指向堆內(nèi)存中另一塊內(nèi)存空間。

看例子:

public class Cat{
    //體重
    public double weight;
    //年齡
    public int age;
}

public class Test{
    public static void main(String[] args){
        //定義一個數(shù)組變量cats,類型是Cat{}
        Cat[] cats;
        //執(zhí)行動態(tài)初始化數(shù)組,長度為2
		cats = new Cat[2];
        //創(chuàng)建兩個Cat類型的對象
      	Cat cat1 = new Cat{}
        Cat cat2 = new Cat{}
        //賦值給對象的屬性
        cat1.weight=45.2;
        cat1.age=2;
        cat2.weight=35.5;
        cat2.age=1;
        //把對象存入數(shù)組元素
        cats[0] = cat1;
        cat2[1] = cat2;
    }
   
}

根據(jù)代碼,我們可以知道。我們創(chuàng)建了Cat類型的引用類型數(shù)組cats,所以,數(shù)組cats中的元素,應(yīng)該存放Cat對象的引用。

所以我們把對象引用變量cat1,cat2作為cats數(shù)組的元素存入數(shù)組。

我們繼續(xù)看內(nèi)存解析,如下圖:

代碼執(zhí)行順序如上圖序號所示,所以在堆內(nèi)存中,引用類型的數(shù)組元素就是一個對象的引用。

它們在賦值過程中相當(dāng)于是把自己的指向地址給了數(shù)組元素,可以說是cat1=cats[0]。

還可以把引用看做是一個堆內(nèi)存地址指針,它指向的堆內(nèi)存的對象。

3、數(shù)組元素就是變量

看過了上面兩個例子,基本類型數(shù)組和引用類型數(shù)組初始化,我們可以得出一個結(jié)論:**數(shù)組元素就是變量**。

int[] ints; //int[]數(shù)組的元素相當(dāng)于int類型的變量
String[] strs;//String[]數(shù)組的元素相當(dāng)于String類型的變量
Cat[] cats;//Cat[]數(shù)組的元素相當(dāng)于Cat類型的變量

在引用類型數(shù)組初始化的內(nèi)存圖解中也能看出來數(shù)組元素就是變量這個結(jié)論。

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java實(shí)現(xiàn)簡易版簡易版dubbo

    java實(shí)現(xiàn)簡易版簡易版dubbo

    dubbo是阿里開源的rpc框架,目前是apache頂級開源項(xiàng)目,可以用來構(gòu)建微服務(wù)。本文主要介紹了如何通過java實(shí)現(xiàn)簡易版的dubbo,感興趣的小伙伴可以了解一下
    2021-11-11
  • Spring Boot自動注入的原理分析

    Spring Boot自動注入的原理分析

    這篇文章主要給大家分析介紹了關(guān)于Spring Boot自動注入的原理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者使用Spring Boot自具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 簡述Java中throw-throws異常拋出

    簡述Java中throw-throws異常拋出

    任何Java代碼都可以拋出異常,本文主要介紹了Java中throw-throws異常拋出,具有一定的參考價值,感興趣的可以了解一下
    2021-08-08
  • Eclipse 安裝 SVN 在線插件教程

    Eclipse 安裝 SVN 在線插件教程

    這篇文章主要介紹了Eclipse 安裝 SVN 在線插件教程的相關(guān)資料,這里對安裝步驟進(jìn)行了詳細(xì)介紹,需要的朋友可以參考下
    2016-11-11
  • Java GUI制作簡單的管理系統(tǒng)

    Java GUI制作簡單的管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Java GUI制作簡單的管理系統(tǒng)的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • java實(shí)現(xiàn)字符串匹配求兩個字符串的最大公共子串

    java實(shí)現(xiàn)字符串匹配求兩個字符串的最大公共子串

    這篇文章主要介紹了java實(shí)現(xiàn)求兩個字符串最大公共子串的方法,詳細(xì)的描述了兩個字符串的最大公共子串算法的實(shí)現(xiàn),需要的朋友可以參考下
    2016-10-10
  • 詳解Java二叉排序樹

    詳解Java二叉排序樹

    這篇文章主要介紹了Java二叉排序樹,包括二叉排序樹的定義、二叉排序樹的性質(zhì)、二叉排序樹的插入和查找等,感興趣的小伙伴們可以參考一下
    2015-12-12
  • SpringSecurity集成圖片驗(yàn)證碼的詳細(xì)過程

    SpringSecurity集成圖片驗(yàn)證碼的詳細(xì)過程

    SpringSecurity是通過過濾器鏈來完成的,接下來的驗(yàn)證碼,可以嘗試創(chuàng)建一個過濾器放到Security的過濾器鏈中,在自定義的過濾器中比較驗(yàn)證碼,本文通過實(shí)例代碼介紹SpringSecurity集成圖片驗(yàn)證碼的詳細(xì)過程,感興趣的朋友一起看看吧
    2023-12-12
  • 詳解Java如何利用數(shù)字描述更多的信息

    詳解Java如何利用數(shù)字描述更多的信息

    在數(shù)據(jù)庫里面?,通常我們會用數(shù)字的遞進(jìn)來描述狀態(tài)等信息?,?但是如果想進(jìn)行更復(fù)雜的操作?,?就有必要對二進(jìn)制有一定理解了。本文就來趣味性的探討一下?,?如何通過更少的空間描述更多的信息
    2022-09-09
  • 詳解如何獲取java中類的所有對象實(shí)例

    詳解如何獲取java中類的所有對象實(shí)例

    如何在運(yùn)行時獲取一個Java類的所有對象實(shí)例呢,本文給大家介紹一種底層實(shí)現(xiàn)的方式,基于jvmti,代碼用C++實(shí)現(xiàn),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-10-10

最新評論

剑川县| 泰宁县| 嵩明县| 宁化县| 邢台县| 通江县| 隆子县| 东平县| 朔州市| 慈溪市| 海口市| 开封县| 措美县| 环江| 曲阜市| 金乡县| 东阿县| 阳新县| 定西市| 舒城县| 丹东市| 安国市| 祥云县| 孟州市| 新绛县| 广饶县| 宁阳县| 偃师市| 通江县| 五大连池市| 金秀| 商水县| 大庆市| 宜丰县| 光山县| 蒙阴县| 清新县| 尉氏县| 沧源| 巧家县| 五寨县|