2010-12-03 1 views
0

の(char)tempとCharacter.toChars(temp)とString.valueOf(Character.toChars(temp))の違いは何ですか?違いは何ですか?それは良いですか? TEMPがJavaの

System.out.print((char)temp); 

System.out.print(Character.toChars(temp)); 

System.out.print(String.valueOf(Character.toChars(temp))); 
+0

あなたは何をしたいですか?私たちがあなたに最高の方法であることを伝えることができます。 –

+0

ファイルの内容を画面に表示したいだけです – JayXon

答えて

1

通常、これら3つのステートメントはすべて同じことをします。そして、確かに、これはに、ちょうどReader.read()を使って読み込んだ文字が含まれていて、その文字がUTF-16の代理文字でなかった場合です。 (これは「右」の事かどうかは、デフォルトの文字エンコーディングがお書きしようとしている文字をサポートしているかどうかに依存しないかどうか。)

temp65535よりも大きかったUnicodeのコードポイントが含まれている場合、最初の文はなり最終的にコードポイントをマングリングしますが、2番目と3番目のステートメントは、出力される文字の正しい表現になります。

tempにUTF-16代理文字が含まれていると、どうなるかわかりません。私はそれがうまくいくと思う。しかし、PrintStream.print(char)のjavadocをリテラルとして読むと、UTF-16からUTF-8への変換でも、単一の代理文字がエラーとして扱われる可能性があります。ただし、Readerが65535より大きいUnicodeコードポイントを含むストリームとして読み込み中でない限り、これは問題になります。

4

)(reader.readから読み出し、intで最初の二つを使用する代わりに、基本データ型charのキャラクタオブジェクトを呼び出している以外は、基本的に同じです。 3番目のステップは必要ではないもう1つのステップですが、System.out.printは入力を読み取り可能な出力文字列に変換します。したがって、文字を解析して文字列にする必要はありません。

最初の方法は、必要な作業を行うための完璧な方法です。

関連する問題