文字列の連結: concat() と " " 演算子
質問:
はconcat() メソッドと、文字列連結という点で同等の " " 演算子Java?
背景:
「 」演算子と concat() メソッドは両方とも、Java で文字列を連結するために使用されます。どちらのメソッドも同様のタスクを実行するように見えますが、内部ではいくつかの違いがある可能性があります。
答え:
いいえ、 concat() メソッドと " "演算子は厳密には同等ではありません。主な違いをいくつか示します:
1.セマンティクス:
2.実装:
javap -c を使用してコードを逆アセンブルすると、「a = b;」のバイトコードを観察できます:
// ... java.lang.String cat(java.lang.String, java.lang.String); Code: 0: new #2; //class java/lang/StringBuilder 3: dup 4: invokespecial #3; //Method java/lang/StringBuilder."<init>":()V 7: aload_1 8: invokevirtual #4; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 11: aload_2 12: invokevirtual #4; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder; 15: invokevirtual #5; //Method java/lang/StringBuilder.toString:()Ljava/lang/String; 18: astore_1 // ...
このバイトコードは、「a = b;」を示しています。 」これは次と同等です:
a = new StringBuilder() .append(a) .append(b) .toString();
一方、concat() メソッドには独自の専用実装があります:
public String concat(String s) { // ... }
3。パフォーマンス:
従来、concat() は文字列の char 配列表現を直接操作するため、" " 演算子よりも高速であると期待されていました。ただし、HotSpot JVM の進歩により、「」オペレーターはパフォーマンスの点でより競争力が高くなりました。ほとんどの場合、2 つのメソッド間に速度に大きな違いはありません。
結論:
concat() と " " 演算子の両方を使用できます。文字列の連結に使用されますが、セマンティクス、実装、および潜在的なパフォーマンスに微妙な違いがあります。これらの違いを理解すると、Java で文字列を操作するときに情報に基づいた意思決定を行うことができます。
以上がJava の `concat()` メソッドと文字列連結の ' ' 演算子は本当に同等ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。