我被困在一个Java代码中,我不明白为什么它不返回true

时间:2019-06-18 08:40:21

标签: java

下面的Java代码在if else语句中没有返回true ...

public class DecimalComparator {

    public static void main(String[] args) {
        System.out.println(areEqualByThreeDecimalPlaces(25.367876,25.367873));
    }

    public static boolean areEqualByThreeDecimalPlaces(double a, double b){

        DecimalFormat threePreshizen = new DecimalFormat("###.###");
        String aNew = threePreshizen.format(a);
        String bNew = threePreshizen.format(b);

        System.out.println(aNew);
        System.out.println(bNew);

        if (aNew == bNew){
            return true;
        }else {
            return false;
        }
    }
}

我希望它返回“ true”。

1 个答案:

答案 0 :(得分:0)

用以下内容替换if块:

return aNew.equals(bNew);

这将基于两个字符串的内容是否匹配,而不是它们的内存引用的值是否相等,返回一个布尔值。

如果您希望您的任何一个字符串都为null,请改用

return Objects.equals(aNew, bNew);