一、==
1.基本类型== ,表示字面值是否相等
2.引用类型==,也表示值是否相等,但是表示的是 “对象的地址”,也就是左右两侧是否是一个对象。
二、Java.lang.Object类的toString()方法
1.当打印引用时,实际上会打印引用所指对象的toString方法。
2.推荐所有的class都override toString方法。
3.系统默认返回的 类的全称 + "@" + 地址的16进制表示形式。
4.Object类的equals方法,判断的是调用equals方法的引用与传进来的引用是否一致,即这两个引用是否指向同一个对象。对于Object类的equals方法来说,它等价于==.
public boolean equals(Object obj) {
return (this == obj);
}
5.对于String类的equals方法来说,它判断当前字符串与传进来的字符串内容是否一致。
6.只要有new就会产生新的对象。
三、字符串
1.String类 是final的,是不能被继承的。
2.字符串是常量,它们的值一旦创建无法改变。当使用+拼接时,会生成新的String对象,而不是向原有的String对象追加内容。
3. String s4 = "aaa";
查找String Pool中是否存在"aaa"这个对象,
如果不存在:在String Pool中创建一个"aaa"对象,然后将String Pool中的这个"aaa"对象的地址返回赋给引用变量。
如果存在,则不创建任何对象,直接将String Pool中的"aaa"对象地址返回给引用。
String str3 = "bbb";
String str4 = "bbb";
System.out.println(str3 == str4);// 返回true
String str5 = new String("ccc");
String str6 = "ccc";
System.out.println(str5 == str6);// 返回false
4.String是常量,
String 是一个常量,创建完之后就不能改了。
StringBuffer是一个变量,可以继续在同一个对象上进行追加修改。
四、只要有new就会产生新的对象,== 表示左右两侧是否是一个对象
String str = new String("aaa");
String str2 = new String("aaa");
System.out.println(str == str2);
五、字符串 与 变量相加,产生新的字符串
1.题目一 hello != "Hel" + lo
String hello = "Hello";
String lo = "lo";
System.out.println((hello == ("Hel" + "lo")) + "");//显示true
System.out.println((hello == ("Hel" + lo)) + "");//显示false,特别注意
2.题目二 s12 != (s1 + s2)
String s12 = "hello";
String s1 = "hel";
String s2 = "lo";
System.out.println(s == (s1 + s2));// 返回false
六、String intern()返回与字符串对象相同的String Pool中的地址。