This article mainly introduces relevant information about the comparison between String.equals and == in java. Friends who need it can refer to it
Comparison between String.equals and == in java
I have been learning Java for a while, but last night I was suddenly upset by "asd"==getpara("password"): it is true that many things in JAVA are completely different from the languages I have been exposed to before. , such as the simplest new String("asd") !=new String ("asd").
1 The simplest program:
public class A { public static void main(String args[]) { String s1 = "Hello"; String s2 = "Hello"; System.out.println(s1 == s2); } }
Definitely many people say, output true, it does output true, s1 and s2 refer to the same thing. But if this program were written in a different way, it would definitely be different.
2 First variation:
##
public class A { public static void main(String args[]) { String s1 = "Hello"; String s2 = new String("Hello"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } }Or:
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); } }Then the result is a bit uncertain. Some people have bad ideas. If they are taken separately, at least one of them will definitely not be equal. The results of these two programs are false true. The reason is very simple. JAVA is a basically completely object-oriented language. s1 == s2 determines its reference (equivalent to memory address and pointer). equals uses the object's own method to determine whether the values are equal. In the following expression:
String s1 = "Hello"; String s2 = new String("Hello");The JVM gets two different messages:
2. I want to create a new "Hello" string, not the same as the original one.
3 The second variation:
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s2 = new String("Hello"); String s3 = "Hello"; s1=s1.intern(); s2=s2.intern(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s2); System.out.println(s3.equals(s2)); } }Shuffle the order:
public class A { public static void main(String args[]) { String s1 = new String("Hello"); String s3 = "Hello"; s1=s1.intern(); String s2 = new String("Hello"); s2=s2.intern(); //也可以String s2 = new String("Hello").intern(); System.out.println(s1 == s2); System.out.println(s1.equals(s2)); System.out.println(s3 == s2); System.out.println(s3.equals(s2)); } }Then this time it should be It’s very clear =
4 Intern function:
The above is the detailed content of Comparative sharing about String.equals and == in Java. For more information, please follow other related articles on the PHP Chinese website!