Character.isLetterOrDigit(char);
1. 区别三种初始化
那些看起来空的String
String str1 = new Sring();
String str2 = "";
String str3 = null;
str1和str2都分配了实际内存空间,都有值。不同在于,前者的值是绝对的空,后者值是相对的空(空字符串)。
str3没有分配内存空间,无值。
2. 判断string是否为空
最安全的写法是:(str 是String类型的一个自定义对象名)
str == null || str.isEmpty()
str.length() == 0与str.isEmpty()等价,jdk 1.6以后的版本就开始支持String.isEmpty(),jdk 1.5不支持。
对于null的字符串,用str.isEmpty()会报空指针异常(NullPointerException)
3. 合理利用String, StringBuilder, StringBuffer
String是字符串常量,字符串长度不可变(immutable)
StringBuilder是字符串变量,非线程安全
StringBuffer是字符串变量,是线程安全的(synchronized)
参考:http://blog.csdn.net/kingzone_2008/article/details/9220691
StringBuilder在需要频繁改变字符串的,且单线程时,最佳选择,用.append代替‘+’,输出时要.toString()
Leetcode Problem--Reverse Words in a String
public String reverseWords(String s) {
String[] parts = s.trim().split("\\s+");
StringBuilder out = new StringBuilder("");
for(int i = parts.length-1; i>0; i--){
out.append(parts[i] + " ");
}
out.append(parts[0]);
return out.toString();
}
4. 例题
Leetcode Problem--Valid Palindrome