下面是一个来自大型Java程序的一行,该程序编译时没有错误。我无法明白是怎么< =运营商正在对赋值语句的右侧使用:Java语句的右侧小于等于
converged = measure.distance(centroid.getLengthSquared(), centroid, getCenter()) <= convergenceDelta;
这是一些不起眼的Java功能?
下面是一个来自大型Java程序的一行,该程序编译时没有错误。我无法明白是怎么< =运营商正在对赋值语句的右侧使用:Java语句的右侧小于等于
converged = measure.distance(centroid.getLengthSquared(), centroid, getCenter()) <= convergenceDelta;
这是一些不起眼的Java功能?
不,不是。你会看到converged
将是boolean
类型。
这将是完全一样的话说
boolean foo = 2 <= 3;
所以,很可能在你的代码measure.distance(centroid.getLengthSquared(), centroid, getCenter())
返回一个数字,然后使用关系<=
操作 与convergenceDelta;
比较。结果将是true
或false
,这是一个布尔值,将 保存在converged
。
+1你钉了它。 – 2011-06-13 03:44:44
根本不是。 <=
和其他关系运算符返回布尔值。如果converged
是一个布尔变量,则可以将该值分配给它。
它被设置为收敛到距离小于或等于变量convergenceDelta上的值的真值表。
< =是一个像任何其他二元运算符。如果LHS < = RHS,则其值为真;如果不是,则为false。
所以在这种情况下,如果距离小于收敛增量,则认为它已经收敛。
这个问题已经回答了,但是因为你问了,收敛是一个布尔值,measure.distance返回float,而convergenceDelta的类型是float。 – Dhruv 2011-06-13 04:02:19