java的equals提示空指针异常
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java的equals提示空指针异常相关的知识,希望对你有一定的参考价值。
想用equals判断字符串是否为空,用了if(str.equals(""))
但是当str确实为空时,报错为空指针异常。
换成if(str==null)之后问题消失。
在使用equals方法时要注意什么问题呢?不能用来测试空字符串吗?
String类型使用equals方法时,一定要记得,被equals的字符串一定要是常量,或者一定不为空,否则就会报空指针异常
比如str.equals("") 当str为空时,这里则会抛空指针异常 反过来 "".equals(str) 空字符串在前面相当于常量了, 所以str无论为什么值都不会空指针追问
请问 str==null 和 str=="" 是不是意思不一样啊,我今天先赋值再变成"",用str==null就判断不出来了。换成了"".equals()之后问题解决。
追答当然不是一个意思了, 空和空字符串是不一样的
空字符串长度为0,占内存,在内存中分配一个空间
null是空引用,表示一个对象的值,没有分配内存
再比如 "".length() 返回值则为0表示长度为为零.但实际上已经分配内存空间了
而 str.length() 当str == null 时就会抛出空指针异常
还有 null 是不等于 "",这一点要区分好
java hashmap空指针异常
Map<Adgroup, Creative> ads = new HashMap<Adgroup, Creative>();
ads = AppointSomeApi.pullBaiduAd(adRequestParam, adResponse);
try
if(!ads.isEmpty())
。。。。。
上面具体的方法和变量都不用管,因为它是在最后if语句的地方报错了。。。这是什么啊?
-------------------------------------------------------------------------
[16:08:10,131] ERROR
java.lang.NullPointerException
at com.renren.ad.optimus.core.handler.BdRequestSelectHandler.handle(BdRequestSelectHandler.java:77)
at com.renren.ad.optimus.core.handler.AdSelectFilterHandler.handle(AdSelectFilterHandler.java:46)
at com.renren.ad.optimus.core.handler.AdSelectPipeline.fire(AdSelectPipeline.java:73)
at com.renren.ad.optimus.core.service.AdMobFeedadCoreServiceI.getFeedAds(AdMobFeedadCoreServiceI.java:92)
at com.renren.ad.optimus.core.ice.service._AdMobFeedadMatchManagerDisp.___getFeedAds(_AdMobFeedadMatchManagerDisp.java:94)
at com.renren.ad.optimus.core.ice.service._AdMobFeedadMatchManagerDisp.__dispatch(_AdMobFeedadMatchManagerDisp.java:137)
at IceInternal.Incoming.invoke(Incoming.java:159)
at Ice.ConnectionI.invokeAll(ConnectionI.java:2037)
at Ice.ConnectionI.message(ConnectionI.java:972)
at IceInternal.ThreadPool.run(ThreadPool.java:577)
at IceInternal.ThreadPool.access$100(ThreadPool.java:12)
at IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:971)
以上是关于java的equals提示空指针异常的主要内容,如果未能解决你的问题,请参考以下文章