String str=Hello 與 String str=new String(“Hello”)一樣嗎?

為什么會輸出上邊的結果呢,String x = "Hello" 的方式,Java 虛擬機會將其分配到常量池中,而常量池中沒有重復的元素,比如當執行“Hello”時,java虛擬機會先在常量池中檢索是否已經有“Hello”,如果有那么就將“代理”的地址賦給變量,如果沒有就創建一個,然后在賦給變量;而 String z = new String(“Hello”) 則會被分到堆內存中,即使內容一樣還是會創建新的對象。

?

上面程序中的"==“是判斷兩個對象引用的地址是否相同,也就是判斷是否為同一個對象,a1與a2 返回為true,a1與a3返回則是false。說明a1與a2引用的同一個對象的地址,a3則與其它兩個引用不是同一個對象地址。
Java為了避免產生大量的String對象,設計了一個字符串常量池。工作原理是這樣的,創建一個字符串時,JVM首先為檢查字符串常量池中是否有值相等的字符串,如果有,則不再創建,直接返回該字符串的引用地址,若沒有,則創建,然后放到字符串常量池中,并返回新創建的字符串的引用地址。所以上面a1與a2引用地址相同。
那為什么a3與a1、a2引用的不是同一個字符串地址呢? String a3=new String(“代理Hello); JVM首先是在字符串常量池中找"Hello” 字符串,如果沒有創建字符串常量,然后放到常量池中,若已存在,則不需要創建;當遇到 new 時,還會在內存(不是字符串常量池中,而是在堆里面)上創建一個新的String對象,存儲"Hello",并將內存上的String對象引用地址返回,所以a3與a1、a2引用的不是同一個字符串地址。內存結構圖如下:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271947.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271947.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271947.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

盤點程序員最喜歡的15個網站

程序員作為一個經常和互聯網打交道的人群,他們喜歡瀏覽哪些網站呢?不愛敲代碼的程序猿整理了以下網站供大家參考,排名不分先后: 0. Google https://google.com 這個不用多說了吧。 1.GitHub 開發者最最最重要的網站:h…

簡單的反射 把datatable 轉換成list對象

/// <summary>/// 把datatable 轉換成list對象/// </summary>/// <typeparam name"T"></typeparam>/// <param name"dt"></param>/// <returns></returns>public List<T> SelectsAll<T>(Data…

mysql 取 映射數據庫中_JAVA與數據庫MySQL相連接

JDBC(Java數據庫連接體系結構)&#xff1a;是Java實現數據庫訪問的應用程序編程接口&#xff0c;主要功能是管理存放在數據庫中的數據。通過接口對象&#xff0c;應用程序可以完成與數據庫的連接&#xff0c;執行SQL語句&#xff0c;從數據庫中獲取結果&#xff0c;獲取狀態以及…

抽象類必須要有抽象方法嗎?

答案是&#xff1a;不必須。 這個題目主要是考察對抽象類的理解。 說一下我個人的理解吧。 1.如果一個類使用了abstract關鍵字修飾&#xff0c;那么這個類就是一個抽象類。 2.抽象類可以沒有抽象方法 3.一個類如果包含抽象方法&#xff0c;那么這個類必須是抽象類&#xf…

python序列化和反序列化_Python 中 json 數據序列化和反序列化

1.Json 定義定義&#xff1a;JSON(JavaScript Object Notation, JS 對象簡譜) 是一種輕量級的數據交換格式。JSON 的數據格式其實就是 python 里面的字典格式&#xff0c;里面可以包含方括號括起來的數組&#xff0c;也就是python里面的列表。特點&#xff1a;簡潔和清晰的層次…

重寫navigationController的push方法后,出現卡頓現象

在使用navigation的pushViewController進行push的時候&#xff0c;兩個頁面間的動畫會出現卡頓一下再推出的效果&#xff0c;是因為iOS7 viewController背景顏色的問題&#xff0c;看到大神的博客上說&#xff1a;其實不是卡頓&#xff0c;是由于透明色顏色重疊后視覺上的問題&…

硬件:RS232基礎知識筆記

個人計算機上的通訊接口之一&#xff0c;由電子工業協會&#xff08;ElectronicIndustriesAssociation&#xff0c;EIA&#xff09;所制定的異步傳輸標準接口。通常RS-232接口以9個引腳&#xff08;DB-9&#xff09;或是25個引腳&#xff08;DB-25&#xff09;的型態出現&#…

