2013-01-02 54 views
-3

可能重复:
How do I compare strings in Java?
java == vs equals() confusionJava if语句未执行。

所以,我试图开发同时我进入打开一个JDialog的应用程序。它只需要精确到秒。

public void run() { 

    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); 
    timeset = "16:37"; 

    while(true){ 

    System.out.println("thread sleep"); 
    try{Thread.currentThread().sleep(1000);}catch(InterruptedException ie){} 

    Calendar cal = Calendar.getInstance(); 
    cal.getTime(); 
    temptime = sdf.format(cal.getTime());  
    System.out.println("realtime = " + realtime); 
    System.out.println("timeset = " + timeset); 

    if(realtime == timeset){ 

     System.out.println("if statement activated"); 
     Alert.man(); 
     break; 

    } 

所以,我的问题是,当我运行,如果当timeset和实时都是平等的,我只是无法弄清楚语句不运行该程序。这是怎么回事?

+0

注意指针VS值的比较是一个很基本的概念(大多数语言),如果你想成为一名程序员,你需要“搞定”。它不仅适用于字符串。 –

+0

我现在开始“得到”它。我刚刚开始编写代码,所以我一直在学习新的东西,而这只是其中之一。 –

回答

6

使用equals()方法来检查,如果两个日期都是平等的。 ==运算符只检查两个引用是否指向同一个实例。

if(realtime == timeset){ 

应该

if(realtime.equals(timeset)){ 
+1

比较应该考虑到,您可能无法在那一秒完全比较。睡眠时间为一秒钟,一个人可以有足够的变化从一个周期到下一个错过一秒钟。 –

+0

非常感谢,修复它。对于模糊的问题抱歉,我发现很难将我的想法转化为标题。 –

+0

@HotLicks真的,我完全与你的说法.. – PermGenError