论坛首页 入门技术论坛

[已解决]a != null同null !=a 的细节区别

浏览 10167 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-03-11  
hklongshao 写道
不能言说的伤 写道
这个的主要区别是,举个例子,例如,a是用来接收页面的参数的,。如果传过来的参数为null,那么如果是a=!null这种方式的话,,会报一个空指针异常,,儿null!=a则不会、


这都行。。。我觉得主要是怕写成a=null,变成赋值了,如果写成null=a,则会报错


同意。
记得是C++中
在判断 如:if ( a == 1 ) 时 一般写 if (1 == a )
就是为了避免写成 if (a = 1) 这样恒为真了。
而如果用if (1 == a) 写成 if (1 = a) 则会报错。
因为这里的习惯,很多人在写if ( a != 1)时也会写
if (1 != a)... 同样可以避免相同的问题。

前面那个就乱扯,怎么可能会报错,我从来都用的 if (a != null && !a.equals("")) {...}
怎么就没错过,
0 请登录后投票
   发表时间:2011-03-11  
我的理解是这样

比较字符串的话就常量在前无需判断变量是否为空啦.可以少敲几下键盘.

if("something".equalsIgnoreCase(str)){

}
if(str!=null&&str.equalsIgnoreCase("something")){

}
0 请登录后投票
   发表时间:2011-03-15  
不能言说的伤 写道
这个的主要区别是,举个例子,例如,a是用来接收页面的参数的,。如果传过来的参数为null,那么如果是a=!null这种方式的话,,会报一个空指针异常,,儿null!=a则不会、

a!=null报空指针异常?它报的哪门子空指针啊?
0 请登录后投票
   发表时间:2011-03-15  
云和山的彼端 写道
我的理解是这样

比较字符串的话就常量在前无需判断变量是否为空啦.可以少敲几下键盘.

if("something".equalsIgnoreCase(str)){

}
if(str!=null&&str.equalsIgnoreCase("something")){

}

请问这位仁兄 玩真三?
0 请登录后投票
   发表时间:2011-03-15  
hklongshao 写道
不能言说的伤 写道
这个的主要区别是,举个例子,例如,a是用来接收页面的参数的,。如果传过来的参数为null,那么如果是a=!null这种方式的话,,会报一个空指针异常,,儿null!=a则不会、



这个说法我知道的。而且也理解的。我是想知道从效率方面是不是有什么优化。

多么强大的理论  LZ竟然理解了  表示鸭梨很大
0 请登录后投票
   发表时间:2011-03-16  
我艹  这个帖子里面的神仙真多 
0 请登录后投票
   发表时间:2011-03-20  
不能言说的伤 写道
这个的主要区别是,举个例子,例如,a是用来接收页面的参数的,。如果传过来的参数为null,那么如果是a=!null这种方式的话,,会报一个空指针异常,,儿null!=a则不会、

、
  //第一种情况
  if("a".equals(a))  //无论a 是否null都不会抛空指针异常
  if(a.equals("a"))  //a如果为null则抛出空指针异常

  //第二种情况
  if(null!=a)
  if(a!=null)   
  //两者都不会抛出空指针异常

  ps:写cpp的很多人喜欢写null!=a 我曾经写C++的,所以这习惯保留下来了,java里面更多应该是个人习惯。不过第一种和习惯无关,而是真的要规避空指针异常,第二种则纯粹是个人习惯
0 请登录后投票
   发表时间:2011-09-25  
我猜  不能言说的伤  是不是记错了,如果把!=换成equals,你那个就说得过去了
0 请登录后投票
   发表时间:2011-09-26  
为什么要写成null != a, 有什么意义??一般是测试变量的值。。。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics