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

  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006
  • TROPFEST

    TROPFEST

    27 Mart 2007
  • Visual Life

    Visual Life

    3 Temmuz 2006