java 中String equal 和==的区别,以及StringBuffer

本文详细解析了Java中String类的equals和==方法的区别,通过实例展示了它们在不同场景下的行为,包括不可变性、常量池使用、引用与值的比较。适合Java开发者深入了解字符串操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

网上关于String的equals和==的资料挺多的,昨天看到好多文章都有错 ,自己一定要运行代码确认辨别。就简单总结以下,希望能帮助到大家,如果有错误欢迎指出,大家互相学习,共同进步。
个人总结: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();
	}
}
网上关于String的equals和==的资料挺多的,昨天看到好多文章都有错 ,就简单总结以下,希望能帮助到大家,如果有错误欢迎指出,大家互相学习,共同进步。
个人总结:equals是比较值是否相同,==则比较的是引用地址是否相同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值