return v.compareTo(w)< 0; "<有什么影响? 0"服务?

时间:2016-03-15 15:56:16

标签: java

下面提供了该行的来源,我理解v.compareTo(w)的作用,但我很好奇是什么影响"< 0"如果compareTo返回1大于0,它是否不允许它返回?如果compareTo返回0,它是否会返回,因为它等于0?

private static boolean less(Comparable v, Comparable w)   
{  
    return v.compareTo(w) < 0; 
}  

4 个答案:

答案 0 :(得分:2)

该函数名为less。在true小于v的情况下,它应该只返回w。否则它将返回false

答案 1 :(得分:1)

compareTo()方法返回一个整数值。 0,1或-1。使用值(ab)作为示例:

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,所以它等同于:

如果(v 返回 TRUE ,否则返回 FALSE

答案 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