为什么如果没有执行正确的条件

时间:2013-07-29 02:42:48

标签: java

我有一个代码,就像这样

public static Response updateDataFiles(String id, String checksum){
    SessionFactory sf = HibernateUtil.getSessionFactory();
    Session session = sf.openSession();
    Transaction trans = session.beginTransaction();

    Files files = (Files) session.get(Files.class, id);
    System.out.println("checksum "+checksum);
    System.out.println("checksum file "+files.getChecksumFile());
    String checksumFile = files.getChecksumFile();
    if(checksum == checksumFile){
        System.out.println("upload success");           
        files.setStatusUpload(EnumStatusUpload.statusUpload.UPLOADED_AND_SUCCESS.toString());                                   
    }else{
        System.out.println("upload success but checksum error");            
        files.setStatusUpload(EnumStatusUpload.statusUpload.UPLOADED_BUT_ERROR_CHECKSUM.toString());
    }
    session.update(files);
    trans.commit();
    session.flush();
    session.close();

    Response respon = new Response();
    respon.status = 200;
    return respon;
}

if(checksum == checksumFile)出现错误,校验和变量和checksumFile具有相同的值,但如果没有执行正确的条件,则执行else条件。 在我的日志中,我已经看到了校验和变量的值,以及像这样的checksumFile

checksum      9d73d945294d5488056bb5da54f62e8f
checksum file 9d73d945294d5488056bb5da54f62e8f

我不知道我的代码有什么问题。谁能帮我?抱歉我的英语不好

1 个答案:

答案 0 :(得分:6)

您想使用.equals()

比较两个字符串的值
checksum.equals(checksumFile)

使用==比较引用,并基本上询问这两个引用是否指向同一个对象,而不是它们。