topwei2012 发表于 2012-09-17 09:43

(java面试题)这两段代码有什么不妥?

1、if(username.equals("zs")){}

2、int a = 1;
   return a == 1?true:false;

zqone 发表于 2012-09-17 16:54

1、if("zs".equals(username)){}

2、int a = 1;
   return a == 1;

wlmouse 发表于 2012-09-19 09:38

StringUtils.equals(username, "zs");

WantCBB 发表于 2012-09-20 23:17

1、if("zs".equals(username)){}
这里写法是不是与
if(null == username){}的写法一样,都是为了"强调"呢?

dcxy0 发表于 2012-09-24 01:33

回复 4# WantCBB


    不一样。
equals比较的是两个内存地址里面的值,==比较的是地址。

WantCBB 发表于 2012-09-24 16:14

回复 5# dcxy0

我的意思是:
if("zs".equals(username)){} 与 if(username.equals("zs")){}
相对于
if(null == username){}与if(username == null){}
的写法一样,都是为了"强调"!!!!!



   

zavakid 发表于 2012-09-24 18:57

1. 有NPE的危险
2. 多此一举

dcxy0 发表于 2012-09-25 20:22

回复 6# WantCBB


    准确的说,应该算是:比较。把。个人拙见。。

WantCBB 发表于 2012-09-26 00:11

回复 8# dcxy0

我认为是"强调"而不是"比较"
我的意思是:
一般情况下我习习惯使用if(username == null){}这种形式,有时使用if(null == username){}这种形式.这是因为一些"专家"的建议说if(username == null){}这种形式不好,他们举的例子是如果中间少写了一个"="号,语名就变成了if(username = null){},而这时编译器不会报错.而使用if(null == username){}这种形式不会出现这种情况,当少写了一个"="时语名就变成了if(null = username){}这时编译器会报错.
我认为这种定法是以前的C程序员总结的经验.请见如下C语言代码:
if(0 == intVal){}与if(intVal == 0){}这两种写法.
当少写一个"="时,它们分别变成了.
if(0 = intVal){}与if(intVal = 0){}


   
页: [1]
查看完整版本: (java面试题)这两段代码有什么不妥?