Javaで文字をどのように連結しますか?文字列を連結するには、文字列間に+
のみが必要ですが、+
を使用して文字を連結すると、charの値がasciiに変更されるため、数値が出力されます。 System.out.println(char1+char2+char3...
を実行して、このような文字列Wordを作成します。
私はそれをできた
System.out.print(char1);
System.out.print(char2);
System.out.print(char3);
しかし、これにより、1行の文字のみが取得されます。文字列として必要です。任意の助けをいただければ幸いです。
ありがとう
それらから文字列を作りたいですか?
String s = new StringBuilder().append(char1).append(char2).append(char3).toString();
ご了承ください
String b = "b";
String s = "a" + b + "c";
実際にコンパイルします
String s = new StringBuilder("a").append(b).append("c").toString();
編集:litbが指摘したように、これを行うこともできます:
"" + char1 + char2 + char3;
次のようにコンパイルされます。
new StringBuilder().append("").append(c).append(c1).append(c2).toString();
Edit(2):cletusが指摘しているように、一連の文字列がコンパイラによって処理されるため、文字列の追加の比較を修正しました。
上記の目的は、コンパイラーが何をすべきかを示すことではなく、コンパイラーが何をするかを説明することです。
私はこの質問に答えるつもりはありませんでしたが、ここには2つの答えがあります(投票されています!)。次の式を検討してください。
String a = "a" + "b" + "c";
String b = System.getProperty("blah") + "b";
最初はcompile-timeで評価されます。 2番目はrun-timeで評価されます。
never(任意の型の)定数連結をStringBuilder、StringBufferなどに置き換えます。変数が呼び出される場合にのみ使用します。通常は、多数のオペランドを追加する場合、またはループで追加する場合にのみ使用します。
文字が一定の場合、これは問題ありません。
String s = "" + 'a' + 'b' + 'c';
そうでない場合、これを考慮してください:
String concat(char... chars) {
if (chars.length == 0) {
return "";
}
StringBuilder s = new StringBuilder(chars.length);
for (char c : chars) {
s.append(c);
}
return s.toString();
}
適切なソリューションとして。
ただし、最適化を希望する人もいるかもしれません。
String s = "Name: '" + name + "'"; // String name;
これに:
String s = new StringBuilder().append("Name: ").append(name).append("'").toString();
これは意図的なものですが、一番下の行はDO N'Tです。
どうして?別の答えが正しく指摘したように、コンパイラがこれをあなたのために行います。そのため、自分でそれを行う場合、コンパイラがコードを最適化することを許可していないか、コードが読みにくく、不必要に複雑であるかどうかに依存していません。
低レベルの最適化では、コンパイラはあなたよりもコードの最適化に優れています。
コンパイラに任せましょう。この場合、最悪のシナリオは、コンパイラがコードを正確に記述したものに暗黙的に変更することです。 2〜3個の文字列を連結する方が、StringBuilderを構築するよりも効率的である可能性があるため、そのままにしておくことをお勧めします。コンパイラは、この点で最適なものを知っています。
たくさんの文字があり、それらを文字列に連結したい場合は、
System.out.println("" + char1 + char2 + char3);
?
String constructor を使用できます。
System.out.println(new String(new char[]{a,b,c}));
空の文字列でも、文字列でシーケンスを開始することにより、文字列の連結を行うことをコンパイラに指示する必要があります。そのようです:
System.out.println("" + char1 + char2 + char3...);
System.out.println(char1+""+char2+char3)
または
String s = char1+""+char2+char3;
char
型は単一の文字のみを保持するため、連結文字の配列を保持するには、何らかの説明のStringオブジェクトが必要です。例えば。、
StringBuilder sb = new StringBuilder('a').append('b').append('c');
System.out.println(sb.toString);
パブリッククラスのイニシャル{
public static void main (String [] args) {
char initialA = 'M';
char initialB = 'P';
char initialC = 'T';
System.out.println("" + initialA + initialB + initialC );
}
}
これは、文字を連結または追加する非常に簡単なアプローチです
StringBuilder desc = new StringBuilder();
String Description="this is my land";
desc=desc.append(Description.charAt(i));
私は自分をJavaプログラマーとは考えていませんが、ここでは「完全性のため」に追加すると思いました。(Cに触発された)String.format
静的メソッド:
String s = String.format("%s%s", 'a', 'b'); // s is "ab"