Keresés

Új hozzászólás Aktív témák

  • Superhun

    addikt

    válasz Lacces #3138 üzenetére

    "a String az egy olyan állandó, amelynek értéke futás közben megváltozhatatlan"

    Valójában csak a mérete, a karaktereket módosíthatjuk benne a charAt metódussal, O(1) időben. ;)

    "a Szemétgyűjtő a Stringeket nem kezeli, nem dobja ki őket"

    Ezt nem gondolhatod komolyan. Elég sok alkalmazás kapna így out of memory-t :D. Valójában úgy áll a dolog, hogy a kódban definiált Stringek (String str = "abc") az úgynevezett literal pool-ban lévő elemekre fognak hivatkozni, ami a heap-től független, így a GC-től is. A futás időben keletkezett String objektumok viszont mindig a heap-re kerülnek, amiket pedig a GC eltakarít, ha már nincs rájuk hivatkozás.

    Példa:

    String str1 = "abc";
    String str2 = "abc";
    System.out.println(str1 == str2);

    Eredmény: true

    String str1 = new String("abc");
    String str2 = new String("abc");
    System.out.println(str1 == str2);

    Eredmény: false

Új hozzászólás Aktív témák