Я новичок в Scala, но знаю Java. Таким образом, насколько я понимаю, разница в том, что ==
в Scala действует как .equals
в Java, что означает, что мы ищем значение; и eq
в Scala действует как ==
в Java, что означает, что мы ищем ссылочный адрес, а не значение.
Однако после выполнения кода ниже:
val greet_one_v1 = "Hello"
val greet_two_v1 = "Hello"
println(
(greet_one_v1 == greet_two_v1),
(greet_one_v1 eq greet_two_v1)
)
val greet_one_v2 = new String("Hello")
val greet_two_v2 = new String("Hello")
println(
(greet_one_v2 == greet_two_v2),
(greet_one_v2 eq greet_two_v2)
)
Я получаю следующий результат:
(true,true)
(true,false)
Моя теория состоит в том, что инициализация этих строк отличается. Следовательно, чем val greet_one_v1 = "Hello"
отличается от val greet_one_v2 = new String("Hello")
? Или, если моя теория неверна, почему у меня разные результаты?