在空指针异常的情况下,Java 与 Objective C

标签 java android objective-c string null

如果我尝试访问空值,为什么 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

        }
     }

}

Objective-C :

//in .h file
NSString *exp;

//in .m file
if ([exp isEqualToString:NULL] ||[exp isEqualToString:@""])
{
    // i am not getting any error
}

最佳答案

问题出在你用java求值,应该是:

if(status == null||status.equals("")) {
    //Do not try to dereference status....

应该注意的是,这只适用于 Java 和其他语言,允许在逻辑评估中使用捷径。在这种情况下,一些简单的 boolean 代数:

true || ??? => true

一旦第一项的计算结果为真,我们就知道 OR 条件也将计算为真,因此无需检查第二项。

此外,您可以使用 Apache Commons isEmpty() 或自己滚动:

public static final boolean isEmpty(String arg0) {
    if(arg0 == null) return true;
    if(arg0.trim().length() < 1) return true;
    return false;
}

显示的版本类似于 Apache Commons 中的 isBlank

关于在空指针异常的情况下,Java 与 Objective C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18127482/

相关文章:

android - 如何在 imageview android 中显示大尺寸位图?

java - Jackson 无法反序列化日期

java - 在 gui java 中显示 TreeMap

android - 如何使用 ActionBarSherlock 制作这样的弹出菜单

android - Android App 的 WebView 中的 Vimeo Player 问题

iphone - 从 iPhone 应用程序发推文

iphone - 如何检测 iPhone/iPod Touch/iPad 上活跃的 iTunes 商店?

ios - UITableViewController 加载方法的逻辑顺序是什么?

java - NullPointerException:键== null ||值==空

使用 Lambda 的 Java 8 过滤器数组