SORU
12 Kasım 2013, Salı


Neden Bayt.() karşılaştırın ve Tamsayı.() karşılaştırın uygulanan farklı?

Bu OpenJDK kaynağı okuyorum.

Dikkatimi yöntemleri Byte.compare() Integer.compare() çekti:

public static int Byte.compare(byte x, byte y) {
    return x-y;
}

public static int Integer.compare(int x, int y) {
    return (x < y) ? -1 : ((x == y) ? 0 : 1);
}

Neden yöntemleri Byte.compare() Integer.compare() farklı uygulamaları var mı?

CEVAP
12 Kasım 2013, Salı


Uygulama Integer.compare kullanmaz çıkarma, bu neden olabilir taşma ihtimaline karşı kıyaslıyorsun bir tamsayı olmasıdır kapatmak için Integer.MIN_VALUE ile bir olmasıdır kapatmak için Integer.MAX_VALUE.

Bu taşma olamaz Byte.compare, byte değerleri olarak oradan durumda olmasına implicitely x-y hesaplanır önce bir tamsayıya dönüştürülür.

(Java Language Specification - 5.6.2 Binary Numeric Promotion)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Gee Cee

    Gee Cee

    1 AĞUSTOS 2009
  • GoldgenieOfficial

    GoldgenieOff

    23 Temmuz 2009
  • MatheusDosGames

    MatheusDosGa

    28 Aralık 2011