CharSequenceを期待するメソッドに単一のcharを渡す最も効率的な方法は何ですか?
これは私が持っているものです:
textView.setText(new String(new char[] {c} ));
ここで与えられた答えによると、これは入力が文字配列である場合にそれを行うための賢明な方法です。単一文字の場合に適用できる卑劣なショートカットがあるかどうか疑問に思いました。
CharSequenceを期待するメソッドに単一のcharを渡す最も効率的な方法は何ですか?
これは私が持っているものです:
textView.setText(new String(new char[] {c} ));
ここで与えられた答えによると、これは入力が文字配列である場合にそれを行うための賢明な方法です。単一文字の場合に適用できる卑劣なショートカットがあるかどうか疑問に思いました。
textView.setText(String.valueOf(c))
メソッドの実装を見ると、Character.toString(char c)
使用しているコードとほぼ同じコードが使用されていることがわかります。
public String toString() {
char buf[] = {value};
return String.valueOf(buf);
}
読みやすくするために、を使用する必要がありますCharacter.toString( c )
。
別の効率的な方法はおそらく
new StringBuilder(1).append(c);
+
javadocによると、次の理由から、演算子を使用するよりも間違いなく効率的です。
Java言語は、文字列連結演算子(+)、および他のオブジェクトの文字列への変換を特別にサポートします。
StringBuilder
文字列の連結は、 (またはStringBuffer
)クラスとそのappendメソッドを介して実装されます
少数の文字がある場合に取得できる最もコンパクトなCharSequenceは、CharBufferです。これをchar値で初期化するには:
CharBuffer.wrap(new char[]{c});
そうは言っても、文字列を使用する方がかなり読みやすく、操作も簡単です。
可能な限り少ないタイプの文字のように、省略形:
c+""; // where c is a char
略さずに:
textView.setText(c+"");
連結なしの解決策は次のとおりです。
Character.valueOf(c).toString();
char c = 'y';
textView.setText(""+c);
上記の回答(リンク)に追加し、より明確にするための例を追加します
char c = 'a';
CharSequence cs = String.valueOf(c);