Java中A==3和3==A有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/05/28 15:36:54
如题。这是我前些日子去一家公司笔试Java时卷子上第一题……

感觉太怪异了……请高人解答一下
好歹我也是培训过J2EE的,==是判断我还不知道吗……别解释这个,我不解的就是A、3写的前后顺序不同会有什么区别。

PS:我觉得“II个人的寂寞”说的很有道理

实际上没有什么区别,只是习惯而已,
由于Java中判断语句是 两个=号,但有些程序员 由于手误会写成一个
这样的话,就成了A=3 ,此时这句就成了赋值语句,也能够编译过去。
所以为了减少这种错误,就把不是变量的 写在前面 3==A,
即便是少写了个=号,一编译就出错了。呵呵

有区别,这个看上去是一样的,在大多数情况下效果也一样,但两者是有细微区别的!在A==3中,如果A的值是由另一个表达式产生的,或者来自一条sql的执行结果,或另一个方法的返回值等,如果A的值为空,A==3就会出现逻辑错误,程序编译并不报错,这种情况如果没有在刚开始发现,在程序运行中遇到一些特别情况使A的值为空,程序会报错,这会让人很头疼的,因为你很难查出这个错误!
但相反,写成3==A就不会出现这种情况了,举例说明一下:如果有以下这个判断:
if(A==3){}else{}那么当A的值为空时,程序会报错,而不是执行else语句,这显然跟我们预想的不一致!但if(3==A){}else{}如果A的值为空,程序会执行else语句!所在如果做为变量的A有可能取空值时,要写成3==A才能避免程序遇到特殊情况时正常运行!
这就是区别!

一楼正解

一楼正解

==比较的是内存地址. 与3比较,类型只能时 int.
所以不存在 A = null 这种情况且A只能int类型.
如果编译能通过的话.a==3 与 3==a都一样. 楼上网友 水冰寒河
说的情况 应该是 a.equals("3") 与 "3".equals(a)时.
并不适合 == 比较.

oatn正解