java字符串拼接技巧(StringBuilder使用技巧)
在平时的开发中,我们可能会遇到需要拼接如下格式的字符串(至少我是遇到了很多次):
1,2,3,4,5,6,7,8,9,10,11,12,12,12,12,34,234,2134,1234,1324,1234,123
这个字符串的特点:多个数据之间通过某一个特殊符号分割。
以前我都是这样想的,我相信很多的people也是这样想的:
public class StringTest
{
public static void main(String[] args)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i <= 10; i++)
{
//以下这个判断对于有强迫症的人来说确实有点不爽,每次循环进来都要进行判断以下,如果循环的次数很多呢,我们都会想到会不会对性能有影响呢?
if (i != 0)
{
sb.append(",");
}
sb.append(i);
}
System.out.println(sb.toString());
}
}
看到这里,你平时的做法是不是也是这样的,每一次循环中都存在这样一个判断,如果是回答是肯定的,那么你就有必要继续往下看了,因为以上的方式确实不怎么明智。(至少对于我这个强迫症&&追求完美的人来说,这样的代码让我很不爽)。
在这里不会有人要反驳的代码,要我用"+"来拼接字符串吧,如果你真是这样想的,Oh My God!!!
我在这里提供两种我知道的方式去解决这种现象问题:
方法一:首先取出集合的第一个元素,通过StringBuilder的构造方法,传入第一个元素,这样是不是后面的每一次循环就不需要判断了啊?
public class StringTest
{
public static void main(String[] args)
{
StringBuilder sb = new StringBuilder("0");
for (int i = 1; i <= 10; i++)
{
sb.append(",");
sb.append(i);
}
System.out.println(sb.toString());
}
}
很多小伙伴想到了上面的方式是通过技巧(java api的掌握熟练程度)将第一个特殊的元素取出来,特殊处理,后面的是不是每一个元素都有规律了,都是以一个字符加上一个数据。想到这里,你有没有想到点其他的?
作为一个程序员我们就应该练就一身举一反三的本领,上面的方式既然能够将第一个元素作为特殊的数据单独提取出来,那么有没有办法将最后的一个数据也作为特殊数据单独提取出来,前面的其他数据不是就有规律可循了吗?
所以下面就引出了我的第二种解决办法(《Java编程思想第四版》P286)
方式二:很多人都熟悉StringBuilder的append();方法,但是很多人却不知道StringBuilder的delete(int startPost,int endPost);如果你有举一反三的学习习惯,那么很容易就会掌握到这个api接口。其实在java的api中很多都是相对的,通过这种方式去学习,很快你就会发现自己知道的就很多。
public class StringTest
{
public static void main(String[] args)
{
StringBuilder sb = new StringBuilder();
for (int i = 0; i <= 10; i++)
{
sb.append(i);
sb.append(",");
}
sb.delete(sb.length() - 1, sb.length());//这里就看你知不知道这个api接口了
System.out.println(sb.toString());
}
}
以上只是我针对这一个小的知识点的技巧告诉大家,在学习中应该多学会举一反三,掌握学习方法是你学好编程的一条捷径。欢迎大家有更好的学习方法,学习技巧,知识点技巧与我共同讨论与分享。
转载请注明出处:http://www.cnblogs.com/liushaofeng89/p/4865263.html
java字符串拼接技巧(StringBuilder使用技巧)的更多相关文章
- Java 字符串拼接 StringBuilder() StringBuffer
字符串拼接 普通方式 public class StringDemo2 { public static void main(String[] args) { // 表示获取从1970- ...
- Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
[请尊重原创版权,如需引用,请注明来源及地址] > 字符串拼接一般使用“+”,但是“+”不能满足大批量数据的处理,Java中有以下五种方法处理字符串拼接,各有优缺点,程序开发应选择合适的方法实现 ...
- 羞,Java 字符串拼接竟然有这么多姿势
二哥,我今年大二,看你分享的<阿里巴巴 Java 开发手册>上有一段内容说:"循环体内,拼接字符串最好使用 StringBuilder 的 append 方法,而不是 + 号操作 ...
- JAVA字符串拼接操作规则说明
1.常量与常量的拼接结果在常量池,原理是编译期优化 public void test1() { String s1 = "a" + "b" + "c& ...
- Java 字符串拼接四种方式的性能比较分析
一.简单介绍 编写代码过程中,使用"+"和"contact"比较普遍,但是它们都不能满足大数据量的处理,一般情况下有一下四种方法处理字符串拼接,如下: 1. 加 ...
- java 字符串拼接
package com.fh.controller.pacm.checkbill; import com.google.common.base.Joiner; /** * 字符串拼接 * * @aut ...
- Java 字符串拼接方式
import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; impor ...
- Java字符串拼接效率测试
测试代码: public class StringJoinTest { public static void main(String[] args) { int count = 10000; long ...
- java字符串拼接的几种方式
1. plus方式 当左右两个量其中有一个为String类型时,用plus方式可将两个量转成字符串并拼接. String a="";int b=0xb;String c=a+b;2 ...
随机推荐
- KVM虚拟机内无agent情况下的监控方法
KVM虚拟机内无agent情况下的监控(ceilometer实现) 今天看到大家在群里讨论KVM虚拟机的监控问题,而且是要求VM内无agent情况下的监控.这方面确实没有深入研究,但尚有些openst ...
- 有关map中使用iterate迭代器遍历的不保序问题和list remove(object)的细节问题
今天在做项目的过程中发现了如下两个问题: 一 使用map的iterator迭代器对map进行遍历得到的结果是不保序的,也就是每次输出结果都是不一样的.针对这个问题,看以下iterator迭代器的源码. ...
- nohup不输出日志信息的方法及linux重定向
最近使用nohup创建了一个后台进程,默认日志输出到了nohup.out文件中,程序跑起来也就没再管,过了大约一周,发现硬盘空间不够了,于是查找原因,发现这个nohup.out文件已经到了70G了,导 ...
- 【网络爬虫】【python】网络爬虫(三):模拟登录——伪装浏览器登录爬取过程
一.关于抓包分析和debug Log信息 模拟登录访问需要设置request header信息,对于这个没有概念的朋友可以参见本系列前面的java版爬虫中提到的模拟登录过程,主要就是添加请求头requ ...
- liteos任务(二)
任务 1 基本概念 从系统的角度看,任务是竞争系统资源的最小运行单元.任务可以使用或等待CPU.使用内存空间等系统资源,并独立于其它任务运行. Huawei LiteOS的任务模块可以给用户提供多个任 ...
- L2-024 部落 (25 分)并查集
在一个社区里,每个人都有自己的小圈子,还可能同时属于很多不同的朋友圈.我们认为朋友的朋友都算在一个部落里,于是要请你统计一下,在一个给定社区中,到底有多少个互不相交的部落?并且检查任意两个人是否属于同 ...
- 小程序接收from表单数据(实例)
html部分 <form bindsubmit='sub'> <view class="con"> <view class="con-nr& ...
- [HNOI2010] 公交线路 bus
标签:状态压缩+矩阵快速幂. 题解: 首先看范围,p<=10,那么我们可以想到状态压缩.我们把从一个长度为10的区间进行压缩,1代表可以,那么当值一个区间的1的个数为k个,我们就认为他是合法的. ...
- perl 打开二进制文件,并拷贝内容
实现脚本 use strict ; my $fileName = "/Users/chenfool/Desktop/sequoiadb-大数据平台构建.pdf" ; my $out ...
- C#递归得到特定文件夹下问件
List<String> listFile = new List<String>(); public void director(string path) { //绑定到指定的 ...