摘要:在接觸之前就知道了的對象引用,但概念一直很模糊,看了后覺得書中的例子很有趣,便分享給大家。
在接觸java之前就知道了java的對象引用,但概念一直很模糊,看了《Head First in Java》后覺得書中的例子很有趣,便分享給大家。
首先要搞清對象引用是什么?
我們都知道變量可以存放數(shù)據(jù),就像杯子一樣,不同大小的杯子存放不同種類的飲料:
但是對象卻是一類特殊的數(shù)據(jù)類型,在實(shí)例化一個對象時,是將對象分配到“堆”的存儲空間的:
而對象引用的作用就像“遙控器”一樣去間接地指揮對象工作:
對象與引用的“前世今生”明白了上述概念后,就能簡單通過下例搞明白,在對象創(chuàng)建過程中引用究竟和對象是怎樣聯(lián)系在一起的。
有如下實(shí)例:
Dog myDog = new Dog();
jvm(java虛擬機(jī))分配空間給Dog類型的引用變量myDog,換言之,它是一個只能控制Dog的遙控器
2、創(chuàng)建對象Dog myDog = new Dog();
jvm分配堆空間給對象
Dog myDog = new Dog();
即設(shè)置遙控器控制的對象
引用在相互賦值,過程中,其實(shí)是對對象“控制權(quán)”的轉(zhuǎn)讓,沒有人要的對象,就會被jvm檢測到并清除。
有如下例:
Book b = new Book(); Book c = new Book();
首先有這樣兩組對象與引用一一對應(yīng):
2.Book d = c;
新建一個Book引用變量d,并將c賦值給d,其結(jié)果為:c和d引用同一對象:
3.c = b;
將b的值賦值給c,其結(jié)果為:b和c引用同一對象
4.d = null;
將null賦值給d,表示它不引用任何事物;
而對象2由于沒有人可以引用它,只能被當(dāng)作垃圾回收:
這次看書基本明白了java引用和對象的關(guān)系,但我還想知道java為什么要這樣設(shè)計。很遺憾,書中并沒有具體說明,我只能通過我微不足道的經(jīng)驗(yàn)談?wù)勛约旱睦斫狻?br>為了節(jié)省資源
java基本值傳遞,即拷貝傳遞,而拷貝引用顯然比拷貝對象更省資源。
就像你拜托朋友照看房子,肯定是把鑰匙的備份交給朋友,而非把房子的備份交給朋友。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73350.html
摘要:使用反射機(jī)制,而不是字節(jié)碼增強(qiáng)程序來實(shí)現(xiàn)透明性。工具類初始化失敗為空,請檢查配置文件瞬時對象與持久化對象測試代碼當(dāng)前在數(shù)據(jù)庫中沒有記錄進(jìn)行關(guān)聯(lián),所以此時是瞬時對象。將持久化當(dāng)前在數(shù)據(jù)庫有唯一一條記錄對應(yīng),所以此時是持久化對象。 showImg(https://segmentfault.com/img/bVbo4at?w=2313&h=642); 一、什么是Hibernate? Hibe...
摘要:目錄往期博客課堂篇初識常量池簡單理解字符串常量池靜態(tài)常量池大整型常量池為什么要了解垃圾收集和內(nèi)存分配如何判斷對象已死引用計數(shù)算法可達(dá)性分析算法之后引用的擴(kuò)充回收方法區(qū)垃圾收集算法分代收集理論標(biāo)記清除標(biāo)記復(fù)制標(biāo)記整理對象分 ...
摘要:而在中,表達(dá)式是對象,它們必須依附于一類特別的對象類型函數(shù)式接口。即表達(dá)式返回的是函數(shù)式接口類型。 Java8被稱作Java史上變化最大的一個版本。其中包含很多重要的新特性,最核心的就是增加了Lambda表達(dá)式和Stream API。這兩者也可以結(jié)合在一起使用。首先來看下什么是Lambda表達(dá)式。Lambda表達(dá)式,維基百科上的解釋是一種用于表示匿名函數(shù)和閉包的運(yùn)算符,感覺看到這個解釋...
摘要:簡介年由公司發(fā)布的一門面向?qū)ο蟮某绦蛟O(shè)計語言虛擬機(jī)。兩個主要組件編譯器源程序轉(zhuǎn)成字節(jié)碼運(yùn)行編譯后的程序后綴運(yùn)行時環(huán)境。 Lecture1 Java簡介 1995年由Sun公司發(fā)布的一門面向?qū)ο蟮某绦蛟O(shè)計語言 JVM(Java Virtual Machine):Java虛擬機(jī)。是實(shí)現(xiàn)Java平臺無關(guān)性的關(guān)鍵Java程序的執(zhí)行流程:解釋執(zhí)行的過程由JVM來完成,即JVM把字節(jié)碼文件解釋...
閱讀 1611·2021-11-17 09:33
閱讀 1192·2021-11-12 10:36
閱讀 2464·2019-08-30 15:54
閱讀 2473·2019-08-30 13:14
閱讀 2963·2019-08-26 14:05
閱讀 3329·2019-08-26 11:32
閱讀 3061·2019-08-26 10:09
閱讀 3041·2019-08-26 10:09