空赋值行为java

时间:2013-07-03 11:56:25

标签: java eclipse

我的日期格式根据特定条件而变化,为了具有全局访问权限,我将其初始化,然后根据条件分配值。

但是看看De-bugger这些值没有被重新分配,它们按照初始化保持为空。

我是java的新手是什么导致了这个?

这是代码:

SimpleDateFormat df     = null;
        SimpleDateFormat df2    = null;
        SimpleDateFormat date_c = null;
        SimpleDateFormat t      = null;
        SimpleDateFormat t2     = null;
        SimpleDateFormat df5    = null;
        SimpleDateFormat df3    = null;

        if ( make == "NCR")
        {
        df     = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        df2    = new SimpleDateFormat("yyyyMMddHHmmss");
        date_c = new SimpleDateFormat("yyyyMMdd");
        t      = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
        t2     = new SimpleDateFormat("yyyyMMddHHmmss");
        df5    = new SimpleDateFormat("yyyyMMddHHmmss");
        df3    = new SimpleDateFormat("yyyyMMddHHmmss");
        }

        else if ( make == "WINCORE")
        {
            df     = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
            df2    = new SimpleDateFormat("yyyyMMddHHmmssS");
            date_c = new SimpleDateFormat("yyyyMMdd");
            t      = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
            t2     = new SimpleDateFormat("yyyyMMddHHmmssS");
            df5    = new SimpleDateFormat("yyyyMMddHHmmssS");
            df3    = new SimpleDateFormat("yyyyMMddHHmmssS");
        }

2 个答案:

答案 0 :(得分:3)

因为两个条件都不满足。您使用==进行字符串比较,这很可能是一个错误。 ==比较对象 identity ,字符串是对象。对于基于价值的比较,您应该使用equals。将文字放在左边会给你一个null - 安全比较(这是一个常见的Java习语):"NCR".equals(make)。但如果make.equals("NCR")不是make,或者您希望null NullPointerException null,也可以使用make

比较以下内容:

assert "NCR" == "NCR" : "String literals are interned, so they have the same identity";
assert "NCR" != new String("NCR") : "String with the same value but not the same identity"; 
assert "NCR".equals(new String("NCR")) : "But they are equal";

答案 1 :(得分:2)

比较java中的字符串时,不使用==,使用equals()

if ("NCR".equals(make))
 ...
else if ("WINCORE".equals(make))

另外,如果makenull,请先将字符串文字放在第一位,这样就不会得到NullPointerException