這條線的來源在下面提供,我明白v.compareTo(w)做了什麼,但我很好奇「< 0」具有什麼影響,如果compareTo返回1,它是否不允許它返回比0?如果compareTo返回0,它會返回0,因爲它等於0會不會返回?return v.compareTo(w)<0; 「<0」服務有什麼影響?
private static boolean less(Comparable v, Comparable w)
{
return v.compareTo(w) < 0;
}
這條線的來源在下面提供,我明白v.compareTo(w)做了什麼,但我很好奇「< 0」具有什麼影響,如果compareTo返回1,它是否不允許它返回比0?如果compareTo返回0,它會返回0,因爲它等於0會不會返回?return v.compareTo(w)<0; 「<0」服務有什麼影響?
private static boolean less(Comparable v, Comparable w)
{
return v.compareTo(w) < 0;
}
的compareTo()
方法返回一個整數值。可以是0,1或-1。使用到的值(a
和b
)爲例:
a.compareTo(b);
a > b
,你1
a == b
,你0
a < b
,你-1
「< 0」服務有什麼影響?
從你給出的方法實現:
return v.compareTo(w) < 0;
|------------|
V
return 0 or 1 or -1
// return 0 if v == w
// return 1 if v > w
// return -1 if v < w
因爲對於v.compareTo(w)
的唯一場景是較小比0時v < w
,相當於話說:
回報TRUE如果( v < w),否則返回假
*「0,1或-1」*這不完全正確。返回的值不必是那個,它可以是_any_正數或負數。 – Tom
@Tom這是真的。但我試圖給出一個簡單的場景,在比較整數的情況下,'a> b,你得到1'。也許我應該說這是整數的情況。 – user3437460
該功能被命名爲less
。在v
小於w
的情況下,應只返回true
。否則它將返回false
。
compareTo()函數返回一個整數值。但是,通過添加條件運算符<
,語句v.compareTo(w) < 0
返回布爾值。它轉換爲「如果compareTo返回的值小於0」又名「如果v小於w」。如果v小於w,那麼該語句將評估爲true,並且您擁有的方法將返回true。否則,該語句將評估爲false,並且該方法將返回false。我建議打印出你的方法返回的值,因爲這樣你的方法就會返回一個布爾值。
您需要將<
轉換爲boolean
的int
結果。其他關係運算符也會將兩個int
s轉換爲boolean
,但<
對於名爲「less」的方法是合適的。
你的代碼是不是類型安全的,因爲沒有約束v
和w
是相互比較,因爲它們是原始類型。
舉例來說,你可以調用此方法:
less(0, "")
這將產生ClassCastException
。
相反,你應該寫爲:
private static <C extends Comparable<C>> boolean less(C v, C w) {
return v.compareTo(w) < 0;
}
*「我明白wha t v.compareTo(w)確實「* ...你確定嗎?你可能想重新檢查'compareTo'返回,然後你明白'<0'的作用。 – Tom