/* 这是今天的练习代码,理解透彻,甚是满足,分享一下...见笑了 String类比较方法的练习: 字符串特点: 一旦被赋值就不可改变(指的是字符串的内容,常量池的常量)。 引用可 以改变。 */ public class StringDemo2 { public static void main(String[] args) { String s1 = new String("hello"); String s2 = new String("hello"); System.out.println(s1 == s2); // false 比较的是s1和s2的地址值 System.out.println(s1.equals(s2)); // true 比较的是s1和s2的成员值 String s3 = new String("hello"); String s4 = "hello"; System.out.println(s3 == s4); // false 比较的是s3和s4的地址值 System.out.println(s3.equals(s4));// true 比较的是s3和s4的成员值 String s5 = "hello"; String s6 = "hello"; System.out.println(s5 == s6);// true 比较的是s5和s6的地址值 System.out.println(s5.equals(s6));// true 比较的是s5和s6的成员值 String s7 = "hello"; String s8 = "world"; System.out.println(s7 == s8);// false 比较的是s7和s8的地址值 System.out.println(s7.equals(s8));// false 比较的是s7和s8的成员值 String ss1 = "hello"; String ss2 = "world"; String ss3 = "helloworld"; System.out.println(ss3.equals(ss1 + ss2));// true // 如果是字符串变量相加,先开空间,再相加存储。 // 如果是字符串常量相加,先加,在常量池里面找,如果有就返回常量池里面的地址。否则,就创建新的存储空间。 System.out.println(ss3 == ss1 + ss2);// false 两个变量相加,开辟一个新空间,再找值。地址值改变。 System.out.println(ss3 == "hello" + "world"); // true 两常量想加,ss3指向常量池中已有的数值。地址值不变。 } } 图片:
|