欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談java中String的兩種賦值方式的區(qū)別

 更新時(shí)間:2017年11月17日 14:12:48   作者:_枸杞子_  
這篇文章主要介紹了淺談java中String的兩種賦值方式的區(qū)別。簡(jiǎn)單介紹了兩種賦值方式,然后進(jìn)行了實(shí)例分析,具有一定參考價(jià)值,需要的朋友可以了解下。

類似普通對(duì)象,通過(guò)new創(chuàng)建字符串對(duì)象。String str = new String("Hello"); 內(nèi)存圖如下圖所示,系統(tǒng)會(huì)先創(chuàng)建一個(gè)匿名對(duì)象"Hello"存入堆內(nèi)存(我們暫且叫它A),然后new關(guān)鍵字會(huì)在堆內(nèi)存中又開辟一塊新的空間,然后把"Hello"存進(jìn)去,并且把地址返回給棧內(nèi)存中的str, 此時(shí)A對(duì)象成為了一個(gè)垃圾對(duì)象,因?yàn)樗鼪](méi)有被任何棧中的變量指向,會(huì)被GC自動(dòng)回收。

直接賦值。如String str = "Hello"; 首先會(huì)去緩沖池中找有沒(méi)有一個(gè)"Hello"對(duì)象,如果沒(méi)有,則新建一個(gè),并且入池,所以此種賦值有一個(gè)好處,下次如果還有String對(duì)象也用直接賦值方式定義為“Hello”, 則不需要開辟新的堆空間,而仍然指向這個(gè)池中的"Hello"

解釋

l 字符串的內(nèi)容是存放在方法區(qū)的字符串常量池的,沒(méi)有的時(shí)候就新建一個(gè),已經(jīng)存在的時(shí)候就直接指過(guò)去。

l String str1 = “AA”,這種是直接操作字符串常量池指過(guò)去;String str2 = new String(“AA”);這種是先在堆空間開辟這個(gè)類的對(duì)象,實(shí)際上在內(nèi)部還是指到了字符串常量池;

package two.string.mushroom;
public class TestTwoString 
{
	public static void main(String[] args)
		{
		String str1 = "AA";
		String str2 = "AA";
		String str3 = new String("AA");
		System.out.println("str1 == str2: " + (str1 == str2));
		//它們都指向字符串常量池中的 "AA",true
		System.out.println("str1 == str3: " + (str1 == str3));
		//它們本身指向不同,false
		//String類重寫了equals方法,實(shí)際上比較的是字符串的內(nèi)容是否相等,true
		System.out.println("str1.equals(str3): " + (str1.equals(str3)) );
		Animal p1 = new Animal("AA",10);
		Animal p2 = new Animal("AA",12);
		//因?yàn)闃?gòu)造器中的方式是直接指向字符串常量池的,所以也是true
		System.out.println("p1.name == p2.name: " + (p1.name == p2.name));
	}
}
class Animal
{
	String name;
	int age;
	Animal(String name,int age)
		{
		this.name = name;
		//構(gòu)造器中的方式是直接指向字符串常量池的
		this.age = age;
	}
}

測(cè)試結(jié)果

str1 == str2: true 
str1 == str3: false 
str1.equals(str3): true 
p1.name == p2.name: true 

總結(jié)

以上就是本文關(guān)于淺談java中String的兩種賦值方式的區(qū)別的全部?jī)?nèi)容,希望對(duì)大家有所幫助。

相關(guān)文章

  • ConcurrentModificationException日志關(guān)鍵字報(bào)警思考分析

    ConcurrentModificationException日志關(guān)鍵字報(bào)警思考分析

    本文將記錄和分析日志中的ConcurrentModificationException關(guān)鍵字報(bào)警,還有一些我的思考,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2023-12-12
  • struts升級(jí)到2.5.2遇到的問(wèn)題及解決方案(推薦)

    struts升級(jí)到2.5.2遇到的問(wèn)題及解決方案(推薦)

    原來(lái)的版本是2.3.x,由于安全原因需要升級(jí)到2.5.2。但是在升級(jí)過(guò)程中遇到各種各樣的問(wèn)題,下面小編給大家?guī)?lái)了struts升級(jí)到2.5.2遇到的問(wèn)題及解決方案,需要的朋友參考下吧
    2016-11-11
  • Spring框架核心概念小結(jié)

    Spring框架核心概念小結(jié)

    Spring是企業(yè)級(jí)Java的開源開發(fā)框架。Spring框架的核心功能可用于開發(fā)任何java應(yīng)用程序,本文重點(diǎn)給大家介紹Spring框架核心概念總覽,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • Java cglib為實(shí)體類(javabean)動(dòng)態(tài)添加屬性方式

    Java cglib為實(shí)體類(javabean)動(dòng)態(tài)添加屬性方式

    這篇文章主要介紹了Java cglib為實(shí)體類(javabean)動(dòng)態(tài)添加屬性方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Matplotlib可視化之自定義顏色繪制精美統(tǒng)計(jì)圖

    Matplotlib可視化之自定義顏色繪制精美統(tǒng)計(jì)圖

    matplotlib提供的所有繪圖都帶有默認(rèn)樣式.雖然這可以進(jìn)行快速繪圖,但有時(shí)可能需要自定義繪圖的顏色和樣式,以對(duì)繪制更加精美、符合審美要求的圖像.matplotlib的設(shè)計(jì)考慮到了此需求靈活性,很容易調(diào)整matplotlib圖形的樣式,需要的朋友可以參考下
    2021-06-06
  • Java俄羅斯方塊小游戲

    Java俄羅斯方塊小游戲

    這篇文章主要為大家詳細(xì)介紹了Java俄羅斯方塊小游戲,實(shí)現(xiàn)了俄羅斯的經(jīng)典功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • kotlin快速入門之標(biāo)準(zhǔn)函數(shù)與靜態(tài)方法

    kotlin快速入門之標(biāo)準(zhǔn)函數(shù)與靜態(tài)方法

    學(xué)完了Kotlin的基礎(chǔ)知識(shí),是時(shí)候來(lái)來(lái)學(xué)習(xí) Kotlin的標(biāo)準(zhǔn)函數(shù)和靜態(tài)方法了,下面這篇文章主要給大家介紹了關(guān)于kotlin快速入門之標(biāo)準(zhǔn)函數(shù)與靜態(tài)方法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-09-09
  • SpringMVC高級(jí)開發(fā)功能實(shí)現(xiàn)過(guò)程解析

    SpringMVC高級(jí)開發(fā)功能實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了SpringMVC高級(jí)開發(fā)功能實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java設(shè)計(jì)模式之責(zé)任鏈模式(Chain of Responsibility模式)介紹

    Java設(shè)計(jì)模式之責(zé)任鏈模式(Chain of Responsibility模式)介紹

    這篇文章主要介紹了Java設(shè)計(jì)模式之責(zé)任鏈模式(Chain of Responsibility模式)介紹,本文講解了如何使用責(zé)任鏈模式,并給出了4種使用實(shí)例,需要的朋友可以參考下
    2015-03-03
  • SpringBoot項(xiàng)目打包為JAR文件的實(shí)現(xiàn)

    SpringBoot項(xiàng)目打包為JAR文件的實(shí)現(xiàn)

    本文主要介紹了SpringBoot項(xiàng)目打包為JAR文件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09

最新評(píng)論