java中String、StringBuffer、StringBuilder的区别

1.string

string对象是不可变的,线程安全的。适用于少量的字符串操作的情况

 

2.stringBuffer

StringBuffer对象是可变的,但是线程安全,源码中append()方法中加了同步锁synchronized。适用多线程下在字符缓冲区进行大量操作的情况,一般做支付涉及字符串的拼接就会用到StringBuffer

比如:某支付中mac字段的得到

String mac="";
string key = "12345"; //此处就随便设置值
string notifyURL ="www.baidu.com";
StringBuffer sf = new StringBuffer();
sf.append("accountId=").append("12345");
sf.append("&customerId=").append("12345");
sf.append("&orderNo=").append("12345");
sf.append("&purpose=").append("12345");
sf.append("&amount=").append("12345");
sf.append("&commodityName=").append("zhifu");
sf.append("&businessType=").append("1");
sf.append("&responseUrl=").append(notifyURL);
sf.append("&token=").append(token);
if (!StringUtils.isNotBlank(token)){
sf.append("&name=").append("张三");
sf.append("&idCardNo=").append("621010023456789");
sf.append("&cardNo=").append("621021012345678");
sf.append("&phoneNo=").append("18214667755");
}else if (StringUtils.isNotBlank(token)){
sf.append("&name=").append("");
sf.append("&idCardNo=").append("");
sf.append("&cardNo=").append("");
sf.append("&phoneNo=").append("");
}
sf.append("&key=").append(key);
sf.append("&key=").append(key);
logger.info("发送短信加密前+++++++++"+sf.toString());
mac = Md5Encrypt.md5(sf.toString()).toUpperCase(); //Md5Encrypt.md5是MD5加密方法,这里就不写出来了。
 

 

3.stringBuilder

stringBuilder对象是可变的,但是线程不安全。适用于单线程下在字符缓冲区进行大量操作的情况

 

posted @ 2018-09-08 16:58  小柴胡颗粒  阅读(225)  评论(0编辑  收藏  举报