下面是一個來自大型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