实用技巧之拼接(内附面试题String,StringBuffer,StringBuider的区别 )

🥳🥳Welcome Huihui's Code World ! !🥳🥳

接下来看看由辉辉所写的关于拼接的相关操作吧

目录

🥳🥳Welcome Huihui's Code World ! !🥳🥳

一.什么时候会用到拼接

二.使用什么方式进行拼接

String

1.概念及其演示

2.所存在的问题

StringBuffer和StringBuilder

1.概念及其演示【StringBuffer】

 2.总结

三.常见面试题

💡辉辉小贴士:String和StringBuffer以及StringBuider的区别 

💡辉辉小贴士:StringBuffer和StringBuider的区别


一.什么时候会用到拼接

我们在许多时候都会使用到拼接,比如在分页的时候,在使用ajax的时候...

  • 1. 构建长字符串:当你需要按照一定的规则或逻辑将多个短字符串拼接成一个长字符串时,可以使用拼接操作
  • 2. 字符串拼接输出:当需要在输出文本或日志中将多个变量或信息拼接为一段完整的文本时,可以使用拼接操作

二.使用什么方式进行拼接

String

1.概念及其演示

  • 当使用String进行字符串拼接时,每次拼接操作都会创建一个新的String对象。这是因为String对象在Java中是不可变的,即一旦被创建,它的值就不能被修改。每次拼接操作实际上是创建了一个新的String对象,该对象包含了原始字符串和待拼接的新字符串
  • package com.wh.page;
    
    public class Demo2 {
    	public static void main(String[] args) {
    		String result="I ";
    		result+="Love ";
    		result+="You ";
    		result+="❤️ ";
    		System.out.println("String: "+result);
    		
    	}
    }
    

2.所存在的问题

  • 在这个例子中,"I"和" Love"都是String对象。当进行拼接操作result +=  "You"时,会创建一个新的String对象,它的值为"I Love You"。原始的"I"对象保持不变,而新的对象被赋值给变量result 
  • 这种机制导致了频繁的内存分配和销毁,对于大量的拼接操作,可能会消耗大量的内存和影响性能

StringBuffer和StringBuilder

1.概念及其演示【StringBuffer】

  • StringBuffer和StringBuilder是可变的字符串容器。它们提供了一系列的方法来直接修改原始字符串内容,而不需要每次都创建新的对象。拼接操作只是对原始对象进行修改,不会产生多个对象
  • package com.wh.page;
    
    public class Demo2 {
    	public static void main(String[] args) {
    		
    		
    		StringBuffer sb = new StringBuffer("I ");
    		sb.append("Love ");
    		sb.append("You");
    		sb.append("❤️ ");
    		System.out.println("StringBuffer:"+sb);
    		
    	}
    }
    

 2.总结

因此,如果在循环或频繁拼接字符串的场景下,推荐使用StringBuffer或StringBuilder来避免频繁的内存分配和销毁,提高性能。在单线程环境下,两者的效果类似,而在多线程环境下,StringBuffer是线程安全的,而StringBuilder则不是

三.常见面试题

💡辉辉小贴士:String和StringBuffer以及StringBuider的区别 

  • 1. 不可变性:
    •    - String类是不可变的。这意味着一旦一个String对象被创建,它的值就不能被修改。如果对一个String对象进行任何更改操作(如拼接、替换字符等),实际上是创建了一个新的String对象。这是因为Java中的字符串是被视为常量的
    •    - StringBuffer类以及StringBuider类是可变的。它允许对字符串进行修改和操作,而不会创建新的对象。可以通过调用StringBuffe以及StringBuider类的方法来添加、删除、修改或反转字符串中的字符内容。
  • 2. 性能:
    •    - 由于String类是不可变的,对String进行频繁的修改操作会导致大量的内存分配和销毁,对性能可能产生负面影响。
    •   - StringBuffer类以及StringBuider类是可变的,适用于需要频繁修改字符串内容的情况。它的性能通常比String更好,因为它避免了频繁地创建新的字符串对象。

⭐⭐综上所述,如果你需要处理频繁修改的字符串,建议使用StringBuffer。如果你需要处理的是不会改变的字符串,或者在单线程环境下进行字符串操作,可以使用String

💡辉辉小贴士:StringBuffer和StringBuider的区别

StringBuffer和StringBuilder是Java中两种可变字符串的类,它们的主要区别在于线程安全性和性能方面

  • 1. 线程安全性:
    •    - StringBuffer是线程安全的,所有的方法都是同步的(即使用synchronized关键字进行同步)。这意味着在多线程环境下,多个线程可以安全地并发访问和修改StringBuffer对象,不会出现数据不一致的问题。
    •    - StringBuilder是非线程安全的,它的方法没有进行同步。在多线程环境下,并发操作同一个StringBuilder对象可能会导致数据不一致或其他线程安全问题。
  • 2. 性能:
    •    - 由于StringBuffer是线程安全的,为了保证线程安全性,它的方法都使用了synchronized关键字进行同步,这会在多线程环境下带来额外的性能开销。
    •    - StringBuilder是非线程安全的,它的方法没有进行同步,因此在单线程环境下执行操作时,StringBuilder的性能比StringBuffer更好。由于没有同步开销,StringBuilder通常比StringBuffer更快。

⭐⭐因此,如果在多线程环境下需要进行字符串操作或者对线程安全性有要求,应使用StringBuffer。如果在单线程环境下进行字符串操作或不关心线程安全性,应使用StringBuilder以获得更好的性能

⭐⭐需要注意的是,无论是StringBuffer还是StringBuilder,它们都提供了类似的方法来进行字符串的修改和操作。因此,在功能上它们非常相似,根据具体的使用场景选择最合适的类即可

              好啦,今天的分享就到这了,希望能够帮到你呢!😊😊               

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是辉辉啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值