if(userName == null || userName.trim().length()==0){ }这样的判断语句会报空指针异常吗?

我说的是java语言。... 我说的是java语言。 展开
 我来答
网上冲浪玩家
2011-11-03 · TA获得超过574个赞
知道小有建树答主
回答量:535
采纳率:100%
帮助的人:342万
展开全部
if(userName == null || userName.trim().length()==0){ }这句话会报语法错误.
因为userName.trim()返回的是个string类型的,string类型的变量是没有.length()方法的,只有length属性.
if(userName == null || userName.trim().length==0){ };
关于if语句,如果是并列查询(就是&&),例如if(a && b),会先判断a是否为true,如果a为false,那么不会在继续判断b的值,if里面的内容就不会执行.如果是或查询(||),例如if(c || d),会先判断c是否为true,如果c为true,则不会继续判断d,if里面的内容就不会执行.
你这里为或(||)查询,所以会先判断userName==null是否为真,如果这里为真,那么直接会走if里面的内容,userName.trim().length==0就不会判断,如果userName==null为假,那就说明userName是有内存地址的,继续判断userName.trim().length==0时也不会报空指针错误.
所以这样的写法是不会报空指针错误的.
但是建议你不要这样写,对于string类型的变量是否为空的判断通常用C#自带的方法判断,这样就不会纠结空指针的问题:
if(string.IsNullOrEmpty(userName)){}这样写的效果要比你那样写好,效率高些.
更多追问追答
追问
针对你的string如果string=“”用你的if(string.IsNullOrEmpty(userName)){}方法能通过吗?没用过IsNullOrEmpty方法。
追答
不好意思,你说的是Java么? 我说的是C#的.Java里面是没有IsNullOrEmpty这个方法的.
判断为空的话if(userName== null || userName.isEmpty()) 这样是可以的.
对于if判断条件的执行顺序和C#是一样的,只不过是语法有些区别,只要userName==null在前面就可以避免空指针.
chy305
2011-11-03 · TA获得超过125个赞
知道答主
回答量:65
采纳率:0%
帮助的人:63.2万
展开全部
不会,因为userName == null时,条件就真了,不会继续判断userName.trim().length()==0

另外一楼的,怎么说字符没有length方法呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2011-11-03 · TA获得超过5622个赞
知道大有可为答主
回答量:1459
采纳率:0%
帮助的人:1378万
展开全部
@zhubin_wyn 不要乱讲。语法完全正确。这是 Java ,不是 C#,length() 在 java 的 String 中是一个方法。
@s529586 同上。另:Java 中没有 IsNullOrEmpty 方法。
@lisinan0727 同上。
@lz 以后问 java 问题请到 java相关 板块下去问,谢谢。

不会的。因为如果 userName == null 的话就不会再判断后面的了。只有 userName != null 的时候才会走后半段。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AiDirac
2011-11-03 · TA获得超过6784个赞
知道大有可为答主
回答量:8833
采纳率:33%
帮助的人:1亿
展开全部
两个条件你反着写或者用&&就有可能报null异常.
你这么写的话第一个条件成立的话是不会走第二个条件的.
也就是说username==null的话userName.trim().length()==0根本就不会执行.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhubin_wyn
2011-11-03 · TA获得超过175个赞
知道小有建树答主
回答量:216
采纳率:100%
帮助的人:259万
展开全部
编译不通过,你的userName是字符串吧。
userName.trim().length()==0这一句不对,字符串没有length方法,只有length属性,应该改成如下:
if(userName == null || userName.Trim().length==0){ }这样就不会报错(如果userName为String类型)
追问
想好了答,哥哥,你在java编译器上试试你的方法没()能行?
追答
呵呵,我是在vs2010上调试的。很多年没有碰Eclipse啦。不过,java中可以这样写嘛,我记得好像不可以的啊。如果可以,不会报错,因为你的userName是字符串(Trim()方法只有字符串才有),如果为null,也不会报空指针
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式