這篇文章帶給大家的內容是關於Java中"abc"和new String("abc")有什麼不同?有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
Java工程師面試官偏好的問題之一,就是"abc"和 new String("abc")的差別是什麼?回答的比較好的會帶出Java堆,棧,常數池,引用等概念。但今天不止如此,我們從指令的角度,去看這個問題。
正文
我們知道,java類別編譯後的字節碼是個二進位文件,不是給人而是給機器閱讀的。但是java有一個javap的指令,可以把字節碼翻譯成人類能看懂的東西。
javap是 Java class檔案分解器,可以反編譯(也就是對javac編譯的檔案進行反編譯),也可以檢視java編譯器產生的字節碼。用於分解class檔案。
現在有一個類,定義入下
public class A01 { public static void main(String ... args){ String a = "123"; String c = new String("123"); } }
先用javac A01.java編譯成字節碼,再使用javap -c A01.class進行反編譯。得到入下文本
Compiled from "A01.java" public class javap.A01 { public javap.A01(); Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object."<init>":()V 4: return public static void main(java.lang.String...); Code: 0: ldc #2 // String 123 2: astore_1 3: new #3 // class java/lang/String 6: dup 7: ldc #2 // String 123 9: invokespecial #4 // Method java/lang/String."<init>":(Ljava/lang/String;)V 12: astore_2 13: return }</init></init>
我們主要看下面這段關於main方法的文本,裡面涉及的指令不多,我整理了一下
ldc:將常亮加載到操作數棧
astore_1: 將棧頂元素的值儲存到變數1
new: 為要建立的類別實例開闢記憶體空間,並將位址壓入操作數棧
dup: 複製操作數棧頂值,並將其壓入棧頂
invokespecial:呼叫方法,範例中的方法是類別的建構器
現在我們結合指令和操作數棧,來模擬一次計算
回到最開始的問題,a="123"和a=new String("123")的區別,前者指向的是常數池的位址,後者指向的是堆中新開闢的地址。這兩個 == 的結果,自然是不相等的。 equals的結果呢? equals是字元逐一比較內容,是相等的。
這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的Java教學影片專欄!
以上是Java中'abc'和new String('abc')有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用Maven和Gradle進行Java項目管理,構建自動化和依賴性解決方案,以比較其方法和優化策略。

本文使用Maven和Gradle之類的工具討論了具有適當的版本控制和依賴關係管理的自定義Java庫(JAR文件)的創建和使用。

本文討論了使用咖啡因和Guava緩存在Java中實施多層緩存以提高應用程序性能。它涵蓋設置,集成和績效優勢,以及配置和驅逐政策管理最佳PRA

本文討論了使用JPA進行對象相關映射,並具有高級功能,例如緩存和懶惰加載。它涵蓋了設置,實體映射和優化性能的最佳實踐,同時突出潛在的陷阱。[159個字符]

Java的類上載涉及使用帶有引導,擴展程序和應用程序類負載器的分層系統加載,鏈接和初始化類。父代授權模型確保首先加載核心類別,從而影響自定義類LOA


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版
中文版,非常好用

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),