亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中的對象和引用詳解

 更新時間:2017年05月10日 10:26:45   投稿:lqh  
這篇文章主要介紹了Java中的對象和引用詳解的相關資料,需要的朋友可以參考下

Java中的對象和引用詳解

 在Java中,有一組名詞經(jīng)常一起出現(xiàn),它們就是“對象和對象引用”,很多朋友在初學Java的時候可能經(jīng)常會混淆這2個概念,覺得它們是一回事,事實上則不然。今天我們就來一起了解一下對象和對象引用之間的區(qū)別和聯(lián)系。

1.何謂對象?

  在Java中有一句比較流行的話,叫做“萬物皆對象”,這是Java語言設計之初的理念之一。要理解什么是對象,需要跟類一起結合起來理解。下面這段話引自《Java編程思想》中的一段原話:

  “按照通俗的說法,每個對象都是某個類(class)的一個實例(instance),這里,‘類'就是‘類型'的同義詞。”

  從這一句話就可以理解到對象的本質(zhì),簡而言之,它就是類的實例,比如所有的人統(tǒng)稱為“人類”,這里的“人類”就是一個類(物種的一種類型),而具體到每個人,比如張三這個人,它就是對象,就是“人類”的實例。

2.何謂對象引用?

  我們先看一段話:

  “每種編程語言都有自己的數(shù)據(jù)處理方式。有些時候,程序員必須注意將要處理的數(shù)據(jù)是什么類型。你是直接操縱元素,還是用某種基于特殊語法的間接表示(例如C/C++里的指針)來操作對象。所有這些在 Java 里都得到了簡化,一切都被視為對象。因此,我們可采用一種統(tǒng)一的語法。盡管將一切都“看作”對象,但操縱的標識符實際是指向一個對象的“引用”(reference)?!薄 ?/p>

  這段話來自于《Java編程思想》,很顯然,從這段話可以看出對象和對象引用不是一回事,是兩個完全不同的概念。舉個例子,我們通常會用下面這一行代碼來創(chuàng)建一個對象:

Person person = new Person("張三");

  有人會說,這里的person是一個對象,是Person類的一個實例。

  也有人會說,這里的person并不是真正的對象,而是指向所創(chuàng)建的對象的引用。

  到底哪種說法是對的?我們先不急著糾結哪種說法是對的,再看兩行代碼:

Person person;
person = new Person("張三");

  這兩行代碼實現(xiàn)的功能和上面的一行代碼是完全一樣的。大家都知道,在Java中new是用來在堆上創(chuàng)建對象用的,如果person是一個對象的話,那么第二行為何還要通過new來創(chuàng)建對象呢?由此可見,person并不是所創(chuàng)建的對象,是什么?上面的一段話說的很清楚,“操縱的標識符實際是指向一個對象的引用”,也就是說person是一個引用,是指向一個可以指向Person類的對象的引用。真正創(chuàng)建對象的語句是右邊的new Person("張三");

  再看一個例子:

Person person;
person = new Person("張三");
person = new Person("李四");

  這里讓person先指向了“張三”這個對象,然后又指向了“李四”這個對象。也就是說,Person person,這句話只是聲明了一個Person類的引用,它可以指向任何Person類的實例。這個道理就和下面這段代碼一樣:

int a;
a=2;
a=3;

  這里先聲明了一個int類型的變量a,先對a賦值為2,后面又賦值為3.也就是說int類型的變量a,可以讓它的值為2,也可以為3,只要是合法的int類型的數(shù)值即可。

  也就是說,一個引用可以指向多個對象,而一個對象可不可以被多個引用所指呢?答案當然是可以的。

  比如:

Person person1 = new Person("張三");
Person person2 = person1;

  person1和person2都指向了“張三”這個對象。

  關于對象和對象引用的區(qū)別和聯(lián)系暫時就講這么多了,感興趣的朋友可以查閱相關文檔和資料?! ?/p>

       感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

  • Java如何實現(xiàn)數(shù)字逆序

    Java如何實現(xiàn)數(shù)字逆序

    這篇文章主要介紹了Java如何實現(xiàn)數(shù)字逆序問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 快速排序的原理及java代碼實現(xiàn)

    快速排序的原理及java代碼實現(xiàn)

    網(wǎng)上關于快速排序的算法原理和算法實現(xiàn)都比較多,不過java是實現(xiàn)并不多,而且部分實現(xiàn)很難理解,和思路有點不搭調(diào)。所以整理了這篇文章。如果有不妥之處還請建議。
    2016-02-02
  • Java中Console對象實例代碼

    Java中Console對象實例代碼

    這篇文章主要介紹了Java中Console對象實例代碼,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • 詳解多線程及Runable 和Thread的區(qū)別

    詳解多線程及Runable 和Thread的區(qū)別

    這篇文章主要介紹了多線程及Runable 和Thread的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • java實現(xiàn)簡單注冊選擇所在城市

    java實現(xiàn)簡單注冊選擇所在城市

    這篇文章主要為大家詳細介紹了java實現(xiàn)簡單注冊選擇所在城市的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 詳解Java反射創(chuàng)建對象

    詳解Java反射創(chuàng)建對象

    今天帶大家學習Java的基礎知識,文中對Java反射創(chuàng)建對象作了非常詳細的介紹及代碼示例,對正在學習Java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java合并區(qū)間的實現(xiàn)

    Java合并區(qū)間的實現(xiàn)

    本文主要介紹了Java合并區(qū)間的實現(xiàn),通過合理使用集合類和排序算法,可以有效地解決合并區(qū)間問題,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Spring整合Mybatis實操分享

    Spring整合Mybatis實操分享

    這篇文章主要介紹了Spring整合Mybatis實操分享,文章首先通過介紹Mybatis的工作原理展開Spring整合Mybatis的詳細內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • Java中從Integer到Date的轉(zhuǎn)換方法

    Java中從Integer到Date的轉(zhuǎn)換方法

    這篇文章主要介紹了Java中integer怎么轉(zhuǎn)換date,在Java中,如果我們有一個Integer類型的數(shù)據(jù),想要將其轉(zhuǎn)換為Date類型,本文給大家介紹了實現(xiàn)方法,并通過代碼示例講解的非常詳細,需要的朋友可以參考下
    2024-05-05
  • Java enum關鍵字不識別的快速解決辦法

    Java enum關鍵字不識別的快速解決辦法

    這篇文章主要介紹了Java enum關鍵字不識別的快速解決辦法,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-09-09

最新評論