Java字符串的十大问题
以下是排名前10位的常见关于Java字符串的问题。
1.如何比较字符串?用”==” 还是equals()?
简单来说,如果”==”测试是相等的,那么使用 equals()也是相等的。如果你想知道这两个对象是不是相同,你应该使用equals()。
如果你知道string interning那会让你更好理解。
2.在安全敏感信息方面为什么 char[] 优于字符串?
字符串是不可变的,这意味着一旦被创建,他们将保持不变,直到垃圾回收。但是数组话,你可以明确地改变它的元素。以这种方式,安全敏感信息(如密码)将不存在于系统中的任何地方。
3.可以使用string的switch 语法吗?
JDK7可以。从JDK 7中,我们可以使用字符串作为switch的条件。 JDK6版本(包括6)之前,我们不能使用字符串作为switch的条件。
|
|
4.怎么把字符串转换成整形
|
|
简单,如此频繁的使用,但是有时会被忽略。
5.怎么用空白来拆分字符串
我们可以使用正则表达式简单做分割。”\s”代表空格字符如”” “, “\t”, “\r”, “\n”。
|
|
6.substring() 实际做了什么?
在JDK6中,substring()方法提供了一个窗口给字符数组,它代表着现有的字符串,但不创建一个新的。要创建一个新的字符数组代表一个新的字符串,你可以做添加类似下面的一个空字符串:
|
|
这将创建一个新的字符数组,用来表示新的字符串。上述方法有时可以使你的代码更加快速,因为垃圾收集器收集未使用的大串,只保留了子字符串。
在Oracle的JDK7中,substring()创建一个新的字符数组,而不是使用现有的。JDK6和JDK7的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.怎么把一个字符串转换成date
|
|
10. 怎么计算字符串中出现#的次数
可以使用来自Apache Commons Lang包中的StringUtils的countMatches()方法。
|
|