string-pool

    0熱度

    1回答

    互聯網上的很多文章指出,在多線程中使用String.intern()是壞的,但我真的不明白爲什麼它不好。使用String.intern()總是從字符串池中返回一個唯一的字符串,不是嗎? 如果不是這樣的話JVM字符串池線程是本地的嗎?如果沒有,那麼爲什麼在多線程環境中使用String.intern()進行同步被認爲是不好的?所以在下面的用例,也不會是解決同步問題: Method1 { synchr

    1熱度

    3回答

    public static void main(String[] args) { String[] arr = new String[5]; for (int i = 0; i < arr.length; i++) { arr[i] = "aaa" + i; } System.out.println(arr[0] == "aaa0");

    0熱度

    2回答

    我不確定運行時常量池的某些屬性。 運行時常量池由來自常量池的數據填充(來自.class文件,在類加載期間)。但它是否也被運行時創建的變量填滿了?或者在編譯爲文字時將它們轉換並存儲在常量池中? 例如: Integer i = new Integer(127); 被處理像字面,因爲轉換到的: Integer i = Integer.valueOf(127); 編譯期間 ,並存儲在常量池中的?

    1熱度

    3回答

    具有下面的代碼: String s="JAVA"; for(i=0; i<=100; i++) s=s+"JVM"; 創建多少字符串?我的猜測是,103個字符串創建: 1:字符串 「JVM」 也是在字符串池中 101:在字符串池中 1字符串 「JAVA」 的新的String s因爲字符串是不可變的類

    0熱度

    1回答

    字符串是不可變的,並在字符串池中進行管理。我想知道這個池是如何管理的。如果在應用程序中使用了大量的字符串字符串(我理解字符串生成器應該在像append,replace操作那樣的修改時使用),那麼Pool通過不重新重新創建新的String對象來增強應用程序的性能但使用池中存在的相同對象,這是可能的,因爲字符串是不可變的,並且這樣做沒有不良影響。 我的問題是如何管理這String Pool。如果在某些

    0熱度

    1回答

    Strings是不可變的對象並存儲在字符串池中。假設在應用程序中沒有任何字符串是使用new運算符創建的。在這種情況下,還需要使用equals方法,而不是對String對象相等性檢查嗎? 我覺得上述問題的答案可能是「是」,它與字符串池大小有關。 如何管理字符串池?內存有限,所以我覺得String pool也有一定的大小。它是否像LRU緩存一樣工作,在池滿時丟棄最少使用的字符串? 請提供您的寶貴意見。

    2熱度

    1回答

    我嘗試了一些東西象下面這樣: String s1="test5"; String s2="test"+5; String s3="test"+s1.length(); System.out.println("s1==s2 "+(s1==s2)+" s2==s3 "+(s2==s3)+" s1==s3 "+ (s1==s3)); 輸出是: s1==s2true s2==s3false s1

    1熱度

    2回答

    我碰到一個問題就問的以下的輸出: String s1 = "String 1"; String s2 = "String 2"; String s3 = s1 + s2; String s4 = "String 1" + "String 2"; System.out.println(s3==s4); 輸出 - false 現在,由於字符串不是使用ne

    -3熱度

    3回答

    Javadoc說如果在字符串池中有一個相等的String,那麼intern()方法將返回String。 public class Demo { public static void main(String[] args) { String str1 = "Apple"; String str2 = new String("Apple"); System.out.p

    4熱度

    2回答

    因此,當我偶然發現一個令人困惑的構造函數時,我正在閱讀String類。該代碼是這樣 public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */