1,数字可以转换成其他的进制的字符串时,能够使用Integer.toString的静态方法。
例子:
int value = 3; //2进制 String binaryValue = Integer.toString(value, 2); System.out.println("二进制的 3:" + binaryValue); int value16 = 31; System.out.println("十六进制的23:" + Integer.toString(value16, 16));
2 ,subString方法可能会造成内存泄露。比方说一个字符串,长度为100个char的字段A。然后subString,截出一个2个char的字段B。那么B的字段中的属性value还是会使一个100个char的数字。
当然,这还会影响split方法
/** * 演示SubString泄漏内存 */ @Test public void testSubStringLeak(){ String subString = this.subString(); /** * 在这里设断点。可以看到subString中的Value还是10个Char的数组 * value的值 * [a, b, c, d, e, f, g, h, i, g, h, m, n] */ System.out.println(subString); } private String subString(){ String origin = "abcdefghighmn"; return origin.substring(0, 2); }
3, 从代码实现上来说,String的实现是一个char的属性Value,offset是数组中的起始位置,然后count是数组中的截取。
4, replace,subString等的方法,我们希望的结果是返回值,其调用方法的对象,本身并不改变。
/**
* replace,或者其他String的方法,并不改变原来的值,
* 因为String是不可变的。处理的往往是返回值。
*/
@Test
public void testReplace(){
String s = "java";
String result = s.replace("j", "l");
System.out.println("origin s:"+s);
System.out.println("replaced result:"+result);
}
5,matches(String regex)
replaceFirst(String regex, String replacement)
replaceAll(String regex, String replacement)
replace(CharSequence target, CharSequence replacement)
split(String regex, int limit)
split(String regex)
都是借用java.util.regex 包下面的类来完成的。 Technorati 标签: JDK Source code