Java

equals是比较值/对象是否相同,==则比较的是引用地址是否相同。

==  如果是基本类型则表示值相等,如果是引用类型则表示地址相等即是同一个对象

package com.char3;
public class StringTest {
    
    /**
     * StringBuffer 是可变的字符序列的类似字符串的对象,对其进行改变时返回对同一实例的引用
     * 代码运行结果:
     * is equal true
     * is == true
     * 说明:sb和sb1是同一个引用地址
     */
    public static void useStringBuffer(){
        StringBuffer sb = new StringBuffer("sb你好");
        StringBuffer sb1= sb.append(",陈瑞");
        System.out.println("is equal "+sb.equals(sb1));
        System.out.println("is == " + (sb==sb1));
    }
    /**
     * String 创建对象s,吧s的引用传给str
     * 代码运行结果:
     * is equal true
     * is == true
     * 说明:s 和str 的值相同,引用地址也相同
     */
    public static void useString(){
        String s = "你好";
        String str = s ;
        System.out.println("is equal "+s.equals(str));
        System.out.println("is == "+(s == str));
    }
    /**
     * String 创建str1的时候把“nihao”放在常量池中,当创建str2的时候先去常量池中查看是否有相同的常量值,如果存在则吧常量的引用给str2
     * 代码运行结果:
     * is equal true
     * is == true
     * 说明:str1和str2的值相同,引用地址也相同
     */
    public static void useString1(){
        String str1="nihao";
        String str2 = "nihao";
        System.out.println("is equal "+str1.equals(str2));
        System.out.println("is == "+(str1==str2));
    }
    /**
     * String创建的字符串 是不可变的,str表面看是对s的修改,其实质没修改原字符串,而是新建了字符串对象str
     * 一下的代码运行结果:
     * is equal false
     * is == false
     * 说明:s 和 str 值不等,引用地址也不用
     */
    public static void useString2(){
        String s = "你好";
        String str = s+"chenrui" ;
        System.out.println("is equal "+s.equals(str));
        System.out.println("is == "+(s == str));
    }
    public static void main(String[] args) {
        useStringBuffer();
        useString();
        useString1();
        useString2();
    }
}
--------------------- 作者:chenrui_ 来源:CSDN 原文:https://blog.csdn.net/jijijiujiu123/article/details/18631647
原文地址:https://www.cnblogs.com/kl-1998/p/10794822.html