日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

java在類的內(nèi)部創(chuàng)建本類的對象是怎么做到的?不理解啊?

瀏覽:197日期:2024-01-20 10:07:42

問題描述

java在類的內(nèi)部創(chuàng)建本類的對象是怎么做到的?不理解啊?

問題解答

回答1:

先明確幾個(gè)概念,java代碼是跑在jvm中的,而jvm的內(nèi)存區(qū)域劃分為這么幾個(gè)模塊:

程序計(jì)數(shù)器(Program Counter Register):程序計(jì)數(shù)器是一個(gè)比較小的內(nèi)存區(qū)域,用于指示當(dāng)前線程所執(zhí)行的字節(jié)碼執(zhí)行到了第幾行,可以理解為是當(dāng)前線程的行號指示器。字節(jié)碼解釋器在工作時(shí),會通過改變這個(gè)計(jì)數(shù)器的值來取下一條語句指令。

虛擬機(jī)棧(JVM Stack):一個(gè)線程的每個(gè)方法在執(zhí)行的同時(shí),都會創(chuàng)建一個(gè)棧幀(Statck Frame),棧幀中存儲的有局部變量表、操作站、動態(tài)鏈接、方法出口等,當(dāng)方法被調(diào)用時(shí),棧幀在JVM棧中入棧,當(dāng)方法執(zhí)行完成時(shí),棧幀出棧。

本地方法棧(Native Method Statck):本地方法棧在作用,運(yùn)行機(jī)制,異常類型等方面都與虛擬機(jī)棧相同,唯一的區(qū)別是:虛擬機(jī)棧是執(zhí)行Java方法的,而本地方法棧是用來執(zhí)行native方法的,在很多虛擬機(jī)中(如Sun的JDK默認(rèn)的HotSpot虛擬機(jī)),會將本地方法棧與虛擬機(jī)棧放在一起使用。

堆區(qū)(Heap):堆區(qū)是理解Java GC機(jī)制最重要的區(qū)域,沒有之一。在JVM所管理的內(nèi)存中,堆區(qū)是最大的一塊,堆區(qū)也是Java GC機(jī)制所管理的主要內(nèi)存區(qū)域,堆區(qū)由所有線程共享,在虛擬機(jī)啟動時(shí)創(chuàng)建。堆區(qū)的存在是為了存儲對象實(shí)例,原則上講,所有的對象都在堆區(qū)上分配內(nèi)存(不過現(xiàn)代技術(shù)里,也不是這么絕對的,也有棧上直接分配的)。

方法區(qū)(Method Area):(也被稱為永久代),方法區(qū)是各個(gè)線程共享的區(qū)域,用于存儲已經(jīng)被虛擬機(jī)加載的類信息(即加載類時(shí)需要加載的信息,包括版本、field、方法、接口等信息)、final常量、靜態(tài)變量、編譯器即時(shí)編譯的代碼等。

直接內(nèi)存(Direct Memory):直接內(nèi)存并不是JVM管理的內(nèi)存,可以這樣理解,直接內(nèi)存,就是JVM以外的機(jī)器內(nèi)存,比如,你有4G的內(nèi)存,JVM占用了1G,則其余的3G就是直接內(nèi)存,JDK中有一種基于通道(Channel)和緩沖區(qū)(Buffer)的內(nèi)存分配方式,將由C語言實(shí)現(xiàn)的native函數(shù)庫分配在直接內(nèi)存中,用存儲在JVM堆中的DirectByteBuffer來引用。由于直接內(nèi)存收到本機(jī)器內(nèi)存的限制,所以也可能出現(xiàn)OutOfMemoryError的異常。

明白這幾個(gè)基本概念以后再來看看題主疑惑的地方。其實(shí)題主疑惑的是在java中,對象的引用是如何實(shí)現(xiàn)的。為什么可以在定義一個(gè)類的同時(shí),定義自己的引用,同時(shí)如果再實(shí)例化了這個(gè)引用以后,難道不會導(dǎo)致無線循環(huán)引用下去嗎?

別急我們先來分析下java中一個(gè)引用是怎么實(shí)現(xiàn)的:

一個(gè)Java的引用訪問涉及到3個(gè)內(nèi)存區(qū)域:JVM棧,堆,方法區(qū)。

以最簡單的本地變量引用:Object obj = new Object()為例:

Object obj表示一個(gè)本地引用,存儲在JVM棧的本地變量表中,表示一個(gè)reference類型數(shù)據(jù);

new Object()作為實(shí)例對象數(shù)據(jù)存儲在堆中;

堆中還記錄了Object類的類型信息(接口、方法、field、對象類型等)的地址,這些地址所執(zhí)行的數(shù)據(jù)存儲在方法區(qū)中;

