Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 почему выражение не становится true  [new]
Romantiktj
Member

Откуда:
Сообщений: 440
День добрый уважаемые знатоки,

   String previous="0";
 if(subject.getNumber()==previous )


При печати на консоль обе дают 0 но условие не срабатывает даже если прописываю

subject.getNumber().toString()


toString - становится серым, так как он уже строковой

даже

subject.getNumber()=="0" не срабатывает, хотя в консоли subject.getNumber() дает результат 0

Сообщение было отредактировано: 20 фев 20, 06:58
20 фев 20, 06:51    [22083456]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
crutchmaster
Member

Откуда: оттуда.
Сообщений: 948
if(subject.getNumber().equals(previous) )

Через == ты сравниваешь ссылки.
20 фев 20, 07:35    [22083465]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
Romantiktj
Member

Откуда:
Сообщений: 440
crutchmaster,
Большое Огромное спасибо!!!! Вы мне нервы спасли!!!!
20 фев 20, 07:57    [22083475]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
iJava
Member [заблокирован]

Откуда:
Сообщений: 48
Romantiktj,можешь положить эти переменные в пул и будет давать true
добавь .intern()
21 фев 20, 19:41    [22084877]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10009
iJava
добавь .intern()
Не надо швыряться вредными советами.
21 фев 20, 19:47    [22084880]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
iJava
Member [заблокирован]

Откуда:
Сообщений: 48
Basil A. Sidorov
iJava
добавь .intern()
Не надо швыряться вредными советами.

Этот совет далеко не вредный, а даст понимание происходящего.
Вот набросал наглядный пример
public class Main {

    public static void main(String[] args) {
        Integer a=10;
        Integer b=10;
        Integer c=300;
        Integer d=300;
        isTrue(a,b);
        isTrue(c,d);
    }

    public  static <T> void isTrue(T i, T y) {
        System.out.println(i==y);
        System.out.println(i.equals(y));
    }
}
22 фев 20, 11:33    [22085047]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
andreykaT
Member

Откуда:
Сообщений: 2720
iJava,

это неявно и неочевидно, для пазлерсов сойдет. за юз такого в реальном продукте надо палкой бить. хочешь сравнивать объекты через равно - юзай скалу там == просто переопределен .equals-ом ))

Сообщение было отредактировано: 22 фев 20, 12:44
22 фев 20, 12:44    [22085067]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
iJava
Member [заблокирован]

Откуда:
Сообщений: 48
andreykaT,
андрейка ты вопрос автора читал?
он не понимает как устроена память ,что такое пул
я дал ему наглядный пример- который даст минимальное понимание ситуации

это очень интересная тема и вот так с бухты барахты ее пройти не получится

но к сожалению к реальному программованию она никого отнощения не имеет)
я даже больше скажу -весь энтерпрайз - это уже по сути не джава программрование - а работа машиниста-наборщика)))
23 фев 20, 22:59    [22085640]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
mayton
Member

Откуда: loopback
Сообщений: 45514
Вот всем еще в тему. Подумайте.

if (person instanceof Person) {
   ...
}


if (person.getClass() == Person.class) {
   ...
}
24 фев 20, 13:13    [22085793]     Ответить | Цитировать Сообщить модератору
 Re: почему выражение не становится true  [new]
Alexander A. Sak
Member

Откуда: Омск
Сообщений: 1085
iJava
andreykaT,
андрейка ты вопрос автора читал?
он не понимает как устроена память ,что такое пул
я дал ему наглядный пример- который даст минимальное понимание ситуации

это очень интересная тема и вот так с бухты барахты ее пройти не получится

но к сожалению к реальному программованию она никого отнощения не имеет)
я даже больше скажу -весь энтерпрайз - это уже по сути не джава программрование - а работа машиниста-наборщика)))


Сам-то с передачей объектов по ссылке/по значению разобрался?
24 фев 20, 15:42    [22085881]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить