web-dev-qa-db-ja.com

Java String / Char charAt()の比較

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?

任意の助けいただければ幸いです。

7
Kcits

//それが「-」に等しいとはどういう意味ですか?

すべての文字と記号は文字です。文字列の最初の文字を見て、一致するかどうかを確認できます。

この場合、最初の文字を取得して、それがマイナス文字かどうかを確認します。このマイナス記号は(char) 45です。下記をご覧ください

// char変数は<演算子とどのように比較されますか?

Javaでは、すべての文字は実際には16ビットの符号なし数値です。各文字には、ユニコードに基づいた数字があります。例えば'9'は文字です(char) 57この比較は、9のコードよりも小さい任意の文字に当てはまります。スペース。

enter image description here

文字列の最初の文字は'a'であり、これは(char) 97であるため、(char) 97 < (char) 57はfalseです。

13
Peter Lawrey
_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);
_
1

文字はJavaのプリミティブ型であるため、複雑なオブジェクトではありません。結果として、charsを比較するたびに、それらの値を直接比較しています。

Java文字は、各文字に16ビット値を与える元のUnicode仕様に従って定義されます。これらは、_c>'3'_またはstr.charAt(0) == '-'のようなものを比較するときにJavaが比較している値です。

0
Roc Aràjol

str.charAt(0) == '-';はブール値(この場合はfalse)を返します。

if (c < '9')は、「3」のASCII値を「9」のASCII値と比較し、ブール値を再度返します。

0
Tilak Maddy
str.charAt(0) == '-'

このステートメントは、ポイント0の文字が「-」の場合はtrueを返し、それ以外の場合はfalseを返します。

if (c < '9')

これは、cのASCII値を、この場合はそれぞれ99と57の '9'のASCII値と比較します。

0
Nyakiba