比较可能为null的字符串的更好方法

Mau*_*ycy 13 java string

我只是想知道是否有更好的方法来做到这一点.我觉得它可能效率低下.问题是出于DB的原因我需要比较有时可能为null的字符串.

public static boolean compareStrings(String str1, String str2){

    if(str1 == null && str2 == null) return true;

    if(str1 != null && str2 != null){
        if(str1.equals(str2))
            return true;
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

Tay*_*mon 47

通常的习惯是这样的:

return (str1 == null ? str2 == null : str1.equals(str2));
Run Code Online (Sandbox Code Playgroud)

  • 我想补充说我正在为android和TextUtils.equals(a,b)做这个; 就是这样 (22认同)

Jon*_*eet 30

你说这些可能来自数据库.那时,与数据库查询的成本相比,围绕一些无效测试的任何低效率都是无关紧要的.我会专注于可读性.

为此,我将开始使用Guava及其Objects类:

boolean equal = Objects.equal(a, b);
Run Code Online (Sandbox Code Playgroud)

我希望按照Taymon的代码来实现 - 基本上 - 但是把它放在一个地方很好.

编辑:对于Java 7+,您不需要Guava.你可以使用java.util.Objects.equal(a, b).

  • 对于最近遇到这种情况的人来说,现在Java 7中也是如此:[Objects.equals](http://docs.oracle.com/javase/7/docs/api/java/util/Objects.html#equals %28java.lang.Object,%20java.lang.Object%29) (12认同)