程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> java-字符串JAVA內存問題疑惑

java-字符串JAVA內存問題疑惑

編輯:編程解疑
字符串JAVA內存問題疑惑

對內存不是特別了解,一直有個疑惑,String a ="a ";String b="b";String c="ab";那麼String c ==a+"b";為false,字符串常量池中有個a了,為什麼這裡的a地址變了?有哪位詳解一下!

最佳回答:


String a ="a";String b="b";String c="ab".intern(); String d=(a+"b").intern(); System.out.println(c==d); 結果 true
必須調用intern() 方法才能把字符串放到常量池裡。
這是官方文檔對intern() 的描述
Returns a canonical representation for the string object.

A pool of strings, initially empty, is maintained privately by the class String.

When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is added to the pool and a reference to this String object is returned.

It follows that for any two strings s and t, s.intern() == t.intern() is true if and only if s.equals(t) is true.

All literal strings and string-valued constant expressions are interned. String literals are defined in section 3.10.5 of the The Java™ Language Specification.

Returns:
a string that has the same contents as this string, but is guaranteed to be from a pool of unique strings.

aq23es
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved