OK, think I got it. I must think of memory references. If I have
String firststring = "Hello";
String secondstring = "Hello";
Becuase they are the same in composition,
Java conserves ressources by reusing the identical strings. Therefore in this case (firststring == secondstring) returns true
However, if we force Java to create new String objects
String firststring = new String("Hello");
String secondstring = new String("Hello");
(fisrtstring == secondstring) returns false because it is obvious that the two objects are in different locations in memory.