普通類和抽象類有哪些區別?

抽象類不能被實例化抽象類可以有抽象方法&#xff0c;抽象方法只需申明&#xff0c;無需實現含有抽象方法的類必須申明為抽象類抽象類的子類必須實現抽象類中所有抽象方法&#xff0c;否則這個子類也是抽象類抽象方法不能被聲明為靜態static抽象方法不能用 private 修飾&#x…

正則表達式格式化日期

var str "2016年4月11日";str str.replace(/[\u5e74|\u6708]/g,"-").replace(/\u65e5/g,""); 轉載于:https://www.cnblogs.com/smght/p/5379514.html

硬件:RS422基礎知識筆記

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…

mysql和php數據交互_php mysql交互

1.接受數據if($_POST){$uname trim($_POST[‘uname‘]);$pasd md5($_POST[‘pasd‘]);2.查詢數據庫$conn new mysqli(‘localhost‘,‘root‘,‘root‘,‘qiye‘);$sql "select * from admin where uname ‘$uname‘ and pasd ‘$pasd‘ ";$res $conn->que…

硬件:串口握手基礎知識筆記

RS-232通行方式允許簡單連接三線&#xff1a;Tx、Rx和地線。但是對于數據傳輸&#xff0c;雙方必須對數據定時采用使用相同的波特率。盡管這種方法對于大多數應用已經足夠&#xff0c;但是對于接收方過載的情況這種使用受到限制。這時需要串口的握手功能。在這一部分&#xff0…

PyV8

待完善 pyv8是個js解析引擎&#xff0c; PyV8 是 V8 引擎的 Python 語言封裝&#xff0c;這是 Python 和 JavaScript 對象之間的橋&#xff0c;支持在 Python 腳本中調用 V8 引擎。 # -*- coding: cp936 -*-import PyV8class Test():def js(self):ctxt PyV8.JSContext()ctxt.e…

抽象類能使用 final 修飾嗎?

抽象類就是要被繼承的&#xff0c;不能用final聲明&#xff0c;final聲明的類不可繼承

python高斯求和_二、算法分析

一、什么是算法分析程序和算法的區別&#xff1a;算法是對問題解決的分步描述程序是采用某種編程語言實現的算法&#xff0c;同一個算法通過不同的程序員采用不同的編程語言&#xff0c;能產生很多程序算法分析的概念&#xff1a;算法分析主要就是從計算資源消耗的角度來評判和…

硬件:交換機基礎知識

1、交換機的概念交換機&#xff08;Switch&#xff09;意為“開關”&#xff0c;是一種用于電&#xff08;光&#xff09;信號轉發的網絡設備。它可以為接入交換機的任意兩個網絡節點提供獨享的電信號通路。最常見的交換機是以太網交換機。其他常見的還有電話語音交換機、光纖交…

PhantomJS 與python的結合

待完善 一.簡介 PhantomJS是一個基于webkit的JavaScript API。它使用QtWebKit作為它核心瀏覽器的功能&#xff0c;使用webkit來編譯解釋執行JavaScript代碼。任何你可以在基于webkit瀏覽器 做的事情&#xff0c;它都能做到。它不僅是個隱形的瀏覽器&#xff0c;提供了諸如CSS選…

mysql對數據庫的操作_MySQL數據庫對數據庫的操作

1.創建數據庫mysqlgt; create database if not exists tongcheng; Query OK, 1 row affected (0.01 sec) mysqlgt; 2.查看創建數1.創建數據庫mysql> create database if not exists tongcheng;Query OK, 1 row affected (0.01 sec)mysql>2.查看創建數據庫時的選項mysql&g…

static用途

static關鍵字的用途 一句話描述就是&#xff1a;方便在沒有創建對象的情況下進行調用(方法/變量)。 顯然&#xff0c;被static關鍵字修飾的方法或者變量不需要依賴于對象來進行訪問&#xff0c;只要類被加載了&#xff0c;就可以通過類名去進行訪問。 static可以用來修飾類的…

硬件:寬帶貓(光貓)的基礎知識

??作者主頁&#xff1a;IT技術分享社區 ??作者簡介&#xff1a;大家好,我是IT技術分享社區的博主&#xff0c;從事C#、Java開發九年&#xff0c;對數據庫、C#、Java、前端、運維、電腦技巧等經驗豐富。 ??個人榮譽&#xff1a; 數據庫領域優質創作者&#x1f3c6;&#x…