Вариант первый:
package com.javarush.task.task04.task0421;
/*
Настя или Настя?
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String name1 = bufferedReader.readLine();
String name2 = bufferedReader.readLine();
if (name1 == name2)
System.out.println("Имена идентичны");
}
}
Вариант второй:
package com.javarush.task.task04.task0421;
/*
Настя или Настя?
*/
import java.io.*;
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
String name1 = "test";//bufferedReader.readLine();
String name2 = "test";//bufferedReader.readLine();
if (name1 == name2)
System.out.println("Имена идентичны");
}
}
Прошу объяснить, что я делаю не так или чего не знаю. По какой причине в первом случае условие не выполняется при вводе двух строк test и программа возвращает exit code 0, а во втором случае условие выполняется и на экран выводится "Имена идентичны"?
можноиспользовать специальный метод equals(). А строки (String) - это объекты. Или в доп материалах к лекции: Сравнение объектов: практика Во втором случае, Java хранит объект строка "test" в кэше и возвращает один и тот же объект. А в первом, создаются два разных объекта с одинаковым значением.