2011-06-13 63 views
0

下面是一个来自大型Java程序的一行,该程序编译时没有错误。我无法明白是怎么< =运营商正在对赋值语句的右侧使用:Java语句的右侧小于等于

converged = measure.distance(centroid.getLengthSquared(), centroid, getCenter()) <= convergenceDelta; 

这是一些不起眼的Java功能?

+0

这个问题已经回答了,但是因为你问了,收敛是一个布尔值,measure.distance返回float,而convergenceDelta的类型是float。 – Dhruv 2011-06-13 04:02:19

回答

6

不,不是。你会看到converged将是boolean类型。

这将是完全一样的话说

boolean foo = 2 <= 3; 

所以,很可能在你的代码measure.distance(centroid.getLengthSquared(), centroid, getCenter())返回一个数字,然后使用关系<=操作 与convergenceDelta;比较。结果将是truefalse,这是一个布尔值,将 保存在converged

+0

+1你钉了它。 – 2011-06-13 03:44:44

1

根本不是。 <=和其他关系运算符返回布尔值。如果converged是一个布尔变量,则可以将该值分配给它。

0

它被设置为收敛到距离小于或等于变量convergenceDelta上的值的真值表。

0

< =是一个像任何其他二元运算符。如果LHS < = RHS,则其值为真;如果不是,则为false。

所以在这种情况下,如果距离小于收敛增量,则认为它已经收敛。