Java 字符串

字符串優化處理

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章