首页 > 编程知识 正文

java中比较string,简述string和stringbuilder的区别

时间:2023-05-06 16:21:16 阅读:283066 作者:3450

StringBuilder

StringBuilder:是一个可变的字符序列,因为在类中提供了修改私有变量的方法,常用的方法是append和insert,就是在StringBuilder本身上,进行修改。

String:长度本身不可变,StringBuilder长度可变。

构造方法

1.作用:创建当前对象,将其他类型的数据,装换成当前类型

2.构造方法:
①StringBuilder():创建一个生成器,初始容量为16个字符
②StringBuilder(int capacity):创建一个生成器,初始容量为capacity大小
③StringBuilder(String str):创建一个生成器,初始值就是str这些字符,初始大小是str+16;

3.获取容积的方法:
①capacity():获取当前生成器的容器大小
②length():获取当前生成器中的字符个数

常用功能

1.添加功能:
①append(任意类型):可以将任意数据类型,转换成字符,添加到生成器中
②insert(int index,任意数据类型):可以将任意数据类型,添加到指定的位置。注:index的范围是0-当前缓冲区的大小;插入数据后,数据本身的索引就是参数中指定的index。

2.删除功能
①deleteCharAt(int index):删除指定索引的字符
②delete(int start,int end):删除指定范围的字符,被删除的部分包含头不包含尾。

3.替换和反转功能
①replace(int start,int end,String str):将字符串缓冲区中的从start开始到end-1这部分内容,替换成str
②reverse():将原有字符串序列进行反转。

String和StringBuilder拼接字符串的区别

1.使用String拼接字符串:时间和空间上都是非常浪费的
步骤:①创建一个StringBuilder的对象
②在字符生成序列中,拼接两个字符串生成一个新的字符串生成序列
③把当前的StringBuilder对象转换成String对象
注 :这只是两个String对象进行拼接,拼接字符串越多创建的对象越多

2.使用StringBuilder拼接字符串,时间和空间上都非常节省,无论循环多少次,都只创建两个对象
步骤:①创建一个新的StringBuilder的存储空间
②在StringBuilder的基础上进行添加,不创建新的字符串
③循环完成后,将StringBuilder转成String
注:无论循环多少次,都只创建两个对象

String和StringBuilder的相互转换

1.String----->StringBuilder

String str="abc";StringBuilder sb=new StringBuilder(str);

2.StringBuilder----->String

String str1=sb.toString();

或者

String str2=new String(sb); StringBuffer和StringBuilder的区别

相同点:
都是字符串缓冲区,都是字符串的生成器,都是可变的字符序列

不同点:
1.出现版本不同:StringBuffer在jdk1.0出现的;StringBuilder在jdk1.5出现的

2.线程安全性不同:StringBuffer是线程安全的,在多线程的环境下仍然保证数据安全;StringBuilder是线程不安全的,在多线程的环境下无法保证数据安全。

3.效率不同:StringBuffer效率低;StringBuilder效率高

String和StringBuilder作为方法的参数

1.String作为方法的参数:无法修改原值, 修改引用指向的对象,和主方法中的引用无关。

public static void main(String[] args){String str="aaa";System.out.println(str);update(str);System.out.println(str);}public static void update(String str){str="bbb";} 内存图解

2.StringBuilder作为方法的参数进行传递:如果修改的是StringBuilder的引用,那么不会改变原有对象中的数据。

public static void main(String[] args){StringBuilder str=new StringBuilder("aaa");System.out.println(str);update(str);//打印的还是原来的str。System.out.println(str);}public static void update(StringBuilder str){str=new StringBuilder("bbb");} 内存图解

3.StringBuilder作为方法的参数进行传递:通过该引用修改了对象的数据,那么原值就会发生改变

public static void main(String[] args){StringBuilder str=new StringBuilder("aaa");System.out.println(str);update(str);//打印的是aaabbb,因为修改的是同一块内存空间System.out.println(str);}public static void update(StringBuilder str){str.append("bbb");} 内存图解

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。