具體的實(shí)現(xiàn)方式有很多種,句柄是其中一種,關(guān)系如圖所示。java在類的內(nèi)部創(chuàng)建本類的對象是怎么做到的?不理解啊?

看到這里應(yīng)該就明白了。類本身的信息,類實(shí)例數(shù)據(jù),以及指向?qū)ο蟮囊眯畔⒎謩e放在 java 的方法區(qū)和棧區(qū)以及堆區(qū)。

在題主的例子中,java加載順序是這樣的:

jvm先加載了方法區(qū)的類定義(但此時(shí)并沒有實(shí)例化這個(gè)類)

因?yàn)?public static final Direction FRONT = new Direction(); 是個(gè)靜態(tài)變量,所以這個(gè)變量也會在 jvm 第一次讀取方法區(qū)定義時(shí)被裝載進(jìn)方法區(qū)中。

同時(shí),這也意味著,在裝載這個(gè)變量的同時(shí),也在堆區(qū)實(shí)例化了這個(gè)類的實(shí)例。

注意這里面的關(guān)鍵點(diǎn),因?yàn)?FRONT 變量是靜態(tài)變量,而加載類定義只會加載一次,所以這個(gè)靜態(tài)變量也只可能加載一次。并不會像非靜態(tài)變量一樣因?yàn)檠h(huán)引用重復(fù)實(shí)例化而導(dǎo)致棧溢出。

回答2:

推薦你看看R大的回答

先有Class還是先有Object?https://www.zhihu.com/questio...

回答3:

說說你的理解,為什么類里面不能創(chuàng)建自己的對象?這幾個(gè)變量加上了static后就變成了類的屬性了,只會創(chuàng)建一次。

回答4:

如果自己都不能創(chuàng)建自己,那其他類就更不能了。這樣的話這個(gè)類怎么實(shí)例化……

回答5:

設(shè)計(jì)模式:單例模式

回答6:

本質(zhì)是對java的面向?qū)ο缶幊痰牟焕斫狻?纯?3種設(shè)計(jì)模式你可能就會理解

回答7:

構(gòu)造函數(shù)也是一個(gè)方法。

具有 private 訪問權(quán)限的方法表示私有的,只有本類可見。

所以,本類可以調(diào)用具有 private 訪問權(quán)限的構(gòu)造函數(shù)實(shí)例化一個(gè)對象。

回答8:

使用內(nèi)部類的原因:每個(gè)內(nèi)部類都能獨(dú)立的繼承自一個(gè)(接口的)實(shí)現(xiàn),所以無論外部類是否已經(jīng)繼承了某個(gè)(接口的)的實(shí)現(xiàn),對內(nèi)部類都沒有影響。實(shí)際上內(nèi)部類有效的實(shí)現(xiàn)了“多重繼承”,就是說,內(nèi)部類允許繼承多個(gè)非接口類型。

我們知道內(nèi)部類自動擁有對外部類所有成員的訪問權(quán),那么這是如何做到的嗎?當(dāng)某個(gè)外部類對象創(chuàng)建了一個(gè)內(nèi)部類對象時(shí),此內(nèi)部類對象必定會秘密的捕獲一個(gè)指向那個(gè)外部類對象的引用。然后,在你訪問外部類的成員時(shí),就是用那個(gè)引用來選擇外部類的成員。當(dāng)然這些細(xì)節(jié)是編譯器處理,并且這里的內(nèi)部類是非static的。如果一個(gè)類都不能創(chuàng)建自己的類對象,那我要你這個(gè)類何用?啊,哈哈哈哈,開玩笑咯

