这里提到了有关 Java 字符串的 10 个最常见问题
-
如何比较字符串?使用什么:“
==
”或equals()
?简而言之,“
==
”比较对字符串的引用,但equals()
比较这些字符串中包含的值。如果您不想检查两个字符串是否是同一对象,那么您应该使用equals()
.了解字符串池的概念也很有好处。
-
为什么优先使用
char[]
字符串 (String
) 来保护敏感信息?字符串是不可变的。这意味着一旦创建了字符串,在垃圾收集器运行之前它不会被修改。对于数组来说,很明显我们可以更改它的元素。这样,敏感信息(例如密码)将不会以明文形式存储在程序中的任何位置。
-
使用switch 语句时可以将字符串作为参数传递吗?
是的,从 JDK 版本 7 开始。以前,在版本 6 中,这是不可能的。
// java 7 only! switch (str.toLowerCase()) { case "a": value = 1; break; case "b": value = 2; break; }
-
如何将字符串转换为整数值?
int n = Integer.parseInt("10");
Java 中的其他基本类型也是如此。
-
如何将字符串拆分为空格分隔的行?
最简单的方法是使用正则表达式。“
\s
” 充当空白字符的替代品,例如“\t
”、“\r
”、“\n
”。String[] strArray = aString.split("\\s+");
-
<该方法实际上做了什么
substring()
?在 JDK 6 中,该方法
substring()
显示现有字符串中的部分字符,但没有创建该字符串的单独实例。要创建一个表示为字符数组的新字符串,您可以添加一些空字符串,例如,如下所示:str.substring(m, n) + ""
结果是一个字符数组,这是我们的新字符串。这种方法有时可以减少代码执行时间,因为垃圾收集器可以销毁未使用的大字符串并仅存储子字符串。
在 Oracle JDK 7 中,该方法
substring()
创建一个新的字符数组,而不使用现有的字符数组。您还可以查看代表 JDK 6 和 JDK 7 中 substring() 方法之间差异的图表。 -
String、StringBuilder、StringBuffer
String
vsStringBuilder
:StringBuilder
可变,这意味着我们可以在对象创建后更改其内容。StringBuilder
vsStringBuffer
:StringBuffer
同步,这意味着它在同时从多个线程使用时可以正确运行,但比StringBuilder
. -
如何将一行重复多次?
在Python中,我们可以简单地将一个字符串乘以一个数字
n
,然后它就会重复n次。repeat()
在 Java 中,我们可以使用 Apache Commons Lang 库类中的方法StringUtils
。String str = "abcd"; String repeated = StringUtils.repeat(str,3); //abcdabcdabcd
-
如何将字符串转换为日期?
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
-
如何统计字符串中某个字符出现的次数?
StringUtils
使用Apache Commons Lang 库中的类。int n = StringUtils.countMatches("11112222", "1"); System.out.println(n);
GO TO FULL VERSION