读书人

小弟我吐 - 对提问者的不负责任误导

发布时间: 2012-03-01 10:25:46 作者: rapoo

我吐 - 对提问者的不负责任,误导他人
http://topic.csdn.net/u/20110916/13/1cebe474-27b1-4c5e-ba6a-b35c06332802.html?seed=1695885886&r=75589288#r_75589288

原文:
String s = "abcde";
if(s==null) 和 if(null==s) 这两个有什么区别啊??

有什么优点和缺点,一般用哪个啊???


回答:
4楼:用 if(null == s)这种形式一般不会出现空指针错误~~~
第一个这样回答的,不怪他,他也许不知道回答错误,并不是他的本意。

7楼:引用 4 楼 magicliukun 的回复:
用 if(null == s)这种形式一般不会出现空指针错误~~~
+1
8楼:理论上一样,但是 null==s 不会出现空指针。
15楼:==经常会误打成=
NULL=s的话编译器直接会报错
S=NULL的话会程序运行时出现莫名错误很难找

20楼:引用 15 楼 baitoclus 的回复:
==经常会误打成=
NULL=s的话编译器直接会报错
S=NULL的话会程序运行时出现莫名错误很难找
这个必须得顶起
22楼:一样的,前面一种可能空指针
23楼:你这样写是没有区别的,但你如果是获取别的页面传值的话一般用后者,因为前者可能会报空指针。
25楼:理论上没区别。 只是为了避免空指针错误。
26,27楼:引用 25 楼 z6683227 的回复:
理论上没区别。 只是为了避免空指针错误。
yes
......后面的就不帖了,太多了。

这是一个提问区:我们应该认真对待楼主的问题,不要自己被误导了还要去误导别人。
如果是第一个人回答错误了,这也很正常,可是没想到居然后面还多的数不胜数,我吐。

1.会出现NullPointerException的,如果你这这样回答的,有本事你找一个实例出来给大家瞧瞧,别在这里瞎扯。
2.防止手误的。if(s=null),如果你认为是这样的,你就回去写写试试看看,在用Javac编译一下,看你这个手误编译器能不能给你检测出来。

上面的东西根本就没有任何区别。




[解决办法]
呵呵,很多jdk的源代码中也是使用obj == null
[解决办法]
楼主好人!!学习了
[解决办法]
==null null== 随你怎么放, 看你个人习惯, 如果是 equals() 那么建议你常来放左边, 可以防止 NullPointException
[解决办法]
楼主很有正义感,值得表扬

那个帖子我当时看到4楼的时候也小晕了一下
[解决办法]
有些人回答问题依据的想当然。
[解决办法]
空指针,我倒。

为了防止手误写成s=null赋值,所以写成null==s。
[解决办法]
很多人没学过java或者用Boolean说事。
[解决办法]
不用编辑器,你的IDE已经就可以把这个问题解决了~!~!~!
[解决办法]
mark 学习了 其实原帖我看过的 不过没想太多 认真的人总是会有回报的 赞LZ
[解决办法]
没有任何方法操作,这两种做法是没任何区别的
[解决办法]

探讨

引用:

很多人没学过java或者用Boolean说事。

跟Boolean有啥了

[解决办法]
楼主细心呀,嘿嘿
[code=Java][/code]String str = "" ;
if(str = null) {
System.out.println("test");
}
}

这样写的话eclipse会报错的。
[解决办法]
探讨

引用:

楼主你又在这忽悠人,是没有区别吗!你确定吗,是真的真的确定吗,如果要出现了空指针你是否能对的起那么多相信你人呢,他们才被你忽悠了,不解释!

如果你认为有区别,你就拿个实例来证明,别在这里瞎扯来忽悠人,好吧。
如果不能证明你就一边去凉快好吧。

[解决办法]
探讨

引用:
引用:

很多人没学过java或者用Boolean说事。

跟Boolean有啥了

貌似对于Boolean有这样的:
Boolean b = null
if(b = null)
b.booleanValue();
运行时就抛空指针异常了,如果习惯null写在前面:null = b……

[解决办法]
[size=24px]我还是要说:都一样。[/size]


大家的争议都在Boolean == null 和null == Boolean到底能不能预防手误写成Boolean = null 而可能导致的NPE,我想说的是:不可以

因为,你可能因为手误可能把Boolean == null 写成 Boolean = null,
那您是否也会因为手误把null == Boolean 写成 null = Boolean 呢,那么你可能会说null = Boolean会在编译时报错,OK,确实是这样,那么写成 null == Boolean的好处也就到此了,只能防止把 == 写成 =,但决不能防止NPE。

null == Boolean 只能检验是否把==误写成=,如果是错误把==写成=,那么请改过来,改过来就是null == Boolean,那么"null == Boolean"这句什么时候报NPE呢?
[b]
所以,null == Boolean不能预防空指针异常。



[解决办法]

探讨

从Java出生以来,boolean就只有两个值,只是因为Boolean是一个对象,所以无法限制。
但是作为程序员的我们,应该是尽量去遵守规范,而不是去打破规范,让自己的程序个性化。

对于你上面说的情况我不知道有没有,但是我知道有过工作经验的是绝对不会这样来做的。挑战极端,让自己的程序变得个性化,而失去了大众化的东西是不会长久的。只是不过拿来演示演示,炫耀一下罢了。

[解决办法]
再补充一句,继续说if (o == null)这句会出NPE的,统统下地狱去吧!
[解决办法]
探讨

再补充一句,继续说if (o == null)这句会出NPE的,统统下地狱去吧!

[解决办法]
哥哥 给分
[解决办法]
防止手误!!这个借口不错--
[解决办法]
探讨

首先想说明的是if(test)和if(test==true)是不一样的。
对于boolean类型来说,推荐前者:后者与前者相比多了步比较运算,效率较低(非0的比较在汇编级都是用减法来实现的),当工程大到有必要优化的时候像后者这样的代码风格是首先须要优化的。与其到了后期再一个个改,还不如写的时候就养成一个好的习惯。
对于Boolean类型来说,个人感觉倒是后者比较好,因为它避免了test值为n……

读书人网 >J2SE开发

热点推荐