字符串優化處理
String str1 = "abc";
String str2 = "abc";
String str3 = new String("abc");
str1 == str2; // true 常量池的優化
str1 == str3; // false
str1 == str3.intern(); // true 常量池的引用
subString()方法的內存泄漏
public String getSubString(String str, int begin, int end){
return new String(str.substring(begin, end));// 返回新的字符串,防止溢出
}
字符串的分割和查找
// 方法1 (用時3500ms)
"a;b,c:d".split("[;|,|:]"); // ["a", "b", "c", "d"]
// 方法2 (用時2500ms)
StringTokenizer st = new StringTokenizer(orgStr, ";");
while (st.hasMoreTokens()){
st.nextToken();
}
// 方法3 (用時700ms)
String tmp = orgStr;
while(true){
String splitStr = null;
int j = tmp.indexOf(";"); // 找分隔符的位置
if (j<0) break; // 沒有分隔符存在
splitStr = tmp.substring(0,j); // 找到分隔符,截取子字符串
tmp = tmp.substring(j+1); // 剩下需要處理的字符串
}
判斷字符串是否以"abc"開始
// 方法1 (用時30ms)
orgStr.startsWith("abc");
// 方法2 (用時15ms)
int len = orgStr.length();
if (orgStr.charAt(0) == "a" && orgStr.charAt(1) == "b" && orgStr.charAt(2) == "c"){
System.out.println("orgStr是以abc開始");
}
字符串相加優化
StringBuffer sb = new StringBuffer(5888890); // 線程安全,指定大小可以提升性能
StringBuilder sb = new StringBuilder(5888890);
StringUtils.leftPad自動補全功能
"Product_" + StringUtils.leftPad(proId, 32 - "Product_".length(), "0")
String id2 = productId.replaceAll("^[^1-9]+", "");
格式化number
pd.put("price", SystemConfigUtil.getOrderScaleBigDecimal(new BigDecimal(_getString(pd, "price"))));
BigDecimal 精度處理
@Column(precision = 15, scale = 5, nullable = false, name = "total_amount")
public BigDecimal getTotalAmount() {
return totalAmount;
}
// 精度處理
public void setTotalAmount(BigDecimal totalAmount) {
this.totalAmount = SystemConfigUtil.getOrderScaleBigDecimal(totalAmount);
}
// 數據庫字段精度設置爲5
java字符串替換
String s = sb.toString();
String patternString = "data-(edit|style)\\s*=\\s*\"\\s*\\{.+?\\}\\s*\"";
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(s);
StringBuffer ssb = new StringBuffer();
while(matcher.find()){
matcher.appendReplacement(ssb, "");
}
matcher.appendTail(ssb);
enum與int、String之間的轉換
https://blog.csdn.net/weixin_37946518/article/details/93073627