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

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

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

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í)上就是指針,是指向一個對象的內(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"; 

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

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

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

當(dāng)程序執(zhí)行完第⑤行時,字符串“World”對象被創(chuàng)建,保持到內(nèi)存地址0x23455678中,地址保存到str2變量中,此時,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存儲位置的區(qū)別 

  • 基本變量類型

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

  • 引用變量類型

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

如圖:

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

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

 

 

1.3傳遞方式的區(qū)  

  • 基本變量類型

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

  • 引用變量類型

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

 

 二.String判斷字符串相等

2.1java中字符串的基本存儲原理           

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

2.2舉例

public class ComPareString {    public void test(){        String str1="a";//"a"第一次用到,變?yōu)閷ο?       String str2="b";        String str3="a";//判斷str1==str3為true,str1與str2指向的都是在串池中的對象"a"        String str4="ab";        String str5="a"+"b";//判斷str4==str5為true,str4在編譯的過程中就完成了拼接為"ab"                            // ,與上述同理,與str4所指是同一對象        String str6=str1+str2;//判斷str4==str6為false,str1與str2為變量,實(shí)際上是         //new StringBuilder().append("a").append("b").toString(),即new String("ab")          //新創(chuàng)建了對象,并不是在串池中的"ab",所以為false                                String str7=str6.intern();?       //將str6字符串對象放入串池中,如果串池中有就不會放入,如果沒有就會放入,最后會把串池中的對象返回        //所以str7現(xiàn)在所指的對象與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)建鏈表錯誤點(diǎn)

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

總結(jié)

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

相關(guān)文章

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

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

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

    SpringBoot自動配置原理詳解

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

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

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

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

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

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

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

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

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

    基于SSM框架之個人相冊示例代碼

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

    SSH 框架簡介

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

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

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

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

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

最新評論

北川| 淄博市| 延边| 巴塘县| 石屏县| 社旗县| 资源县| 公安县| 襄垣县| 陇西县| 鹿泉市| 新乐市| 尼玛县| 南雄市| 巴中市| 会宁县| 如东县| 玉溪市| 布拖县| 龙游县| 福建省| 石阡县| 扶风县| 突泉县| 启东市| 阜新市| 嘉荫县| 商都县| 天柱县| 安化县| 蓬溪县| 南阳市| 阳谷县| 新化县| 荔浦县| 南和县| 格尔木市| 长泰县| 察雅县| 阳曲县| 金阳县|