字符串与可变字符串的区别

本文探讨了Java中字符串的两种类型——不可变字符串(String)和可变字符串(StringBuilder/StringBuffer)。不可变字符串一旦创建,其内容就不能改变,如`String s1 = "1000phone"`。可变字符串,如StringBuilder,允许动态地修改字符串内容,适用于不考虑线程安全的场景。在多线程环境中,推荐使用线程安全的StringBuffer。
摘要由CSDN通过智能技术生成

字符串的分类:

String和StringBuilder以及StringBuffer的关系图:

 

 

 

1、不可变字符串

  • 定义: String:说的是字符串本身没有发生变化,与引用无关- - -常量。
  • 表示方法:String s1 = “1000phone”;
  • 实例代码:
	public class Demo2 {
		public static void main(String[] args) {
			String s1 = "1000phone";
			//String s1 = "1000phone";  定义两个变量s1无法运行
			String s2 = "1000phone";
			String s3 = new String("1000phone");
			String s4 = new String("1000phone");
			
			System.out.println(s1 == s2);//true
			System.out.println(s1 == s3);//false
			System.out.println(s1 == s4);//false
			System.out.println(s3 == s4);//false
			//说明字符串重写了equals方法,重新指定了比较的规则.规则变成:让s1与s3属性的地址比较
			System.out.println(s1.equals(s2));//true
			System.out.println(s1.equals(s3));//true
			//总结:以后比较字符串时尽量使用equals
		}

解释:

  • 当执行s1的时候,会到常量区找叫1000phone的字符串,如果有直接让s1保存他的地址,如果没有,会在常量区开辟一块儿空间存储1000phone。
  • 执行s2是同理s1。
  • 执行s3时,由于进行了new,一定会现在堆中开辟一块儿空间,而1000phone是作为参数传给了对象.保存在了对象的一个String类型的成员变量内,所以直接判断s1与s3不相同。
  • 执行s4同理s3。

其中的相关方法使用:<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值