charAt()
メソッドで実行できるさまざまな比較を見てきました。
しかし、私はそれらのいくつかを本当に理解することができません。
String str = "asdf";
str.charAt(0) == '-'; // What does it mean when it's equal to '-'?
char c = '3';
if (c < '9') // How are char variables compared with the `<` operator?
任意の助けいただければ幸いです。
//それが「-」に等しいとはどういう意味ですか?
すべての文字と記号は文字です。文字列の最初の文字を見て、一致するかどうかを確認できます。
この場合、最初の文字を取得して、それがマイナス文字かどうかを確認します。このマイナス記号は(char) 45
です。下記をご覧ください
// char変数は
<
演算子とどのように比較されますか?
Javaでは、すべての文字は実際には16ビットの符号なし数値です。各文字には、ユニコードに基づいた数字があります。例えば'9'
は文字です(char) 57
この比較は、9
のコードよりも小さい任意の文字に当てはまります。スペース。
文字列の最初の文字は'a'
であり、これは(char) 97
であるため、(char) 97 < (char) 57
はfalseです。
_String str = "asdf";
String output = " ";
if(str.charAt(0) == '-'){
// What does it mean when it's equal to '-'?
output= "- exists in the first index of the String";
}
else {
output="- doesn't exists in the first index of the String";
}
System.out.println(output);
_
その文字がインデックス0に存在するかどうかをチェックします。これは比較です。
if (c < '9')
については、cと9のASCII値が比較されます。ただし、cのASCII相当が「9」のASCII相当よりも小さいかどうかを確認する理由がわかりません。
任意の文字のASCII値を取得する場合は、次のことができます。
_char character = 'c';
int ascii = character;
System.out.println(ascii);
_
文字はJavaのプリミティブ型であるため、複雑なオブジェクトではありません。結果として、chars
を比較するたびに、それらの値を直接比較しています。
Java文字は、各文字に16ビット値を与える元のUnicode仕様に従って定義されます。これらは、_c>'3'
_またはstr.charAt(0) == '-'
のようなものを比較するときにJavaが比較している値です。
str.charAt(0) == '-';
はブール値(この場合はfalse
)を返します。
if (c < '9')
は、「3」のASCII値を「9」のASCII値と比較し、ブール値を再度返します。
str.charAt(0) == '-'
このステートメントは、ポイント0の文字が「-」の場合はtrueを返し、それ以外の場合はfalseを返します。
if (c < '9')
これは、cのASCII値を、この場合はそれぞれ99と57の '9'のASCII値と比較します。