10.3 Java字符串的Top 10 问题

1.如何比较字符串 ?用== 还是用equals()?

简单来说,== 测试引用是否相等,equals()来测试值是否相等。除非你像检查两个字符串是不是同一个对象,你常常应该用的是equals().

2.为什么char[] 比String更适合保存敏感信息

字符串是不可变的,这意味着一旦它们被创建,它们将保持不变,直到垃圾收集器启动。使用数组,可以显示更改元素。这样,安全敏感信息(例如密码)将不会出现在系统的任何地方。

我们可以在switch语句中用String吗?

从JDK 7版本以后,我们可以使用string作为switch的条件。

// 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中,substring()方法给出一个表示现有字符串的字符数组的窗口,但不要创建一个新的字符串。 要创建一个由新char数组表示的新字符串,可以添加如下所示的空字符串:

str.substring(m,n)+“”
这将创建一个新的字符数组,代表新的字符串。 上述方法有时可以使代码更快,因为垃圾收集器可以收集未使用的大字符串并仅保留子字符串。

在Oracle JDK 7中,substring()创建一个新的char数组,而不是使用现有的char数组。 查看用于显示JDK 6和JDK 7之间的substring()差异的图表。

7. String vs StringBuilder vs StringBuffer

String vs StringBuilder:StringBuilder是可变的,这意味着你可以在创建后修改它。
StringBuilder vs StringBuffer:StringBuffer是同步的,这意味着它是线程安全的,但比StringBuilder慢。

8.如何重复字符串

在Python中,我们可以乘以一个数字来重复一个字符串。 在Java中,我们可以使用Apache Commons Lang包中的StringUtils的repeat()方法。

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. 如何计算字符串中字符出现的次数?

Use StringUtils from apache commons lang.

int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);

你可能感兴趣的:(10.3 Java字符串的Top 10 问题)