为什么Java经常抛出空指针异常,如果我尝试访问空值而Objective C没有?
Java的:
public class SubscribeEmailActivity {
String status;
public static void main(String[] args){
if(Status.equals(null)||status.equals(""){
// i am getting error here
}
}
}
Run Code Online (Sandbox Code Playgroud)
目标C:
//in .h file
NSString *exp;
//in .m file
if ([exp isEqualToString:NULL] ||[exp isEqualToString:@""])
{
// i am not getting any error
}
Run Code Online (Sandbox Code Playgroud) 在java中检查非空值的最佳方法是什么.
String query ="abcd";
Run Code Online (Sandbox Code Playgroud)
query != null
VS !query.equals(null).
哪个更好?为什么?
if(status.equals(null))
{
status="Pass";
}
Run Code Online (Sandbox Code Playgroud)
从上面的代码中抛出NullPointerException
,请给出比较值的解决方案null
.
我有两个场景如下.
情况1:
if( folderProcessChecklistBean.getFolderProcessChecklistRecord()
.getChecklistCode() != null)
Run Code Online (Sandbox Code Playgroud)
案例2:
if(!folderProcessChecklistBean.getFolderProcessChecklistRecord()
.getChecklistCode().equals(null))
Run Code Online (Sandbox Code Playgroud)
谁能告诉我两种方法是否相同?
我在这段代码中遇到了一个奇怪的问题,当我使用第一个if条件执行代码时,它一切正常并且被视为已被删除.但是,当我评论if语句并使用另一个if条件(已经评论过的那个)时,它会给出NPE.getUserIP()和getPhoneNumber()都只是私有字符串的普通getter.并且两个值都是由普通的setter设置的.所以任何想法为什么会发生这种情况?谢谢.
public void sendBroadcast(final String broadcast) {
System.out.println("entered sendBroadcast");
String fullPeep=broadcast;
System.out.println("fullPeep: "+fullPeep);
String array[] = fullPeep.split("<!!>");
for(User tempUser: friends)
{
if(tempUser.getUserIP().equals(this.getUserIP()))
{
System.out.println("tempuser:" +tempUser.getPhoneNumber() + " user: "+array[1] );
//if(tempUser.getPhoneNumber().equals(array[1]))
//{
System.out.println("tempuser:" +tempUser.getPhoneNumber() + " user: "+array[1] );
System.out.println("if statemnt of broadcast method");
try {
DataOutputStream out2= new DataOutputStream(socket.getOutputStream());
out2=tempUser.getUserDataOutputStream();
out2.writeUTF(fullPeep+"\n");
out2.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
//}
}
}
Exception in thread "Thread-6" java.lang.NullPointerException
at User.sendBroadcast(User.java:180)
at Server$ServerThread.run(Server.java:394)
Run Code Online (Sandbox Code Playgroud)
编辑:我弄清楚导致异常的原因以及为什么tempUser.getPhoneNumber()在某些时候返回null.谢谢大家.
我尝试了以下代码:
if (!object.equals(null)) {
object.setItem(object1.getTime());
}
Run Code Online (Sandbox Code Playgroud)
这里,object和object1是两个类的对象.
问题是它进入语句的空值.
我已经看到了一些这方面的回答PHP
,SQL
和C++
,但无法通过java查找.有一些惯例或最佳实践吗?
我问的null
不是equals
vs==
if (myString != null && myString == null)
Run Code Online (Sandbox Code Playgroud)
要么
if (!myString.equals(null) && myString.equals(null))
Run Code Online (Sandbox Code Playgroud) java ×7
null ×3
if-statement ×2
string ×2
android ×1
c# ×1
convention ×1
equals ×1
exception ×1
null-check ×1
object ×1
objective-c ×1
operators ×1
record ×1