工学1号馆

home

Java Strings中的10个常见问题

By Wu Yudong on November 02, 2015

下面是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

No comments yet.
To verify that you are human, please fill in "七"(required)