標(biāo)簽: java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲高清不卡| 国产91一区| 首页国产欧美久久| av不卡免费看| 六月天综合网| 免费不卡在线视频| 一区二区电影| 91麻豆精品| 国产另类在线| 国产精品白丝一区二区三区| 国产精品天天看天天狠| 天堂va欧美ⅴa亚洲va一国产| 综合干狼人综合首页| 日韩 欧美一区二区三区| 日韩三级久久| 国产精品片aa在线观看| 电影91久久久| 欧美高清不卡| 蜜桃视频一区二区| 久久国际精品| 福利在线一区| 激情综合在线| 亚洲男女自偷自拍| 日韩黄色免费网站| 另类欧美日韩国产在线| 人在线成免费视频| 日韩和的一区二在线| 亚洲少妇诱惑| 国产三级一区| 欧美少妇精品| 久久都是精品| 国产精品一区二区精品视频观看 | 免费一区二区三区在线视频| 久久99高清| 日韩精品欧美| 石原莉奈一区二区三区在线观看| 日韩福利在线观看| 国产+成+人+亚洲欧洲在线| av一区二区高清| 亚洲狼人精品一区二区三区| 美女毛片一区二区三区四区最新中文字幕亚洲 | 日韩88av| 在线一区视频| 国产精品一区免费在线| 日韩精品91| 精品国产一区二区三区av片| 色老板在线视频一区二区| 日韩专区在线视频| 麻豆精品少妇| 美日韩精品视频| 欧美精品第一区| 欧美日韩一区二区综合| 蜜桃传媒麻豆第一区在线观看| 国精品产品一区| 亚洲中字黄色| 捆绑调教美女网站视频一区| 亚洲成人一区| 国产美女久久| 99国产精品| 亚洲激情社区| 精品久久久久久久| 性一交一乱一区二区洋洋av| 久久精品国产亚洲aⅴ| 欧美日韩国产一区二区三区不卡| 久久精品999| 在线亚洲一区| 日韩国产一区二区三区| 91麻豆精品激情在线观看最新 | 99精品在线| 91精品在线免费视频| 亚洲特级毛片| 国产黄色一区| 在线精品一区| 久久久一二三| 国产精品综合色区在线观看| 欧美日韩三区| 国产激情久久| 亚洲一区欧美| 婷婷成人在线| 久久久久久久久成人| 一区二区国产精品| 欧美搞黄网站| 97人人精品| 国产日韩高清一区二区三区在线| 日韩视频二区| 久久精品青草| 国产一区二区三区成人欧美日韩在线观看| 蜜桃视频一区二区| 国产在线日韩| 免费在线观看一区| 日韩一区中文| 性一交一乱一区二区洋洋av| 色婷婷久久久| 久久久久久网| 麻豆极品一区二区三区| 综合激情五月婷婷| 欧美+日本+国产+在线a∨观看| 精品一区二区三区中文字幕| 日韩欧美中文在线观看| 亚洲精品123区| 久久婷婷亚洲| 中文在线а√在线8| 国产日本久久| 伊人国产精品| 91九色精品国产一区二区| 国产66精品| 国产精品一级| 日本在线观看不卡视频| 制服诱惑一区二区| 欧美日韩国产一区二区三区不卡| 在线日韩中文| 黄色亚洲在线| 在线观看免费一区二区| 老牛国产精品一区的观看方式| 精品不卡一区| 国产精品一区二区三区av麻| 精品入口麻豆88视频| 一级成人国产| 亚洲不卡av不卡一区二区| 国产亚洲网站| 一区二区三区四区在线看| 亚洲一二av| 久久久9色精品国产一区二区三区| 另类专区亚洲| 久久伊人久久| 久久免费福利| 88久久精品| 色婷婷色综合| 久久精品国产99国产| 日本亚洲欧美天堂免费| 亚洲精品麻豆| 欧美一区久久久| 亚洲一二三区视频| 欧美大黑bbbbbbbbb在线| 国产精品a级| 美腿丝袜亚洲一区| 精品视频91| 激情久久一区二区| 久久精品免视看国产成人| 精品成人18| 伊人久久在线| 久久一区二区三区电影| 免费黄色成人| 日韩一区精品视频| 欧美一级一区| 久久久国产精品入口麻豆| 成人精品动漫一区二区三区| 天堂av在线| 亚洲精品2区| 国产精品美女久久久| 免费成人在线观看| 91成人在线网站| 国产精品22p| 色婷婷色综合| 亚洲精品a级片| 亚洲精品韩国| 国产精品一区二区三区四区在线观看| 日韩黄色免费网站| 久久精品国产亚洲一区二区三区| 日本蜜桃在线观看视频| 精品一区欧美| 亚洲精品人人| 欧美黄页在线免费观看| av在线资源| 蜜桃一区二区三区| 中文字幕亚洲精品乱码| 国产精品**亚洲精品| 日韩精品永久网址| 午夜国产精品视频| 日韩av一二三| 97人人精品| 99综合视频| 国产精品免费99久久久| 视频小说一区二区| 亚洲精品第一| 欧美综合另类| 亚久久调教视频| 精品日韩在线| 玖玖精品视频| 久久99久久久精品欧美| 久久国产中文字幕| 午夜亚洲福利| 黄色在线网站噜噜噜| 亚洲人www| 日韩精品诱惑一区?区三区| 久久午夜影视| 韩日一区二区| 在线精品福利| 欧美韩日一区| 激情欧美一区| 欧美自拍一区| 亚洲午夜黄色| 亚洲激情精品| av成人国产| 久久影院午夜精品| 韩国精品主播一区二区在线观看 | 另类国产ts人妖高潮视频| 欧美片网站免费| 欧美天堂视频| 欧美日韩xxxx|