Day10-32.Common pitfalls when using operators

来源:互联网 发布:淘宝宝贝图片怎么拍照 编辑:程序博客网 时间:2024/06/08 04:03

使用操作符时常犯的错误


使用操作符时一个常犯的错误就是,即使对表达式如何计算有点不确定,也不愿意使用括号。

这个问题在Java中仍然存在。

在C和C++中,一个特别常见的错误如下:

while(x= y){

//….

}

程序员很明显是想测试是否“相等”(==),而不是进行赋值操作。

在C和C++中,如果y是一个非零值,name这种赋值的结果肯定是true,而这样便会得到一个无穷循环。

在Java中,这个表达式的结果并不是布尔值,而编译器期望的是一个布尔值。

由于Java不会自动将int数值转换成布尔值,所以在编译时会抛出一个编译时错误,

从而组织我们进一步去运行程序。

所以这种错误在Java中永远不会出现(唯一一个不会得到编译时错误的情况是x和y都为布尔值)。

在这种情况下,x=y属于合法表达式。而在前面的例子中,则可能是一个错误。

Java中有一个与C和C++中类似的问题,即使用按位“与”和按位“或”代替逻辑“与”和逻辑“或”。

按位“与”和按位“或”使用单字符(&或|),而逻辑“与”和逻辑“或”使用双字符(&&或||)。

就像“=”和“==”一样,键入一个字符当然要比键入两个简单。

Java编译器可防止这个错误放生,因为它不允许我们随便把一种类型当做另一种类型来用。


原创粉丝点击