日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

java初始化实例化_java类的初始化和实例化区别

發(fā)布時(shí)間:2025/5/22 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java初始化实例化_java类的初始化和实例化区别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

結(jié)論:

參考https://blog.csdn.net/qq_43672627/article/details/86616624

類的初始化:是完成程序執(zhí)行前的準(zhǔn)備工作。在這個(gè)階段,靜態(tài)的(變量,方法,代碼塊)會(huì)被執(zhí)行。同時(shí)在會(huì)開(kāi)辟一塊存儲(chǔ)空間用來(lái)存放靜態(tài)的數(shù)據(jù)。初始化只在類加載的時(shí)候執(zhí)行一次。

類的實(shí)例化:是指創(chuàng)建一個(gè)對(duì)象的過(guò)程。這個(gè)過(guò)程中會(huì)在堆中開(kāi)辟內(nèi)存,將一些非靜態(tài)的方法,變量存放在里面。在程序執(zhí)行的過(guò)程中,可以創(chuàng)建多個(gè)對(duì)象,既多次實(shí)例化。每次實(shí)例化都會(huì)開(kāi)辟一塊新的內(nèi)存。

1.主要區(qū)別

2.基礎(chǔ)知識(shí)

2.1java類的生命周期:

指一個(gè)class文件從加載到卸載的全過(guò)程,類的完整生命周期包括7個(gè)部分:加載——驗(yàn)證——準(zhǔn)備——解析——初始化——使用——卸載,如下圖所示

其中,驗(yàn)證——準(zhǔn)備——解析? 稱為連接階段,除了解析外,其他階段是順序發(fā)生的,而解析可以與這些階段交叉進(jìn)行,因?yàn)镴ava支持動(dòng)態(tài)綁定(晚期綁定),需要運(yùn)行時(shí)才能確定具體類型;在使用階段實(shí)例化對(duì)象

2.2類加載過(guò)程:

加載:通過(guò)類名獲取類的二進(jìn)制字節(jié)流是通過(guò)類加載器來(lái)完成的。其加載過(guò)程使用“雙親委派模型”

驗(yàn)證:當(dāng)一個(gè)類被加載之后,必須要驗(yàn)證一下這個(gè)類是否合法,比如這個(gè)類是不是符合字節(jié)碼的格式、變量與方法是不是有重復(fù)、數(shù)據(jù)類型是不是有效、繼承與實(shí)現(xiàn)是否合乎標(biāo)準(zhǔn)等等。總之,這個(gè)階段的目的就是保證加載的類是能夠被jvm所運(yùn)行。

準(zhǔn)備:為類變量(靜態(tài)變量)在方法區(qū)分配內(nèi)存,并設(shè)置零值。注意:這里是類變量,不是實(shí)例變量,實(shí)例變量是對(duì)象分配到堆內(nèi)存時(shí)根據(jù)運(yùn)行時(shí)動(dòng)態(tài)生成的。

解析:把常量池中的符號(hào)引用解析為直接引用:根據(jù)符號(hào)引用所作的描述,在內(nèi)存中找到符合描述的目標(biāo)并把目標(biāo)指針指針?lè)祷亍?/p>

初始化:類的初始化過(guò)程是這樣的:按照順序自上而下運(yùn)行類中的變量賦值語(yǔ)句和靜態(tài)語(yǔ)句,如果有父類,則首先按照順序運(yùn)行父類中的變量賦值語(yǔ)句和靜態(tài)語(yǔ)句在類的初始化階段,只會(huì)初始化與類相關(guān)的靜態(tài)賦值語(yǔ)句和靜態(tài)語(yǔ)句,也就是有static關(guān)鍵字修飾的信息,而沒(méi)有static修飾的賦值語(yǔ)句和執(zhí)行語(yǔ)句在實(shí)例化對(duì)象的時(shí)候才會(huì)運(yùn)行。執(zhí)行()方法(clinit是class initialize的簡(jiǎn)寫)

實(shí)例化:在堆區(qū)分配內(nèi)存空間,執(zhí)行實(shí)例對(duì)象初始化,設(shè)置引用變量a指向剛分配的內(nèi)存地址

2.3 運(yùn)行時(shí)區(qū)內(nèi)存分配

3.具體流程

類A

public classA {private int m=2;private String str1="youyou";public final static String MESS="world";static String ms="world";publicString getName(String input){

String temp=input;returntemp;

}public static int getId(){return 0;}

}

Test類

public classTest {public static voidmain(String[] args) {

Class clazz=A.class;

A a=newA();

A a1=newA();

}public void change(inti)

{

i=123;

}

}

以上面來(lái)舉例

引用對(duì)象:A中成員B b,b即為引用對(duì)象,

常量三種:8種基本數(shù)據(jù)類型byte boolean,char short,float int,dobule long的具體的值,

受final修改的變量

“”雙引號(hào)引起來(lái)的字符串

附:

總結(jié)

以上是生活随笔為你收集整理的java初始化实例化_java类的初始化和实例化区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。