Оператор Java if не выполняется.

Оператор Java if не выполняется.

<цитата>

Возможный дубликат:
Как сравнивать строки в Java?
путаница в java == vs equals ()

Итак, я пытаюсь разработать приложение, которое открывает 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;

    }
 

Итак, моя проблема в том, что когда я запускаю программу, оператор if не запускается, когда timeset и realtime равны, и я просто не могу это понять. В чем дело?

Показать лучший ответ

Обратите внимание, что сравнение указателей и значений - это очень базовая концепция (для большинства языков), которую вам нужно «получить», если вы хотите стать программистом. Это относится не только к струнам.

Я начинаю «понимать» это сейчас. Я только начал писать код, поэтому все время изучаю что-то новое, и это лишь одно из них.

Используйте метод equals (), чтобы проверить, равны ли две даты. Оператор == просто проверяет, указывают ли две ссылки на один и тот же экземпляр.

if(realtime == timeset){
 

должно быть

if(realtime.equals(timeset)){
 

При сравнении следует учитывать, что вы можете не сравнивать точно в эту секунду. Сон длится одну секунду, и у человека может быть достаточно изменений от одного цикла к другому, чтобы пропустить секунду.

Большое спасибо, что исправили. Извините за расплывчатый вопрос, мне было трудно сформулировать свои мысли в заголовке.

@HotLicks это правда, я полностью согласен с вашим утверждением ..