I am new to Scala but I know Java. Thus, as far as I understand, the difference is that ==
in Scala acts as .equals
in Java, which means we are looking for the value; and eq
in Scala acts as ==
in Java, which means we are looking for the reference address and not value.
However, after running the code below:
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)
)
I get the following output:
(true,true)
(true,false)
My theory is that the initialisation of these strings differs. Hence, how is val greet_one_v1 = "Hello"
different from val greet_one_v2 = new String("Hello")
? Or, if my theory is incorrect, why do I have different outputs?