1. 如何比较字符串?是用"=="还是equals()?
简单地讲,“==”是用来测试引用是否相同,而equals()是测试值是否相同。除非你是想检查两个字符串是否是同一个对象,你应该总是使用equals()方法(如果你知道 为什么Java中的字符串是不可变的 就能较好地理解这个问题了)。
2. 对于安全敏感信息来讲为什么使用char[]数组比String字符串更好?
String字符串是不可变的,也就是说一旦你创建了一个字符串,该字符串就会一直保持不变,直到垃圾回收机制确定该字符串不再使用而被回收。而对于char[]数组来说,你可以显式地改变其中每个字符的值,在这种情况下,安全敏感信息(比如密码)就不会在你的系统中到处出现。
3. 在switch语句中可以使用字符串吗?
从JDK7开始可以,但是JDK6及之前的版本是不支持字符串作为switch的条件。
// java 7 only!
switch (str.toLowerCase()) {
case "a":
value = 1;
break;
case "b":
value = 2;
break;
}
4. 如何将字符串转换成整型?
int n = Integer.parseInt("10");
5. 如何对含有各种空格符的字符串进行分割得到字符串数组?
需要使用正则表达式,“\s”表示所有的空格符,如" ", "\t", "\r", "\n"。
String[] strArray = aString.split("\\s+");
6. substring()方法内幕?
JDK6和JDK7的实现方法是有区别的,请参见JDK6和JDK7中的substring()方法
7. String vs StringBuilder vs StringBuffer
String vs StringBuilder: StringBuilder是可变的,也就是说创建了之后可以对其进行修改
StringBuilder vs StringBuffer: StringBuffer是synchronized的,也就是说StringBuffer是线程安全的,但是比StringBuilder要慢
8. 如何重复一个string?
在Python中,只需要给字符串乘上一个数字就可以重复该字符串了,而在Java中我们可以使用包Apache Common Lang中StringUtils的repeat()方法重复字符串,如下:
String str = "abcd";
String repeated = StringUtils.repeat(str,3);
//abcdabcdabcd
9. 如何将一个字符串转换成日期?
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. 如何计算字符串中某个字符的出现次数?
还是要使用Apache Common Lang
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);