の(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)));
の(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)));
通常、これら3つのステートメントはすべて同じことをします。そして、確かに、これはに、ちょうどReader.read()
を使って読み込んだ文字が含まれていて、その文字がUTF-16の代理文字でなかった場合です。 (これは「右」の事かどうかは、デフォルトの文字エンコーディングがお書きしようとしている文字をサポートしているかどうかに依存しないかどうか。)
temp
が65535
よりも大きかったUnicodeのコードポイントが含まれている場合、最初の文はなり最終的にコードポイントをマングリングしますが、2番目と3番目のステートメントは、出力される文字の正しい表現になります。
temp
にUTF-16代理文字が含まれていると、どうなるかわかりません。私はそれがうまくいくと思う。しかし、PrintStream.print(char)
のjavadocをリテラルとして読むと、UTF-16からUTF-8への変換でも、単一の代理文字がエラーとして扱われる可能性があります。ただし、Readerが65535
より大きいUnicodeコードポイントを含むストリームとして読み込み中でない限り、これは問題になります。
)(reader.readから読み出し、intで最初の二つを使用する代わりに、基本データ型charのキャラクタオブジェクトを呼び出している以外は、基本的に同じです。 3番目のステップは必要ではないもう1つのステップですが、System.out.printは入力を読み取り可能な出力文字列に変換します。したがって、文字を解析して文字列にする必要はありません。
最初の方法は、必要な作業を行うための完璧な方法です。
あなたは何をしたいですか?私たちがあなたに最高の方法であることを伝えることができます。 –
ファイルの内容を画面に表示したいだけです – JayXon