最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的對(duì)象和引用詳解

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

Java中的對(duì)象和引用詳解

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

1.何謂對(duì)象?

  在Java中有一句比較流行的話,叫做“萬(wàn)物皆對(duì)象”,這是Java語(yǔ)言設(shè)計(jì)之初的理念之一。要理解什么是對(duì)象,需要跟類(lèi)一起結(jié)合起來(lái)理解。下面這段話引自《Java編程思想》中的一段原話:

  “按照通俗的說(shuō)法,每個(gè)對(duì)象都是某個(gè)類(lèi)(class)的一個(gè)實(shí)例(instance),這里,‘類(lèi)'就是‘類(lèi)型'的同義詞。”

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

2.何謂對(duì)象引用?

  我們先看一段話:

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

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

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

  有人會(huì)說(shuō),這里的person是一個(gè)對(duì)象,是Person類(lèi)的一個(gè)實(shí)例。

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

  到底哪種說(shuō)法是對(duì)的?我們先不急著糾結(jié)哪種說(shuō)法是對(duì)的,再看兩行代碼:

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

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

  再看一個(gè)例子:

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

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

int a;
a=2;
a=3;

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

  也就是說(shuō),一個(gè)引用可以指向多個(gè)對(duì)象,而一個(gè)對(duì)象可不可以被多個(gè)引用所指呢?答案當(dāng)然是可以的。

  比如:

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

  person1和person2都指向了“張三”這個(gè)對(duì)象。

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

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

相關(guān)文章

  • 利用Java判斷一個(gè)字符串是否包含某個(gè)字符

    利用Java判斷一個(gè)字符串是否包含某個(gè)字符

    在Java編程中,字符串操作是日常開(kāi)發(fā)的常見(jiàn)任務(wù),涉及判斷、查找、替換等多種操作,文章介紹了如何在Java中判斷字符串是否包含某字符,提供了使用contains方法和字符數(shù)組遍歷兩種基礎(chǔ)方法,需要的朋友可以參考下
    2024-11-11
  • 解決spring 處理request.getInputStream()輸入流只能讀取一次問(wèn)題

    解決spring 處理request.getInputStream()輸入流只能讀取一次問(wèn)題

    這篇文章主要介紹了解決spring 處理request.getInputStream()輸入流只能讀取一次問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Spring之@Aspect中通知的5種方式詳解

    Spring之@Aspect中通知的5種方式詳解

    本文主要介紹了Spring之@Aspect中通知的5種方式詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Mybatis-Plus將字段設(shè)置為null解決方法

    Mybatis-Plus將字段設(shè)置為null解決方法

    MyBatis-Plus是一個(gè)MyBatis的增強(qiáng)工具,在MyBatis的基礎(chǔ)上只做增 強(qiáng)不做改變,為簡(jiǎn)化開(kāi)發(fā)、提高效率而生,下面這篇文章主要給大家介紹了關(guān)于Mybatis-Plus將字段設(shè)置為null的解決方法的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Java中List for循環(huán)的6種寫(xiě)法總結(jié)(推薦)

    Java中List for循環(huán)的6種寫(xiě)法總結(jié)(推薦)

    下面小編就為大家?guī)?lái)一篇Java中List for循環(huán)的6種寫(xiě)法總結(jié)(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • SpringBoot如何優(yōu)雅的輸出異常信息

    SpringBoot如何優(yōu)雅的輸出異常信息

    在Java中,異常(Exception)是Java程序在運(yùn)行過(guò)程中出現(xiàn)的一種特殊情況,會(huì)中斷正常的程序流程,異??梢允沁\(yùn)行時(shí)錯(cuò)誤,也可以是編程錯(cuò)誤,本文將給大家詳細(xì)的介紹一下SpringBoot如何優(yōu)雅的輸出異常信息,需要的朋友可以參考下
    2023-09-09
  • 淺析Spring配置中的classpath:與classpath*:的區(qū)別

    淺析Spring配置中的classpath:與classpath*:的區(qū)別

    這篇文章主要介紹了Spring配置中的"classpath:"與"classpath*:"的區(qū)別,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Jenkins插件pipeline原理及使用方法解析

    Jenkins插件pipeline原理及使用方法解析

    這篇文章主要介紹了Jenkins插件pipeline原理及使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 并發(fā)編程之Java內(nèi)存模型volatile的內(nèi)存語(yǔ)義

    并發(fā)編程之Java內(nèi)存模型volatile的內(nèi)存語(yǔ)義

    這篇文章主要介紹了并發(fā)編程之Java內(nèi)存模型volatile的內(nèi)存語(yǔ)義,理解volatile特性的一個(gè)好辦法是把對(duì)volatile變量的單個(gè)讀/寫(xiě),看成是使用同一個(gè)鎖對(duì)單個(gè)讀/寫(xiě)操作做了同步。下面我們一起進(jìn)入文章看看具體例子吧,需要的小伙伴可以參考下
    2021-11-11
  • 理解Java垃圾回收

    理解Java垃圾回收

    這篇文章主要幫助大家理解Java垃圾回收,通過(guò)實(shí)例學(xué)習(xí)java垃圾回收,什么是垃圾回收,感興趣的小伙伴們可以參考一下
    2016-03-03

最新評(píng)論

万荣县| 兴山县| 河津市| 宝清县| 肃南| 嵩明县| 新巴尔虎右旗| 安远县| 江川县| 桃园市| 微博| 射阳县| 利辛县| 电白县| 横峰县| 开江县| 富顺县| 桑植县| 鹰潭市| 涿州市| 岚皋县| 疏附县| 聂荣县| 项城市| 库伦旗| 家居| 桦甸市| 湟源县| 慈利县| 介休市| 张家界市| 安吉县| 麻江县| 鄂州市| 德保县| 左云县| 寻甸| 龙岩市| 普洱| 白水县| 肇州县|