2020-10-31

1.String,StringBuffer,StringBuilder的常用API

public class Text
{
   public static void main(String[] args)
   {
       String s="abcdedcba" ;
       System.out.println("字符串的长度为:"+s.length());
       System.out.println("字符b第一次出现的位置:"+s.indexOf('b'));
       System.out.println("字符b最后一次出现的位置:"+s.lastIndexOf('b'));
   }
}

2.String,StringBuffer,StringBuilder三者之间的共同点和区别,应该分别在什么场景下中使用

相同点:
1、内部实现基于字符数组,封装了对字符串处理的各种操作
2、可自动检测数组越界等运行时异常

不同点:
1、String内部实现基于常量字符数组,内容不可变;
StringBuffer、StringBuilder基于普通字符数组,数组大小可根据字符串的实际长度自动扩容,内容可变
2、性能方面,对于字符串的处理,相对来说 StringBuilder >StringBuffer>String
3、StringBuffer线程安全;StringBuilder非线程安全

使用场景:

String:对安全要求更高。
StringBuffer、StringBuilder:对性能要求更高

3.不建议在for循环中使用“+”进行字符串拼接的原因

由于字符串拼接过程中会创建新的对象,所以如果要在一个循环体中进行字符串拼接,就要考虑内存问题和效率问题。
而“+”反编译后的代码,在for循环中,每次都是new了一个StringBuilder,然后再把String转成StringBuilder,再进行append。
而频繁的新建对象当然要耗费很多时间了,不仅仅会耗费时间,频繁的创建对象,还会造成内存资源的浪费。

4.什么是字符串的编码和解码

编码:将Unicode字符集转换为本地字符集(GB2312或GBK)的过程。
解码:将本地字符集转换为Unicode字符集的过程

byte[] getBytes(String charsetName)
String(byte[] bytes, String charsetName)
getBytes()
String(byte[] bytes)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值