Java&&运营商

时间:2015-02-09 07:44:26

标签: java string if-statement operator-keyword

我试图制作简单的if语句,我需要查看我的两个String的值是否为空(不等于"")。 我用&&操作员,但遗憾的是,它只检查一个字符串是否正确,如果它不是空的,如果第二个字符串是空的,他就会通过。制作&&对我来说有点无用。

if ( StringUtils.isNullOrEmpty(name) && StringUtils.isNullOrEmpty(sname)
            ) {do something}

我需要他们两个都要正确检查。如果至少有一个字符串为空,则返回false。 如果两者都不为空则返回true。

6 个答案:

答案 0 :(得分:7)

目前,如果两个字符串都为空或空,则条件为真。

如果您希望为空或空,则需要:

if ( !StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)
        ) {do something}

答案 1 :(得分:1)

&&很聪明,如果第一个条件为假,则不会尝试第二个条件。 使用&可以达到你想要的效果。

答案 2 :(得分:0)

问题是你的支票错了。如果两者都为空,你希望它只能通过。

所以你应该去

if ( !StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)
        ) {do something}

或者如果你想在if语句中捕获它,如果其中一个是空的,你应该使用或:

if ( StringUtils.isNullOrEmpty(name)|| StringUtils.isNullOrEmpty(sname)
        ) {do something}

答案 3 :(得分:0)

如果name为空,

isNullOrEmpty将返回true,但是您希望它不为空,所以使用!来否定条件。

if ( !StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)
        ) {do something}

另一种选择是:

if(!(StringUtils.isNullOrEmpty(name)|| StringUtils.isNullOrEmpty(sname)             )){做某事}

但是,以上不是推荐的编码风格,因为很难抓到!隐藏在行之前,代码阅读器可能会混淆。

关于||和&&运营商优化检查:

||从左到右检查第一个真实条件,如果发现一个真实条件,则跳过任何进一步的检查。

&安培;&安培;从左到右检查第一个错误条件,如果发现一个错误条件,则跳过任何进一步的检查。

答案 4 :(得分:0)

起初它对我来说没有任何意义,但它没有用。只有这时我意识到我需要翻转返回语句。

if (!StringUtils.isNullOrEmpty(name) && !StringUtils.isNullOrEmpty(sname)) {
        System.out.println("ok");
        return true;}
else {
        System.out.println("empty names");
        return false;
    }

现在似乎工作正常。

答案 5 :(得分:0)

使用'&' 作为logical operator,您可以执行以下操作。在这里,我们没有使用StringUtils -

if(   ( null!=name && !name.isEmpty() ) &   
( null!=sname && !sname.isEmpty() )   ){do something}