黑马程序员----【javaSE基础】个人总结--String 、 StringBuffer 和 StringBuilder

本文详细介绍了Java中String、StringBuffer与StringBuilder的区别,包括它们的不可变性、线程安全性及性能优势。通过示例代码展示了如何在不同场景下选择合适的字符串操作类,以提高程序的效率。

------- android培训java培训、期待与您交流! ----------



分享一下学习String 、StringBuffer 和 StringBuilder 的区别,希望进度差不多的童鞋多多指教


String是不可变的,StringBuffer是可变的;StringBuffer是线程安全的,StringBuilder是非线程安全的。 


对于创建成功的字符串对象,它的长度是固定的,内容不能被改变和编译。虽然使用“+”可以达到附加新字符或字符串的目的,但“+”会产生一个新的。String实例,会在内存中创建新的字符串对象。如果重复的对字符串进行修改,将极大地增加系统开销。而J2SE5.0新增了可变的字符序列StringBuilder类,大大提高频繁增加字符串的效率。


下面贴的是我的代码、我觉得很有实用价值、给大家分享一下、、

import java.lang.*;

public class String_1
{
  public static void main(String para[])
  {
                String str1,str2,str3,str4;
                String srcStr= "ABCDEFG";
                str1 = new String( srcStr );    //产生内容相同的另一份实体        
                str2 = srcStr.substring(0);                 //产生内容相同的另一份实体                                
                str3 = srcStr.toString();       //参考同一份实体
                    //str3.toLowerCase();             //看看这种写法是否可以改变str3所引用实例的内容
                str4 = srcStr;                  //参考同一份实体
                System.out.println( "srcStr = " + srcStr );
                System.out.println( "str1 = " + str1 ); 
                System.out.println( "str2 = " + str2 );
                System.out.println( "str3 = " + str3 ); 
                 //System.out.println( "str3 = " + str3.toLowerCase() );   //注销上一句,看看有什么变化
                System.out.println( "str4 = " + str4 );
                
                System.out.println( "比较str1与str2中的内容是否相同" + str1.equals(str2) );
                
                if(str1 == srcStr)
                        System.out.println( "str1 和 srcStr 参考了同一份实体"  );
                else
                        System.out.println( "str1 和 srcStr 参考的实体不是同一份"  );

        if(str3 == srcStr)
                        System.out.println( "str3 和 srcStr 参考了同一份实体"  );
                else
                        System.out.println( "str3 和 srcStr 参考的实体不是同一份"  );                                   
  }
}


import java.lang.*;

public class StringBuffer_1
{
  public static void main(String para[])
  {
                StringBuffer sb1 = new StringBuffer( "1234567" );
                StringBuffer sb2 = new StringBuffer( sb1.toString() ); //参考新的实体,但有同样的字符串内容
                System.out.println("sb1 变动前==> sb1 = " + sb1 + "  sb2 = " + sb2); 
                sb1.delete(0,4);
                System.out.println("sb1 变动后==> sb1 = " + sb1 + "  sb2 = " + sb2);
                
                StringBuffer sb3 = new StringBuffer("1234567");
                StringBuffer sb4 = sb3; //参考同一个实体
                System.out.println("sb3 变动前==> sb3 = " + sb3 + "  sb4 = " + sb4);
                sb3.delete(0,4);
                System.out.println("sb3 变动后==> sb3 = " + sb3 + "  sb4 = " + sb4);                                        
  }
}


------- android培训java培训、期待与您交流! ----------

------- android培训java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值