为什么这个字符串的值仍为null,尽管我已检查它是否为null?

时间:2016-08-31 07:08:51

标签: java android

这是我的代码:

String invite = LogInUtil.getInvite(this);
        System.out.println(invite.equals(null));
        if ( invite != null){

            System.out.println(invite);
            System.out.println("=============================================="+(invite != null));
            Invitation.setInvite(Long.valueOf(invite));
        }

这是LoginUtil中的方法:

public static String getInvite(Context mContext){
    // 获取搜索记录文件内容
    SharedPreferences sp = mContext.getSharedPreferences(PREFERENCE_NAME, 0);
    String history = sp.getString(PREFERENCE_NAME, "");
    String[] tmpHistory = history.split("==");
    if (tmpHistory.length==2){
        return tmpHistory[1];
    }
    return null;
}

这是logcat中的结果:

I/System.out: false
I/System.out: null
I/System.out: ==============================================true

我的代码有什么问题吗?也许是一个愚蠢的问题。我是一个更新鲜的人,我需要你的帮助。 TTThanks!

3 个答案:

答案 0 :(得分:3)

可能是你得到的情况" null"作为字符串值而不是null,尝试下面的代码,如果仍然不工作尝试清理您的项目

String invite = LogInUtil.getInvite(this);

            if ( invite != null && !"null".equals(invite)){

                System.out.println(invite);
                System.out.println("=============================================="+(invite != null));
                Invitation.setInvite(Long.valueOf(invite));
            }

答案 1 :(得分:0)

错误发生在此行invite.equals(null)。您正在检查null.equals(null)它导致NULLPointerException的原因。

请将其更正为System.out.println(invite == null);,这样就不会引发异常。

  

更正了示例代码

String invite = LogInUtil.getInvite(this);
        System.out.println(invite == null);
        if ( invite != null){

            System.out.println(invite);
            System.out.println("=============================================="+(invite != null));
            Invitation.setInvite(Long.valueOf(invite));
        }

答案 2 :(得分:0)

使用StringUtils.empty()方法检查null,如果是string则使用empty。

我认为你得到了" null"你邀请变量中的字符串。