String是不是Java的基本类型。它是由char数组组成。
我们来解析一下这个类。
共分为5种情况
1

//One在常量池,str1和str2都指向常量池的One
String str1 = "One";
String str2 = "One";
System.out.println(str1==str2);

结果为true,因为

3-咸鱼学Java-Java的引用类String解析_数组


2

String str3 = new String("One");
String str4 = new String("One");
System.out.println(str3==str4);

结果为false,因为

3-咸鱼学Java-Java的引用类String解析_System_02


3

String str5 = new String("One");
String str6 = "One";
System.out.println(str5==str6);

结果为false,因为

3-咸鱼学Java-Java的引用类String解析_System_03


4

//在编译的时候自动拼接放置到常量池
String str7 = new String("One");
String str8 ="O"+"ne";
System.out.println(str7==str8);

结果为false,原因和3相同
5

String str9 =new String("One");
String str10 = "O"+new String("ne");
System.out.println(str9==str10);

结果为false,因为

3-咸鱼学Java-Java的引用类String解析_常量池_04


6

char [] array = {'O','n','e'};
String str11 = new String(array);
String str12 = "One";

结果为false,因为

3-咸鱼学Java-Java的引用类String解析_数组_05

String的equals函数解析

3-咸鱼学Java-Java的引用类String解析_常量池_06