众所周知String作为不可修改的对象,即每次更改String都会产生一个新的字符串对象,与之相对应的StringBuffer类的对象能够进行多次修改并且不会产生新的未使用的对象,因此在内存上要优于String对象
- StringBuffer对象的初始化
对于StringBuffer对象,初始化时不可将null直接赋予其。
StringBuffer a=new StringBuffer()
这是初始化其为空值的正确写法
如果想要初始化具有初始值,则可通过
StringBuffer a=new StringBuffer(‘abc’);
此时其初始值为abc
对于StringBuffer而言不可直接强制类型转化,即
StringBuffer a=(StringBuffer)‘ac’
是错误的使用方法
对于StringBuffer转化为String可使用
String b=a.toString(),
对于String转为StringBuffer可使用
StringBuffer b=new StringBuffer(string)
StringBuffer的常用方法解析
1.将指定的字符串追加到此字符序列。
public StringBuffer append(String s);
2.将此字符序列用其反转形式取代。
public StringBuffer reverse()
3.将 int 参数的字符串表示形式插入此序列中。
public insert(int offset, int i)
4.使用给定 String 中的字符替换此序列的子字符串中的字符。
replace(int start, int end, String str)
在项目中
获取到十进制的刷卡数据:0003085779
转化成十六进制: 2f15d3,前面的0是没有效的。
但是要比对时拿到这个十六进制的数不能去注册卡需要换成长度为八位的字符串。所以,要在前面增加两个0
JSONArray jsonArray = jsonObject.getJSONArray("data");
for (int i = 0; i < jsonArray.length(); i++) {
//十进制的卡号转化成16进制
String Hexadecimal = Integer.toHexString(jsonArray.getInt(i));
//不足长度为八的字符串要在前面补0
String Octal= addZeroForNum(Hexadecimal, 8);
//得到每一张卡存储到集合
ActivityContents.mManageKey.add(Octal);
}
想将int 转String 位数不够前面补零
public static String addZeroForNum(String str,int strLength) {
int strLen =str.length();
if (strLen <strLength) {
while (strLen< strLength) {
StringBuffer sb = new StringBuffer();
sb.append("0").append(str);//左补0
// sb.append(str).append("0");//右补0
str= sb.toString();
strLen= str.length();
}
}
return str;
}