Metoda Java String intern () vrací kanonickou reprezentaci objektu řetězce.
Syntaxe řetězcové intern()
metody je:
string.intern()
Zde je řetězec objektem String
třídy.
intern () parametry
intern()
Metoda nebere žádné parametry.
intern () návratová hodnota
- vrací kanonickou reprezentaci řetězce
Co je to Java String Interning?
String interning zajišťuje, že všechny řetězce se stejným obsahem používají stejnou paměť.
Předpokládejme, že jsme tyto dva řetězce:
String str1 = "xyz"; String str2 = "xyz";
Vzhledem k tomu, jak str1
a str2
mají stejný obsah, budou oba tyto řetězce mají stejnou paměť. Java automaticky internuje řetězcové literály.
Pokud však vytvoříte řetězce pomocí new
klíčového slova, tyto řetězce nebudou sdílet stejnou paměť. Například,
class Main ( public static void main(String() args) ( String str1 = new String("xyz"); String str2 = new String("xyz"); System.out.println(str1 == str2); // false ) )
Jak vidíte z tohoto příkladu, str1 i str2 mají stejný obsah. Nejsou si však rovni, protože nesdílejí stejnou paměť.
V tomto případě můžete intern()
metodu použít ručně, aby se pro řetězce se stejným obsahem používala stejná paměť.
Příklad: Java String intern ()
class Main ( public static void main(String() args) ( String str1 = new String("xyz"); String str2 = new String("xyz"); // str1 and str2 doesn't share the same memory pool System.out.println(str1 == str2); // false // using the intern() method // now both str1 and str2 share the same memory pool str1 = str1.intern(); str2 = str2.intern(); System.out.println(str1 == str2); // true ) )
Jak vidíte, str1 i str2 mají stejný obsah, ale zpočátku se nerovnají.
Potom použijeme intern()
metodu tak, aby str1 a str2 používaly stejný fond paměti. Poté, co použijeme intern()
, str1 a str2 jsou stejné.