String LiteralとString Objectの主な違いは、String Literalがダブルクォートで作成されたStringであるのに対し、String Objectはnew()演算子で作成されたStringである点です。
Stringは文字の集合体です。
一般に、ほとんどのアプリケーションでStringの操作を行う必要があります。
Javaは高度な汎用プログラミング言語です。
そのため、プログラマはJavaでStringを操作するプログラムを書くことができます。
さらに、JavaのStringには、String LiteralとString Objectの2種類があります。
プログラマは、文字列を二重引用符で囲んでString Literalを作成することができます。
一方、Stringオブジェクトは、new演算子で作成します。
Javaにおける文字列リテラルとは何か
二重引用符の中にStringのインスタンスを作成することができる。
例えば、”Hello World “はそのようなStringのインスタンスです。
したがって、このような二重引用符で囲まれたリテラルは、String リテラルとなります。
これらのStringリテラルは、すべてStringプールに格納されます。
例として、次のようなものがあります。
String s1 = “Hello World”;
ここで、s1はStringプール内の “Hello World “を参照している。
また、次のような文があるとする。
String s2 = “Hello World”;
Hello World” はすでに String プールに存在するので、s2 参照変数も String プールにすでに存在する “Hello World” を指すことになる。
つまり、s1 と s2 は String プールに存在する同じ “Hello World” を参照していることになる。
したがって、プログラマが次のような文を書くと、true と表示されます。
System.out.println(s1==s2);
JavaにおけるStringオブジェクトとは
Stringオブジェクトとは、new演算子で作成された文字列をStringオブジェクトとしたものです。
以下はその例です。
String s1 = new (“Hello World”);
String s2 = new (“Hello World”);
Stringリテラルとは異なり、この場合は2つの別々のオブジェクトが存在します。
つまり、s1は1つの「Hello World」を指し、s2はもう1つの「Hello World」を指す。
ここで、s1 と s2 は別々の String オブジェクトを参照する参照変数です。
したがって、プログラマーが次のような文を書くと、falseと表示されます。
System.out.println(s1==s2);
Javaにおける文字列リテラルと文字列オブジェクトの違い
定義
Javaにおける文字列リテラルとは、二重引用符で囲んで作成される文字の集合のことです。
これに対して、JavaのString Objectは、new()演算子を使って作成される文字の集合です。
このように、文字列リテラルと文字列オブジェクトの主な違いを説明します。
機能性
Stringリテラルでは、Stringがすでに存在する場合は、新しい参照変数がすでに存在するリテラルを指します。
Stringがすでに存在するかどうかにかかわらず、新しいStringオブジェクトが作成されます。
これが文字列リテラルと文字列オブジェクトのもう一つの違いです。
構文
また、String s = “Hello World”; は、String リテラルを作成する構文です。
一方、String s = new String (“Hello World!”); は、String オブジェクトを作成するための構文です。
結論
Javaで文字列を作成する方法には、String LiteralとString Objectの2つがあります。
String LiteralとString Objectの主な違いは、String Literalがダブルクォートで作成されたStringであるのに対し、String Objectはnew()演算子で作成されたStringである点です。