下面提供了该行的来源,我理解v.compareTo(w)的作用,但我很好奇是什么影响"< 0"如果compareTo返回1大于0,它是否不允许它返回?如果compareTo返回0,它是否会返回,因为它等于0?
private static boolean less(Comparable v, Comparable w)
{
return v.compareTo(w) < 0;
}
答案 0 :(得分:2)
该函数名为less
。在true
小于v
的情况下,它应该只返回w
。否则它将返回false
。
答案 1 :(得分:1)
compareTo()
方法返回一个整数值。 0,1或-1。使用值(a
和b
)作为示例:
a.compareTo(b);
a > b
,您得到1
a == b
,您得到0
a < b
,您得到-1
“&lt; 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
,所以它等同于:
答案 2 :(得分:0)
compareTo()函数返回一个整数值。但是,通过添加条件运算符<
,语句v.compareTo(w) < 0
将返回一个布尔值。它转换为“如果compareTo返回的值小于0”,又称“如果v小于w”。如果v小于w,那么该语句将评估为true,并且您拥有的方法将返回true。否则,该语句将评估为false,并且该方法将返回false。我建议打印出你的方法返回的值,因为很明显你的方法返回一个布尔值。
答案 3 :(得分:0)
您需要<
将int
的{{1}}结果转换为v.compareTo(w)
。其他关系运算符也会将两个boolean
转换为int
,但boolean
是适合名为“less”的方法。
您的代码不是类型安全的,因为没有任何约束<
和v
可以相互比较,因为它们是原始类型的。
例如,您可以使用以下方法调用此方法:
w
会产生less(0, "")
。
相反,你应该把它写成:
ClassCastException