关于String,StringBuffer,StringBuilder的相关知识

本文深入解析Java中String、StringBuffer和StringBuilder的区别,涵盖字符串创建、拼接、截取及逆序输出等核心操作方法,同时对比了不同字符串类型在性能和线程安全方面的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.String、StringBuffer和StringBuilder的区别

String:是被final修饰的,它的长度是不可改变的。

StringBuffer:长度可以改变,它是线性安全的。

StringBuilder:长度可以改变,它是非线性安全的,运行速度比StringBuffer更快。

 

1.1常用的内置方法

①append(String str): 在字符串末尾添加字符串

②reverse():将此字符串用其反转形式取代

③charAt(int index) 返回此序列中指定索引处的字符。

④toString()    返回此序列中数据的字符串表示形式。 

⑤substring(int start)  截取指定索引处字符串 

⑥ indexOf(String str) 返回指定字符的索引值

 

1.2字符串截取的几种方法

①split()方法:

String str = "5@285964@qq.com";

String[] strs = str.split("@");

for(int i=0;i<strs.length;i++){

System.out.println(strs[i].toString());

}

 

②subString(beginIndex)一个参数方法来进行字符串截取:将字符串从索引号为beginIndex开始截取,一直到字符串末尾。(注意索引值从0开始)。

 

 

String sb = "abcdef";

String str = sb.substring(2);

System.out.println(str);

 

③substring(int beginIndex, int endIndex)两个参数方法:从索引号beginIndex开始到索引号endIndex结束(返回结果包含索引为beginIndex的字符不包含索引endIndex的字符)

String sb = "abcdef";

String str = sb.substring(2,4);

System.out.println(str);

 

2.String s1 = new String(“hello”)和String s 2= “hello”有区别吗?

有。前者会创建2个对象,后者创建1个对象。

 

String s1 = new String(“hello”);在堆内存中创建了一个对象

在方法区中的字符串常量池中创建了一个”hello”常量值, 地址0x001;

指向new String();

new String()本身就是new出来的,所以也有一个地址值0x0001;

赋值给String s1,指向了String s1

String s2 直接赋值,在常量池里找,有就直接赋值,把”hello”的地址0x001给了String s2

String s2指向了常量池里的”hello”

 

==:比较引用类型比较的是地址值是否相同

equals:比较的是内容是否相同。 

s1 == s2--------> false 

s1.equals(s2)--------->true 

 

3.StringBuffer和数组的区别?

二者都是可以看成是一个容器,装其他的数据,但StringBuffer的数据最终是一个字符串数据;而数组可以放置多种数据,但必须是同一种数据类型的。

 

4.字符串的拼接方法:concat,StringBuffer,StringBuilder,"+"。

①concat拼接法:

String s = "abcd";

s = s.concat("ef");

System.out.println(s);

 

②最简单的方法:用"+"连接起来

String a= "我会带带的";

String b= "看着你";

String c= a + "," + b;

System.out.println(c);

 

③StringBuffer:

StringBuffer a = new StringBuffer("我会呆呆的");

String b = "看着你";

StringBuffer c = a.append(",").append(b);

System.out.println(c);

 

④StringBuilder的用法与StringBuffer类似:

 

5.字符串逆序输出的方法:

①: StringBuffer的reverse方法(StringBuilder也是一样的用法)

String string="我爱他风风烈烈最疯狂";

StringBuffer sb=new StringBuffer();

sb.append(string);

System.out.println(sb.reverse());

 

②:StringBuffer的循环

String string="我爱他风风烈烈最疯狂";

int length=string.length();

StringBuffer sb=new StringBuffer();

for(int i=string.length()-1;i>=0;i--){

sb.append(string.charAt(i));

}

System.out.println(sb);

 

③:使用数组循环

String string="我爱他风风烈烈最疯狂";

int len=string.length();

char[] newstring=string.toCharArray();

for (int i = 0; i < len/2; i++) {

newstring[i]=string.charAt(len-i-1);

newstring[len-i-1]=string.charAt(i);

}

System.out.println(newstring);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值