Currency.java ファイルには次の行があります。
private static final int A_TO_Z = ('Z' - 'A') + 1;
これはどういう意味ですか?私は前にこれを見ませんでした。A_TO_Z の値と、数値の代わりに「Z」を使用する理由。
Currency.java ファイルには次の行があります。
private static final int A_TO_Z = ('Z' - 'A') + 1;
これはどういう意味ですか?私は前にこれを見ませんでした。A_TO_Z の値と、数値の代わりに「Z」を使用する理由。
この式では、文字自体の代わりに文字の Unicode 値を使用して、char
s を s として扱います。int
'Z' - 'A' + 1
となります
90 - 65 + 1 (=26)
'Z'
の整数値を持つ char です90
。
'A'
の整数値を持つ char です65
。
90 - 65 + 1 = 26
文字には、文字テーブルの値に応じた数値があります。この式は、A から Z までのすべての文字が基礎となるエンコーディング テーブルに連続した値を持っているという事実を利用しているため、最後の値から最初の値を引く ( + 1) ことで、英語のアルファベットの長さが得られます。この場合、実際の数値は重要ではなく、コードは読者にとって多かれ少なかれ自明です。使用されているエンコーディングによって文字の広がり方が異なる場合、表現が正しくなくなります。