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