【Java】簡單區分物件引用和物件
以下純屬個人的理解,如果有不全或者錯誤的地方,歡迎大家批評指正。
初學 Java 的時候,博主很容易將兩者混淆在一起,這裡就做個簡單的區分。
為了方便說明,博主先建立一個 People 類(類是具有相同屬性和行為的一類實體,物件是類的例項化)
public class People { private String name; private int age; public People(String name,int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
具體的類有了,下面我們來例項化 People 類,程式碼如下:
public class ObjTest {
public static void main(String[] args) {
People zhh = new People("趙海豪", 23);
}
}
看似是一行簡單的程式碼,我們把這一行簡單的程式碼做拆分,大概是以下這個樣子:
People zhh;
zhh = new People("趙海豪", 23);
- 先來說明下 People zhh 這一小段程式碼的作用:Java虛擬機器為其分配了一塊棧空間。這裡主要是聲明瞭一個引用變數 zhh
- 再來說下 new People("趙海豪", 23) 這段程式碼:這裡的話Java虛擬機器為其分配的不再是棧空間了,而是分配的堆空間。在這裡主要是例項化了一個具體的物件。換句話說,就是現在有一個這樣的人,他的名字叫 趙海豪,今年 23 歲。這個具體的人就可以理解為是物件。
- 最後再來說說這個"=":在Java虛擬機器當中,並不是將我們的引用物件直接提供給變數(物件引用)的,而是將引用物件存在堆中的地址提供給變數,然後變數再通過這個物件的地址去堆內查詢我們的引用物件。其實也就是將我們的物件引用指向我們的物件。換句話也就是說,我給這個名字叫 趙海豪
忽略中間其餘的過程,我簡單給出上述程式碼在堆疊中的引用關係圖:
相關推薦
【Java】簡單區分物件引用和物件
以下純屬個人的理解,如果有不全或者錯誤的地方,歡迎大家批評指正。 初學 Java 的時候,博主很容易將兩者混淆在一起,這裡就做個簡單的區分。 為了方便說明,博主先建立一個 People 類(類是具有相同屬性和行為的一類實體,物件是類的例項化) public class
【Java】Spring MVC 擴展和SSM框架整合
nco span con odin typealias eal nag key ping 開發web項目通常很多地方需要使用ajax請求來完成相應的功能,比如表單交互或者是復雜的UI設計中數據的傳遞等等。對於返回結果,我們一般使用JSON對象來表示,那麽Spring MVC
【java】簡單實現數據庫連接池
zed cal lean jdbc stat eof LEDE import thread 一直在想java事務是怎麽實現的,在原聲jdbc的時候級別下,我們可以通過關掉autocommit 然後再手動commit。但是項目開發中基本上是看不見conection的。所以自己
【java】判斷兩個引用型別的變數是否指向同一地址
問題:有兩個物件obj1和obj2,都是MyObject類的例項。如何比較這兩個物件是否指向相同的記憶體地址? 分情況討論: 1、如果 MyObject類的equals方法和hashcode方法被重寫: 如果obj1 == obj2 為真,則兩者指向相同的
【Java】import org.junit.Test 和@Test報錯
【問題描述】 Java專案中匯入import org.junit.Test 和使用@Test時報錯。 【解決辦法】 1、在MyEclipse或Eclipse專案中右擊屬性選擇【
【java】簡單的傳送一段資料到串列埠
可以跟著一起操作。 2 給專案新增外部jar(有eclipse和intellij兩種IDE操作方式說明) 2.1 假設你用eclipse 2.2 使用intellij 3 新增dll 將dll檔案複製到jdk和jre的b
【C++】C++類的定義和物件的建立
類是建立物件的模板,一個類可以建立多個物件,每個物件都是類型別的一個變數;建立物件的過程也叫類的例項化。每個物件都是類的一個具體例項(Instance),擁有類的成員變數和成員函式。 在面向物件的程式語言中,經常把函式(Function)稱為方法(Method)。
【Java】udp 實現 client端和server端通訊
客戶端 1.建立客戶端+埠 2.準備資料 3.打包(傳送的地點及埠) 4.傳送 5.釋放 服務端 1.建立服務端+埠 2.準備接受容器 3.封裝成包 4.接受資料 5.分析資料 6.釋放 client.java package UdpDe
【JAVA】簡單實現一個阻塞任務佇列
package p18.juc; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CountDownL
【Java】使用Apache POI生成和解析Excel檔案
概述 Excel是我們平時工作中比較常用的用於儲存二維表資料的,JAVA也可以直接對Excel進行操作,分別有jxl和poi,2種方式。 程式碼 要使用poi,必須引入poi的jar包,maven依賴如下(最新包可參考mvn資訊): <
【Java】簡單的音樂播放器
應用名稱:Java簡單的音樂播放器 用到的知識:Java GUI程式設計,執行緒,IO 開發環境:win8+eclipse+jdk1.8 功能說明:可以選擇內建的音樂檔案播放,迴圈播放,停止。PS:這個播放器只能播放.au .aiff .wav .midi .rfm
物件引用和物件賦值
關鍵字: java物件 引用Java物件及其引用關於物件與引用之間的一些基本概念。 初學Java時,在很長一段時間裡,總覺得基本概念很模糊。後來才知道,在許多Java書中,把物件和物件的引用混為一談。可是,如果我分不清物件與物件引用, 那實在沒法很好地理解下面的面向物件技術。把自己的一點認識寫下來,或許能讓初
【Java】基本類型和引用類型(值傳遞)
適合 and span print pri right bre enc this 【關鍵詞】 【問題】 · 加深對基本類型和引用類型的理解; 【效果圖】 【分析】 參見最後的【參考資料】 【解決方式】 【代碼】 public
【Java】 Spring 框架初步學習總結(一)簡單實現 IoC 和 AOP
1.0 其中 表示 只需要 第一篇 否則 info fin pojo Spring 是一個開源的設計層面的輕量級框架,Spring 的好處網上有太多,這裏就不在贅述。 IoC 控制反轉和 AOP 面向切面編程是 Spring 的兩個重要特性。 IoC(Inver
【Python】引用和物件的理解
Overview 在Python中使用變數進行值修改、引數傳遞、以及複製變數等等的過程中,往往會出現一些我們意想不到的“錯誤”。 但實際上產生這些“錯誤”的原因,大多是因為沒有深入地理解Python內部的物件引用機制。 針對於此,筆者大致整理了10個例子,用以循序漸進地幫助大家加
【java】面向物件程式設計——類與物件的繼承和多型
一、程式碼塊 程式碼塊定義:使用 {} 定義的一段程式碼。 根據程式碼塊定義的位置以及關鍵字,又可分為以下四種: 普通程式碼塊(定義在方法中,除錯) 構造塊(定義在類中的(不加修飾符)) 靜態塊 同步程式碼塊 構造塊 構造塊在每次產生一個新的物件就呼叫一次構
【Java】消除fastjson對同一物件迴圈引用的問題
傳入SerializerFeature.DisableCircularReferenceDetect引數 JSON.toJSONString([data],SerializerFeature.DisableCircularReferenceDetect);
【JAVA】29、面向物件的基本概念和三個特徵
本篇博文最後修改時間:2016年3月5日,22:43。 一、簡介 本篇介紹面向物件的基本概念和三個特徵。 二、實驗平臺系統版本:Windows7 家庭普通版 32位作業系統。博主:思跡宣告:喝水
【JAVA】java資料儲存-基礎型別,物件和字串
總所周知,java是一種面向物件的程式設計語言。在java裡,一切都被視為物件,因此可以採用單一固定的語法。儘管一切都看作物件,但是操縱的識別符號實際上是物件的一個“引用”,這個引用指向資料實際存放的地址。 而我們的資料被儲存到什麼地方呢?特別是記憶體是怎麼分配的呢?我們有
【Java】java使用反射訪問物件方法和成員變數
雖然java是一門靜態語言,但是java的反射機制卻給java提供了很強大的動態特性,其特點是能讓java支援在執行時才能得知名稱與內部結構的類,並能訪問其所有的方法和成員變數,包括私有方法和私有成員變數。下面我寫了一個比較簡潔的測試程式碼,供參考和使用。 測試類 //O