0
A
回答
1
語句String s = "abc"
導致abc
在字符串常量池中創建,如果它尚不存在。如果它存在,那麼將返回一個引用。你可以在這裏找到一個關於字符串常量池的好教程。
http://www.thejavageek.com/2013/06/19/the-string-constant-pool/
1
每次創建一個字符串這種方式時,JVM檢查該對象是否是字符串常量池。如果是這樣,將返回參考到「池」實例。如果不是這樣,一個新的實例初始化並放在池:
----------- String s = "Hello";
|
٧
+-------------------+
| "Hello" |
+-------------------+
pool
0
你所談論的游泳池是在堆和所有存在的引用都存在堆棧(未堆)。創建字符串時String s = "abc";
將字符串字符串「abc」放置在字符串池中,除了使用new創建String對象的情況外,所有其他引用都將指向該字面值(在此情況下單獨的內存空間將分配在堆上)。
0
字符串池指的是內存中定義字符串的位置。字符串池具有對要重用的常量的引用。字符串池是什麼讓這種情況發生:
String a = "a" + "b";
String b = "ab";
if(a == b) {
System.out.println("this will print");
}
一個== B就評估爲真,因爲編譯器看到這兩個字符串和串B爲等於「AB」所以這個字符串存儲在字符串池和字符串a和字符串b指向這一個引用。
1
字符串池只是字符串文字的緩存。每當我們將字符串文字分配給字符串引用時,文字將在字符串池中搜索並將其分配給引用變量。 在String s="abc"
中,JVM將在字符串池中搜索文字,並將它分配給引用變量s
的引用。
0
「abc」在編譯時定義在這裏,因此會自動實現。此字符串對象將因此轉到字符串實習生池。如果在那裏已經存在,那麼它的引用將被返回。字符串intern池是Java 7以來的主要Java堆的一部分(我們知道堆將包含對象)。
相關問題
- 1. Javascript - 使用字符串作爲對象參考
- 2. 對象不作爲參考
- 3. 字符串作爲對象
- 4. Perl字符串作爲函數參考
- 5. 參考字符串對象
- 6. 作爲Groovy字符串而不是對象返回的參數
- 7. 參考其他對象作爲參考類別字段
- 8. 應該將istream作爲參考還是const參考傳遞?
- 9. 作爲字符串的對象引用?
- 10. 作爲字符串的對象名稱
- 11. 是否聲明一個私有字符串作爲參考有所作爲?
- 12. 對象沒有通過作爲參考
- 13. 1D數組是作爲字符串列表還是單個字符串工作?
- 14. 字符串作爲參數
- 15. 字符串作爲參數?
- 16. Python字符串變量作爲對象
- 17. JSON對象作爲字符串
- 18. php simplexml - 字符串作爲對象
- 19. Zend表單對象作爲字符串
- 20. 發送字符串作爲JSON對象
- 21. AS3投字符串作爲對象
- 22. JSON對象作爲PHP字符串
- 23. 這是作爲對象分配中的參考
- 24. C通過字符作爲參考
- 25. 如何在java中使用字符串作爲參考?
- 26. 在Java中傳遞一個字符串作爲參考?
- 27. 從Javascript函數參考中獲取名稱作爲字符串?
- 28. 如何將字符串對象轉換爲字符串池對象?
- 29. 存儲對象字符串參考
- 30. 字符串到對象參考
字符串對象 –
轉到救援人員到場鏈接 [http://stackoverflow.com/questions/3801343/what-is-string-pool-in-java][1] [1 ]:http://stackoverflow.com/questions/3801343/what-is-string-pool-in-java –