==
является ссылочным равным, как, например, «является ли этот точный объект тем же объектом, что и другой объект?».
Когда вы сделали s
, вы создали новый объект, поэтому он выигралэто не тот же объект, что и строка, с которой вы сравниваете его (в зависимости от используемой вами JVM "foo" == "foo"
будет иметь значение true, поскольку он будет использовать тот же объект внутри).
Когда вы вызываете .equals()
it (String s
) запустил собственную логику, чтобы определить, что это тот же объект.В случае String он будет сравнивать его символ за символом.
instanceof
- это нечто совершенно другое и сообщит вам, является ли объект экземпляром объекта определенного типа, например, "foo" instanceof String
isправда.