以下是常见关于Java中String排名前10位的问题。
1. 如何比较字符串(String)?使用“==”或者equals()方法?
简而言之,“==”判断引用是否相同,而equals() 方法测试值是否相等。除非你想检查两个字符串是否为同一个对象,那你应该总是使用equals()方法。
如果你了解string interning相关概念,将能更好的理解。
2. 涉及安全敏感信息方面,为什么char[]优于字符串?
字符串是不可变的,这意味着一旦被创建,在垃圾回收前它们将保持不变。对于一个数组,你可以明确地改变它的元素。这样的话,安全敏感信息(如密码)将不会在系统中暴露。
3. 在swith语句中可以使用字符串作为条件吗?
对于JDK 7可以。从JDK 7起 ,我们可以使用字符串作为switch条件,但版本Java 6之前,这样是不行的。
// java 7 only!
switch (str.toLowerCase()) {
case "a":
value = 1;
break;
case "b":
value = 2;
break;
}
4. 如何将字符串转换为int类型?
int n = Integer.parseInt("10");
很简单,使用频繁但有时会被忽略。
5. 如何以空格字符分隔字符串?
String[] strArray = aString.split("\\s+");
String[] split(String regex)方法根据给定正则表达式的匹配拆分此字符串,所得数组中不包括结尾空字符串。\s表示空格,第一个\用于转义。
6. 字符串中的substring()方法到底做了什么?
在JDK 6中,substring()方法返回一个字符数组,其表示现有的字符串而不会创建新字符串。为了通过一个新的字符数组创建一个新的字符串,可以按以下方法添加一个空字符串:
str.substring(m, n) + ""
这将创建一个新的字符数组,表示新的字符串。有时上面的方法可以使你的代码更快,因为垃圾回收机制可以回收未使用的大字符串并仅保留子字符串。
在JDK 7中,substring()创建一个新的字符数组,而不是使用现有字符串。可以查看示意图区分的JDK 6和JDK 7中substring()的区别。
7. String, StringBuilder, StringBuffer之间的对比
String vs StringBuilder:StringBuilder是可变的,这意味着你可以创建并修改字符串。
StringBuilder vs StringBuffer:StringBuffer是同步的,这意味着它线程安全,但比StringBuilder速度慢。
8. 如何重复字符串?
在Python中,我们可以通过只乘一个数字就可以重复字符串。在Java中,我们可以使用包org.apache.commons.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. 如何计算一个字符串中一个字符的出现次数?
使用包org.apache.commons.lang下的StringUtils类
没有评论