1、举例代码如下:public class StringDemo {
public static void main(String[
args) {
String s1 = \"Hello\";
String s2 = \"Hello\";
System.out.println(s1 == s2); // true
2、稍微改动一下程序 , 会有奇怪的发现:public class StringDemo {
public static void main(String args[
) {
String str1 = \"Hello\";
String str2 = new String(\"Hello\");
String str3 = str2; // 引用传递
System.out.println(str1 == str2); // false
System.out.println(str1 == str3); // false
System.out.println(str2 == str3); // true
System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true
System.out.println(str2.equals(str3)); // true
上方我们new了一个对象 , 用“==”比较s1和s2 , 返回的结果却是false;而用用“equals”比较s1和s2 , 返回的结果是true 。
为了分析上面的代码 , 我们必须首先分析堆内存空间和栈内存空间 , 这一点非常重要:
看完上面的图 , 再结合上面的代码 , 就一目了然了 。 现在我们可以给自己出一道面试题:
面试题:请解释字符串比较之中“==”和equals()的区别?
==:比较的是两个字符串内存地址(堆内存)的值是否相等 , 属于地址值比较;
equals():比较的是两个字符串的内容 , 属于内容比较 。
以后进行字符串相等判断的时候都使用equals() 。
3、再次更改程序:public class ObjectDemo{
public static void main(String[
args) {
String s1 = \"Hello\";
String s2 = new String(\"Hello\");
s2 = s2.intern();
System.out.println(s1 == s2); // true
System.out.println(s1.equals(s2)); // true
4、比较两个对象的值:代码如下:
上述代码的第5行中 , java.lang.String的intern()方法\"abc\".intern()方法的返回值还是字符串\"abc\" , 表面上看起来好像这个方法没什么用处 。 但实际上 , 它做了个小动作:检查字符串池里是否存在\"abc\"这么一个字符串 , 如果存在 , 就返回池里的字符串;如果不存在 , 该方法会 把\"abc\"添加到字符串池中 , 然后再返回它的引用 。
public class Demo6 {
public static void main(String args[
) {
Student student1 = new Student(\"生命壹号\" 22 \"成都\");
Student student2 = new Student(\"生命壹号\" 22 \"成都\");
System.out.println(student1 == student2); //false
System.out.println(student1.equals(student2)); //true
class Student {
private String name;
private int age;
private String address;
public Student(String name int age String address) {
this.name = name;
this.age = age;
this.address = address;
//重写Object类中的equals方法(比较两个对象的值是否相等)
- Java|干翻小米,红米又出超大杯旗舰,120W+2K直屏+双旗舰芯
- 百度地图|Java程序员应知应会之Maven和Gradle的区别
- javascript|穿戴设备将迎变革,OPPO又增新专利,能提升模式切换效率!
- |强劲送风,满足你对美感的挑剔—洛斐有范S桌面风扇
- Java|Gamamobi CEO黄继德:我们的元宇宙游戏不担心体验落差
- Java|美国传来新消息,ASML态度也变了,这一切竟如此之快
- Java|李佳琦消失扯下阿里“遮羞布”,原来淘宝根本就没有护城河
- Java|我做公众号终于不亏钱了
- Java|微信转账时弹出“这行字”,别输付款密码,有人已经中招了
- Java|合肥恒泽冠雨讲坛:哪些方法能够快速输出抖音视频内容?
