截取字符串两种方法的比较(split()和subString())

本文探讨了Java中split()方法与substring()方法在截取字符串时的性能差异,通过代码实例展示了两者在操作字符串时的不同效果,并指出split()方法可能带来的性能损耗,建议使用substring()作为更优选择。

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

我们在使用字符串截取时会遇到split()方法,split()方法可以使字符串按指定的分割字符或字符串对内容进行分割,源字符串调用split()方法后返回的是一个字符串数组,然后通过foreach()方法取到返回的字符串数组结果,

感觉自己写的有点啰嗦,下面是代码:
public class day02demo06 {
public static void main(String[] args) {
String result01 = “hellojava”;//创建第一个字符串
String result02 = “helloworld”;//创建第二个字符串
String[] sum01 = result01.split(“o”);//调用split方法截取其中“o”字符
StringBuilder sBuilder01 = new StringBuilder();//然后创建一个空的StringBuilder实例
for (String string01 : sum01) { //然后通过foreach方法拿到sum01中的字符串并添加到sBuilder01中
sBuilder01.append(string01);
}
System.out.println();
String[] sum02 = result02.split(“o”);//截取第二个字符串中的“o”过程同上
StringBuilder sBuilder02 = new StringBuilder();//过程同上
for (String string02 : sum02) {//过程同上
sBuilder02.append(string02);
}
System.out.println();
System.out.println(“StringBuilder值分别为:”+“其中sBuilder01值为:” + sBuilder01 +",sBuilder02值为:"+ sBuilder02);
System.out.println();
下面是判断两个截取后的值是否相等:
if(sum01.equals(sum02) == true)
{
System.out.println(“非StringBuilder值通过equals方法判断,sum01与sum02相同”);
}else {
System.out.println(“非StringBuilder值通过equals方法判断,sum01与sum02不同”);
}
System.out.println();
if(sBuilder01.equals(sBuilder02))
{
System.out.println(“StringBuilder值通过equals方法判断,sBuilder01与sBuilder02相同”);
}else {
System.out.println(“StringBuilder值通过equals方法判断,sBuilder01与sBuilder02不同”);
}
System.out.println();
if(sum01 == sum02)
{
System.out.println(“非StringBuilder值通过== 方法判断,sum01与sum02相同”);
}else {
System.out.println(“非StringBuilder值通过== 方法判断,sum01与sum02不同”);
}
System.out.println();
if(sBuilder01 == sBuilder02)
{
System.out.println(“StringBuilder值通过方法判断,sBuilder01与sBuilder02相同");
}else {
System.out.println("StirngBuilder值通过
方法判断, sBuilder01与sBuilder02不同”);
}
}
}
输出结果是:
StringBuilder值分别为:其中sBuilder01值为:helljava,sBuilder02值为:hellwrld

非StringBuilder值通过equals方法判断,sum01与sum02不同

StringBuilder值通过equals方法判断,sBuilder01与sBuilder02不同

非StringBuilder值通过== 方法判断,sum01与sum02不同

StirngBuilder值通过==方法判断, sBuilder01与sBuilder02不同

后来度娘了一下,发现split方法截取字符串有很大的性能损耗,更好的办法是通过subString方法截取字符串,
下面实例是别人的,代码是:
public class testSplit {

/**
 * @param args
 */
public static void main(String[] args) {
	// TODO Auto-generated method stub 
	String a="sanksl:sfa:sn";
	String[] b= a.split(":");
	String j=a.substring(2, 4);
	String i2=a.substring(3);
	System.out.println("String j=a.substring(2, 4);"+j);//nk   取[2,4)
	System.out.println("String i2=a.substring(3);"+i2);//取[3,结尾]   ksl:sfa:sn
    for (int i = 0; i < b.length; i++) {
		System.out.println(b[i]);//sanksl
                                 //sfa
                                //sn
	}
}

}**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值