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

Java數(shù)據(jù)類型之引用數(shù)據(jù)類型解讀

 更新時(shí)間:2023年07月31日 10:59:49   作者:墨末..  
這篇文章主要介紹了Java數(shù)據(jù)類型之引用數(shù)據(jù)類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java數(shù)據(jù)類型之引用數(shù)據(jù)類型

在Java中除了8種基本數(shù)據(jù)類型外,其他數(shù)據(jù)類型全部都是引用(reference)數(shù)據(jù)類型,引用數(shù)據(jù)類型用來表示復(fù)雜數(shù)據(jù)類型,如下圖所示,包含:類、接口和數(shù)組聲明的數(shù)據(jù)類型。

引用數(shù)據(jù)類型:有類,接口,數(shù)組等。

Java中的引用數(shù)據(jù)類型,相當(dāng)于C等語言中指針(pointer)類型,引用事實(shí)上就是指針,是指向一個(gè)對(duì)象的內(nèi)存地址。引用數(shù)據(jù)類型變量中保持的是指向?qū)ο蟮膬?nèi)存地址。

很多資料上提到Java不支持指針,事實(shí)上是不支持指針計(jì)算,而指針類型還是保留了下來,只是在Java中稱為引用數(shù)據(jù)類型。

int x = 7; 
int y = x; 
String str1 = "Hello"; 
String str2 = str1; 
str2 = "World"; 

上述代碼聲明了兩個(gè)基本數(shù)據(jù)類型(int)和兩個(gè)引用數(shù)據(jù)類型(String)。當(dāng)程序執(zhí)行完第②行代碼后,x值為7,x賦值給y,這時(shí)y的值也是7,它們的保持方式如圖1所示,x和y兩個(gè)變量值都是7,但是它們之間是獨(dú)立的,任何一個(gè)變化都不會(huì)影響另一個(gè)。

當(dāng)程序執(zhí)行完第③行時(shí),字符串“Hello”對(duì)象被創(chuàng)建,保持到內(nèi)存地0x12345678中,str1是引用類型變量,它保存的是內(nèi)存地址0x12345678,這個(gè)地址指向“Hello”對(duì)象。

當(dāng)程序執(zhí)行完第④行時(shí),str1變量?jī)?nèi)容(0x12345678)被賦值給str2是引用類型變量,這樣一來str1和str2保存了相同的內(nèi)存地址,都指向“Hello”對(duì)象。見圖1所示,此時(shí)str1和str2本質(zhì)上是引用一個(gè)對(duì)象,通過任何一個(gè)引用都可以修改對(duì)象本身。

當(dāng)程序執(zhí)行完第⑤行時(shí),字符串“World”對(duì)象被創(chuàng)建,保持到內(nèi)存地址0x23455678中,地址保存到str2變量中,此時(shí),str1和str2不再指向相同內(nèi)存地址,見圖2所示。

圖一:引用數(shù)據(jù)類型賦值過程1

圖二:引用數(shù)據(jù)類型賦值過程2

java理解引用數(shù)據(jù)類型

一.java中基礎(chǔ)數(shù)據(jù)類型與引用數(shù)據(jù)類型的區(qū)別

1.1基礎(chǔ)數(shù)據(jù)類與引用數(shù)據(jù)類型介紹

1.基礎(chǔ)數(shù)據(jù)類型:

  • ①整數(shù)類型:long、int、short、byte
  • ②浮點(diǎn)類型:float、double
  • ③字符類型:char
  • ④布爾類型:boolean

2.引用數(shù)據(jù)類型:類、 接口類型、 數(shù)組類型、 枚舉類型、 注解類型、 字符串型,例:String類型就是引用類型。

1.2存儲(chǔ)位置的區(qū)別 

  • 基本變量類型

在方法中定義的非全局基本數(shù)據(jù)類型變量的具體內(nèi)容是存儲(chǔ)在棧中的

  • 引用變量類型

只要是引用數(shù)據(jù)類型變量,其具體內(nèi)容都是存放在堆中的,而棧中存放的是其具體內(nèi)容所在內(nèi)存的地址

如圖:

  • 基本數(shù)據(jù)類型              

引用數(shù)據(jù)類型:

 

 

1.3傳遞方式的區(qū)  

  • 基本變量類型

在方法中定義的非全局基本數(shù)據(jù)類型變量,調(diào)用方法時(shí)作為參數(shù)是按數(shù)值傳遞

  • 引用變量類型

引用數(shù)據(jù)類型變量,調(diào)用方法時(shí)作為參數(shù)是按引用傳遞的,傳遞的是引用的副本

 

 二.String判斷字符串相等

2.1java中字符串的基本存儲(chǔ)原理           

  • 1.常量池中的字符串僅是符號(hào),第一次用到的時(shí)候才變?yōu)閷?duì)象           
  • 2.利用串池的機(jī)制,來避免重復(fù)創(chuàng)建字符串對(duì)象           
  • 3.字符串常量拼接原理是StringBuilder(1.8)           
  • 4.可以使用intern方法,主動(dòng)將串池中還沒有的字符串放入串池(1.8是放入,1.6是復(fù)制副本放入)

2.2舉例

