您的位置:首页 > 编程语言 > Java开发

关于Java String的10个常见问题

2014-01-06 14:18 381 查看

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: