下面是Java 中针对String经常被问到的10个问题.
1. 怎样比较String? 使用”==” 还是使用equals()?
简单地说, “==” 测试引用是否相等而equals() 测试是否值相等.
2. 为什么对于信息安全敏感的地方char[] 优于 String?
String不可变, 这意味着一旦创建,就不可以改变直到GC回收. 使用数组,你可以随时修改它的元素. 在这种情下,安全敏感的信息(e.g. 密码) 将不可以在 系统的任何地方出现。
3. String可以在switch中吗?
java7中可以. 参照 JDK 7。在java6及之前, 不能这样使用.
// java 7 only! switch (str.toLowerCase()) { case "a": value = 1; break; case "b": value = 2; break; } |
4. 怎样将string 转换为 int?
int n = Integer.parseInt("10"); |
5. 怎样将含有空格的字符串按照空格分隔?
String[] strArray = aString.split("\\s+"); |
6. substring() 方法真实作用?
在 JDK 6中, the substring()方法提供一个字符串的字串, 但是不会创建一个新的字符串. 为了实现创建一个新的字符数组,可以在后面加上一个空的字符串:
str.substring(m, n) + "" |
在Oracle JDK 7, substring() 创建新的字符串,不再使用已经存在的那字符串.
7. String vs StringBuilder vs StringBuffer
String vs StringBuilder: StringBuilder 可变,意味着你在创建它后可以修改它.
StringBuilder vs StringBuffer: StringBuffer是异步的, 这意味着它是线程安全的但是速度比StringBuilder慢.
8. 怎样重复一个String?
可以使用StringUtils的repeat()方法来实现.
String str = "abcd"; String repeated = StringUtils.repeat(str,3); //abcdabcdabcd |
9. 怎样将String类型转换为date?
String str = "Sep 17, 2013"; Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str); System.out.println(date); //Tue Sep 17 00:00:00 EDT 2013 |
10. 怎样计算一个字符在字符串中出现的次数?
int n = StringUtils.countMatches("11112222", "1"); System.out.println(n); |
Comments