public class ComPareString {    public void test(){        String str1="a";//"a"第一次用到,變?yōu)閷?duì)象        String str2="b";        String str3="a";//判斷str1==str3為true,str1與str2指向的都是在串池中的對(duì)象"a"        String str4="ab";        String str5="a"+"b";//判斷str4==str5為true,str4在編譯的過程中就完成了拼接為"ab"                            // ,與上述同理,與str4所指是同一對(duì)象        String str6=str1+str2;//判斷str4==str6為false,str1與str2為變量,實(shí)際上是         //new StringBuilder().append("a").append("b").toString(),即new String("ab")          //新創(chuàng)建了對(duì)象,并不是在串池中的"ab",所以為false                                String str7=str6.intern();?       //將str6字符串對(duì)象放入串池中,如果串池中有就不會(huì)放入,如果沒有就會(huì)放入,最后會(huì)把串池中的對(duì)象返回        //所以str7現(xiàn)在所指的對(duì)象與str4是一樣的,str4與str6不相等,故判斷str6==str7為false                        String s8=new String("abc");        String s9=s8.intern();//判斷s8==s9,如果jdk為1.8則為true,如果jdk為1.6則為false    }}

三.java創(chuàng)建鏈表錯(cuò)誤點(diǎn)

Node h = new Node();
Node n=new Node();
Node n2=h.next;
n2=n;
//奇奇怪怪的錯(cuò)誤(捂臉),無論next是null或是非null都不可以這樣寫,n2=n就是把n的引用賦值給了n2,這樣的話n2與h.next就沒有任何關(guān)系了
//正確寫法
n.next=null;
h.next=n;

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java.try catch finally 的執(zhí)行順序說明

    Java.try catch finally 的執(zhí)行順序說明

    這篇文章主要介紹了Java.try catch finally 的執(zhí)行順序說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • SpringBoot自動(dòng)配置原理詳解

    SpringBoot自動(dòng)配置原理詳解

    SpringBoot的誕生就是為了簡(jiǎn)化Spring中繁瑣的XML配置,其本質(zhì)依然還是Spring框架,使用SpringBoot之后可以不使用任何XML配置來啟動(dòng)一個(gè)服務(wù),使得我們?cè)谑褂梦⒎?wù)架構(gòu)時(shí)可以更加快速的建立一個(gè)應(yīng)用。本文將為具體介紹一下SpringBoot的原理,需要的可以參考一下
    2021-12-12
  • 總結(jié)Bean的三種自定義初始化和銷毀方法

    總結(jié)Bean的三種自定義初始化和銷毀方法

    這篇文章主要介紹了Bean的三種自定義初始化和銷毀方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • springboot?log4j2.xml如何讀取application.yml中屬性值

    springboot?log4j2.xml如何讀取application.yml中屬性值

    這篇文章主要介紹了springboot?log4j2.xml如何讀取application.yml中屬性值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • 關(guān)于rocketmq中日志文件路徑的配置指南

    關(guān)于rocketmq中日志文件路徑的配置指南

    rocketmq是java編寫的,也就是可以指定啟動(dòng)參數(shù),下面這篇文章主要給大家介紹了關(guān)于rocketmq中日志文件路徑的配置指南,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Java如何導(dǎo)入Jsoup庫做一個(gè)有趣的爬蟲項(xiàng)目

    Java如何導(dǎo)入Jsoup庫做一個(gè)有趣的爬蟲項(xiàng)目

    Jsoup庫是一款Java的HTML解析器,可用于從網(wǎng)絡(luò)或本地文件中獲取HTML文檔并解析其中的數(shù)據(jù),這篇文章給大家介紹Java導(dǎo)入Jsoup庫做一個(gè)有趣的爬蟲項(xiàng)目,感興趣的朋友跟隨小編一起看看吧
    2023-11-11
  • 基于SSM框架之個(gè)人相冊(cè)示例代碼

    基于SSM框架之個(gè)人相冊(cè)示例代碼

    本篇文章主要介紹了基于SSM框架之個(gè)人相冊(cè)示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • SSH 框架簡(jiǎn)介

    SSH 框架簡(jiǎn)介

    SSH是 struts+spring+hibernate的一個(gè)集成框架,是目前較流行的一種web應(yīng)用程序開源框架。本文給大家詳細(xì)看一下組成SSH的這三個(gè)框架
    2017-09-09
  • Springboot之如何統(tǒng)計(jì)代碼執(zhí)行耗時(shí)時(shí)間

    Springboot之如何統(tǒng)計(jì)代碼執(zhí)行耗時(shí)時(shí)間

    這篇文章主要介紹了Springboot之如何統(tǒng)計(jì)代碼執(zhí)行耗時(shí)時(shí)間問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • springboot日志沒有記錄異常問題及解決

    springboot日志沒有記錄異常問題及解決

    在Spring Boot項(xiàng)目中,定時(shí)任務(wù)在服務(wù)器上運(yùn)行時(shí)報(bào)錯(cuò)但未記錄日志,本地運(yùn)行時(shí)控制臺(tái)能打印報(bào)錯(cuò)信息,但日志中無記錄,問題出在報(bào)錯(cuò)發(fā)生在線程池中,通過繼承ThreadPoolExecutor并重寫afterExecute方法,可以將異常信息記錄到日志中
    2025-02-02

最新評(píng)論

新安县| 秦安县| 红桥区| 夏津县| 玛多县| 白朗县| 元氏县| 芷江| 济南市| 舞阳县| 黑龙江省| 凉山| 纳雍县| 昭通市| 铜鼓县| 封丘县| 灵寿县| 普宁市| 肇州县| 哈密市| 米易县| 顺昌县| 乌审旗| 冷水江市| 梨树县| 博白县| 东港市| 平江县| 阜新| 克山县| 开江县| 台东市| 建平县| 青州市| 洛南县| 盱眙县| 拉萨市| 怀仁县| 北宁市| 赣榆县| 松阳县|