文字列と連結するときに1文字に対してどのような引用符を選択すればよいですか?文字列を1文字に連結するときの引用符
String s1="string";
は私が
String s2=s1+'c';
それとも
String s2=s1+"c";
を使用する必要がありますか?
文字列と連結するときに1文字に対してどのような引用符を選択すればよいですか?文字列を1文字に連結するときの引用符
String s1="string";
は私が
String s2=s1+'c';
それとも
String s2=s1+"c";
を使用する必要がありますか?
両方を使用できます。試してみる!
「なぜですか?」あなたが尋ねる。ここの魔法は+
です。
文字列で+
を使用すると、自動的にもう一方のオペランドが文字列に変換されます。そのため、文字リテラルの'c'
で使用することができます。もちろん"c"
と一緒に使用することもできます。"c"
は文字列リテラルです。
それだけではなく、あなたも文字列に整数を追加することができます。
String s2=s1+1;
Uが2つのdiferent方法でそれを使用することができます:String s2=s1+'c';
と char x = 'c'; String s2 = s1 + x;
は、両方のアプローチは大丈夫ですが、あなたはに入っている場合詳細はおそらく
String s2=s1+'c';
は、charが2バイトであるため、2番目の方法よりもメモリが少し少なくなりますが、文字列requir es 8+バイト。しかし、私はそのようなニュアンスが大抵の場合重要ではないと思っています。また、JVMが最適化する可能性があるので、この違いがまったく存在しないと確信していません。
Javaは自動的に変換を行います。本当に重要ですが、私は個人的に私が個人的に私がそれを防ぐことができる場合起こる '自動もの'を最小限に抑えることを好むので、私は個人的に文字列(二重引用符)を使用したいと思います。
また、「c」が「csomething」であるべきと判断した場合は、とにかくそれを大きな引用に変更する必要があります。 暗黙的キャストと明示的なキャスト:
しかし、私は、私はちょうどつべこべだとし...
者は、鋳造の異なる2種類があります。
String s2=s1+'c';
これは魔法がコンパイラ(オーバーヘッドなし)によって行われることを意味し、暗黙のキャストです。
String s2=s1+"c";
これは、「C」は似オブジェクトに変換されるため、明示的なキャストです:
Object o = "c";
String s2 = (String) o;
これは、変換はオーバーヘッドを作成します。ヌル・ポインタをチェックしなければならないことを意味しています。
したがって両方の方法が機能しますが、キャラクタ( 'c')からキャストするほうがオーバーヘッドが少なくなります。