StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类,并且可以进行字符串的拼接;
String中的方法:
我们可以做为Json 方法抽取:
package cn.muuioo.utils;
import org.apache.commons.lang.StringUtils;
public class Response {
/**
* Response 消息
*/
private String message;
/**
* Response 状态码
*/
private String status;
/**
* Response 数据
*/
private Object data;
/**
* 通话令牌
*/
private String token;
private String index;
private String total;
private String persize;
private String totalPages;
private String uuid;
private String phoneVCode;
/**
* public static void main(String[] args) {
*
* Response re = new Response(); re.setData("data").setStatus("status");
*
* List
list = new ArrayList
(); list.add(re);
* list.add(re);
*
* String result =
*
* Response.build().setStatus("200").setData(new Date()).toJSON();
*
* System.out.println(result);
*
* }
*/
public static Response build() {
return new Response();
}
public String toJSON() {
StringBuffer sb = new StringBuffer();
sb.append("{");
if (StringUtils.isNotBlank(this.status)) {
sb.append("\"status\":\"").append(status).append("\",");
}
if (StringUtils.isNotBlank(this.message)) {
sb.append("\"message\":\"").append(message).append("\",");
}
if (StringUtils.isNotBlank(this.token)) {
sb.append("\"token\":\"").append(token).append("\",");
}
if (StringUtils.isNotBlank(this.uuid)) {
sb.append("\"uuid\":\"").append(uuid).append("\",");
}
if (StringUtils.isNotBlank(this.phoneVCode)) {
sb.append("\"phoneVCode\":\"").append(phoneVCode).append("\",");
}
if (this.data != null) {
JsonMapper jm = new JsonMapper();
sb.append("\"data\":").append(jm.toJson(data)).append(",");
}
if (StringUtils.isNotBlank(this.index)) {
sb.append("\"index\":\"").append(index).append("\",");
}
if (StringUtils.isNotBlank(this.total)) {
sb.append("\"total\":\"").append(total).append("\",");
}
if (StringUtils.isNotBlank(this.persize)) {
sb.append("\"persize\":\"").append(persize).append("\",");
}
if (StringUtils.isNotBlank(this.totalPages)) {
sb.append("\"totalPages\":\"").append(totalPages).append("\",");
}
sb.append("}");
String result = sb.toString();
if (result.lastIndexOf(",") == -1) {
return result;
}
return result.substring(0, result.lastIndexOf(",")).concat(result.substring(result.lastIndexOf(",") + 1));
}
public String toJSON(String withEmptyStr) {
StringBuffer sb = new StringBuffer();
sb.append("{");
if (StringUtils.isNotBlank(this.status)) {
sb.append("\"status\":\"").append(status).append("\",");
}
if (StringUtils.isNotBlank(this.message)) {
sb.append("\"message\":\"").append(message).append("\",");
}
if (StringUtils.isNotBlank(this.token)) {
sb.append("\"token\":\"").append(token).append("\",");
}
if (StringUtils.isNotBlank(this.uuid)) {
sb.append("\"uuid\":\"").append(uuid).append("\",");
}
if (StringUtils.isNotBlank(this.phoneVCode)) {
sb.append("\"phoneVCode\":\"").append(phoneVCode).append("\",");
}
if (this.data != null) {
JsonMapper jm = new JsonMapper();
sb.append("\"data\":").append(jm.toJsonWithEmptyStr(data)).append(",");
}
if (StringUtils.isNotBlank(this.index)) {
sb.append("\"index\":\"").append(index).append("\",");
}
if (StringUtils.isNotBlank(this.total)) {
sb.append("\"total\":\"").append(total).append("\",");
}
if (StringUtils.isNotBlank(this.persize)) {
sb.append("\"persize\":\"").append(persize).append("\",");
}
if (StringUtils.isNotBlank(this.totalPages)) {
sb.append("\"totalPages\":\"").append(totalPages).append("\",");
}
sb.append("}");
String result = sb.toString();
return result.substring(0, result.lastIndexOf(",")).concat(result.substring(result.lastIndexOf(",") + 1));
}
public String getStatus() {
return status;
}
public Response setStatus(String status) {
this.status = status;
return this;
}
public Object getData() {
return data;
}
public Response setData(Object data) {
this.data = data;
return this;
}
public String getIndex() {
return index;
}
public Response setIndex(String index) {
this.index = index;
return this;
}
public String getTotal() {
return total;
}
public Response setTotal(String total) {
this.total = total;
return this;
}
public String getPersize() {
return persize;
}
public Response setPersize(String persize) {
this.persize = persize;
return this;
}
public String getTotalPages() {
return totalPages;
}
public Response setTotalPages(String totalPages) {
this.totalPages = totalPages;
return this;
}
public String getMessage() {
return message;
}
public Response setMessage(String message) {
this.message = message;
return this;
}
public String getToken() {
return token;
}
public Response setToken(String token) {
this.token = token;
return this;
}
public String getUuid() {
return uuid;
}
public Response setUuid(String uuid) {
this.uuid = uuid;
return this;
}
public String getPhoneVCode() {
return phoneVCode;
}
public Response setPhoneVCode(String phoneVCode) {
this.phoneVCode = phoneVCode;
return this;
}
}
StringBuffer和String的线程对比:
String是一次性的,一旦初始化后就不能改变String对象的值.除非指向另一个String对象.
所以不存在线程安全问题.
而StringBuffer对象可以在创建之后不断的改变.为了保证当前线程操作的StringBuffer不受其它线程影响,所以就把StringBuffer设计成了线程安全的.