こんにちは、私はこの出くわしたとき、私は(java.lang.Character
)Javaのソースコードの一部を拾い読みしてすべて:char_x <(char_y + 1)== char_x <= char_y?
public static boolean isHighSurrogate(char ch) {
return ch >= MIN_HIGH_SURROGATE && ch < (MAX_HIGH_SURROGATE + 1);
}
public static boolean isLowSurrogate(char ch) {
return ch >= MIN_LOW_SURROGATE && ch < (MAX_LOW_SURROGATE + 1);
}
私は作家が上限に1を追加しなかった理由不思議とあまりよりも比較をしていました、単により小さいか等しい比較を行う代わりに?
読みやすくするために役立つかどうかは分かりますが、この場合はそうではないようです。
私は上記のコードと、この違いだと思いまして:
public static boolean isHighSurrogate(char ch) {
return ch >= MIN_HIGH_SURROGATE && ch <= MAX_HIGH_SURROGATE;
}
public static boolean isLowSurrogate(char ch) {
return ch >= MIN_LOW_SURROGATE && ch <= MAX_LOW_SURROGATE;
}
これは推測であり、答えではありません。おそらく、ループのための慣用的な書き方と一貫していると思います。 'for(i = LOWER_BOUND;私は
多分、chはMAX_ [HIGH | LOW] _SURROGATEと等しくなるかもしれないことを強調することを意図していました。 "<="は "<"として誤読されやすくなり、おそらくコンパイラはそれを同じバイトコードに最適化します。 –
まあ、ある意味では、 'MAX_HIGH_SURROGATE'はcharであり、' 1'はintです。charからそこに行くintへの何らかの変換が必要な場合があります。 – BoltClock