Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2023, 10:43   #1
AsyaKup
Новичок
Джуниор
 
Регистрация: 02.08.2023
Сообщений: 4
По умолчанию Объяснить, как работает сравнение

public class Student{
String name;
int age;

public Student(String name, int age){
this.name = name;
this.age = age;
}
}

class StudentTest{

public static void Sravnenie(Student st1, Student st2, Student st3){
if (st1.name == st2.name && st1.age == st2.age)
System.out.println("Студенты 1 и 2 равны");
else if (st2.name == st3.name && st2.age == st3.age)
System.out.println("Студенты 2 и 3 равны");
else if (st1.name == st3.name && st1.age == st3.age)
System.out.println("Студенты 1 и 3 равны");
else
System.out.println("Нет одинаковых студентов");
}
public static void main(String[] args) {
Student st1 = new Student("Dasha", 19);
Student st2 = new Student("Asya", 19);
Student st3 = new Student("Dasha", 19);

Sravnenie(st1, st2, st3);

Почему, если тут я создаю строки с помощью конструктора, выводит "Студенты 1 и 3 равны"?
AsyaKup вне форума Ответить с цитированием
Старый 02.08.2023, 11:48   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Dasha == Dasha && 19 == 19
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.08.2023, 12:29   #3
AsyaKup
Новичок
Джуниор
 
Регистрация: 02.08.2023
Сообщений: 4
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Dasha == Dasha && 19 == 19
Разве тут не сравниваются адреса?
AsyaKup вне форума Ответить с цитированием
Старый 02.08.2023, 13:03   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

st1 и st3 имеют ОДИНАКОВЫЕ инициирующие данные.
Цитата:
Dasha == Dasha && 19 == 19
Цитата:
Student st1 = new Student("Dasha", 19);
Student st3 = new Student("Dasha", 19);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 02.08.2023, 13:07   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
Сообщение от AsyaKup Посмотреть сообщение
Разве тут не сравниваются адреса?
Именно. Но в Java есть пул константных строк и т.к. вы инициализируете одной и той же констатной строкой "Dasha" и не используете new, то адреса совпадают.
p51x вне форума Ответить с цитированием
Старый 02.08.2023, 13:37   #6
AsyaKup
Новичок
Джуниор
 
Регистрация: 02.08.2023
Сообщений: 4
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Именно. Но в Java есть пул константных строк и т.к. вы инициализируете одной и той же констатной строкой "Dasha" и не используете new, то адреса совпадают.
Поняла, спасибо большое!
AsyaKup вне форума Ответить с цитированием
Старый 02.08.2023, 13:38   #7
AsyaKup
Новичок
Джуниор
 
Регистрация: 02.08.2023
Сообщений: 4
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
st1 и st3 имеют ОДИНАКОВЫЕ инициирующие данные.
Спасибо!
AsyaKup вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В условие if не работает сравнение переменных с типов время avpdnepr C++ Builder 3 10.12.2015 14:19
Не работает сравнение товаров в компоненте Zoo в joomla 2.5 zeva WordPress и другие CMS 0 14.03.2013 14:34
прошу объяснить почему не работает регуляр frommars PHP 2 07.05.2012 11:12
кто может объяснить,почему на моем компе программа работает на других нет?код в Delphi Symba Общие вопросы Delphi 1 24.03.2011 01:03
Паскаль.Бинарный поиск. Всё работает. Объяснить. Антон Лысенко Помощь студентам 1 25.02.2011 18:20