关于Java字符串的几个常见问题

列举几个关于Java字符串的常见问题并给出答案。

1. 如何比较两个字符串?用”==”还是”equals”?

  • “==”对比的是引用是否相同(是否同一个对象)
  • “equals”对比的是值是否相同

除非想要比较两个字符串是否是同一个对象,否则应该一直使用”equals”。

2. 为什么对安全性敏感的信息更喜欢用char[]而不是String来存储?

因为String是不可变对象,这就意味着只要String被创建,它们就会一直存在直到被垃圾回收器收集。因此,用String保存的信息安全性会降低。

3. 在switch语句中可以使用字符串吗?

从Java7开始,可以在switch语句中使用字符串。

switch (aString) {
case "a":
value = 1;
break;
case "b":
value = 2;
break;
}

4. 如何将字符串转为int?

int n = Integer.parseInt("10");

虽然很简单,但是使用频率很高。

5. 如何用空格切分字符串?

String[] strArray = aString.split("\\s+");

6. substring()方法会创建一个新字符串吗?

从Java7开始,substring()方法会创建一个新的char数组,而不是使用已经存在的。

在Java6中,substring()方法不会创建一个新的char数组,如果想创建新的,可以用以下代码:

str.substring(m,n) + "";

7. String vs StringBuilder vs StringBuffer

String是不可变的,StringBuilder和StringBuffer都是可变的。

StringBuffer是同步的,线程安全的,效率低。

StringBuilder是非同步的,非线程安全,效率比StringBuffer高。

欢迎关注公众号: FullStackPlan 获取更多干货

Copyright © 2016 - 2017 LBD All Rights Reserved.

访客数 : | 访问量 :