हाय सब मैं जावा स्रोत कोड के कुछ के माध्यम से ब्राउज़िंग गया था जब मैं इस में आए (java.lang.Character
):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;
}
यह एक अनुमान है, जवाब नहीं: शायद यह लूप के लिए लिखने के बेवकूफ तरीके से संगत होना है, उदाहरण के लिए 'के लिए (i = LOWER_BOUND; i
शायद यह जोर देने के लिए था कि ch ch MAX_ [HIGH | LOW] _SURROGATE के बराबर भी हो सकता है। "<=" को "<" के रूप में गलत तरीके से पढ़ना आसान है - और संकलक शायद इसे उसी बाइटकोड पर अनुकूलित करता है। –
ठीक है, एक चीज़ के लिए, 'MAX_HIGH_SURROGATE' एक char है और '1' एक int है ... वहां से चार से int तक कुछ प्रकार का रूपांतरण हो सकता है जो आवश्यक हो सकता है। – BoltClock