String、StringBuilder和StringBuffer的区别

String和StringBuilder的区别

 String和StringBuilder最大的区别就在于String是不可变的,具有不可变性,对String的各种操作都不会对本身产生影响,除非采取赋值的形式把变化的值重新赋给String,这就导致了,String的操作会产生很多中间值消耗内存,而StringBuffer的操作是直接在原来对象上进行操作的,比如:

	//对String进行字符串拼接
	//新建一个String对象压入栈中并指向常量池中的"hello"
	String str = new String("hello");
	System.out.println(str);//hello
	//要想对String进行拼接,我们只能通过重新赋值的方式
	//此时在堆中重新new String("hello,word");并将str指向新创建的位置
	str = str+",world";
    System.out.println(str);//hello,word
	
	
	//对StringBuilder进行字符串拼接
	//新建一个StringBuilder对象
	StringBuilder strb = new StringBuilder("hello");
	System.out.println(strb);//hello
	//要想对StringBuilder进行拼接,我们只需要调用StringBuilder的append方法
	//此时堆中原来new StringBuilder("hello");语句变为new StringBuilder("hello,word");
	strb.append(",word");
	System.out.println(strb);//hello,word

StringBuilder和StringBuffer的区别

 由于StringBuilder和StringBuffer基本一样,所以String和StringBuilder的区别也同样是String和StringBuffer的区别,不再赘述。

 StringBuilder和StringBuffer的区别就在于,StringBuffer具有线程安全,而StringBuilder不具备,因此,StringBuilder的执行效率要高于StringBuffer,而日常开发时对字符串的操作很少需要考虑线程安全问题,因此,开发常用StringBuilder。

执行效率:

 StringBuilder>StringBuffer>String

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值