[译]关于Java 字符串最常被问到的十个问题

本文解答了关于Java字符串的十个最常被问到的问题,包括如何比较字符串、为何安全信息倾向于使用字符数组、如何在多分支选择语句中使用字符串等。

(说明,该文章翻译自Top 10 questions of Java Strings)

下面是关于Java字符串最常被问到的十个问题

1.怎么去比较字符串?使用==还是使用equals()?

简单来说,"=="用来比较引用是否相等而"equals()用来比较值是否相等",除非你是要检查两个字符串的是否是相同的对象,你应该使用equals()。

如果你了解字符串截取原理的话那么就更好了。

2.为什么对于安全敏感的信息字符数组比字符串更受青睐

字符串是不可变的,这就意味着一旦他们被创建,他们就不会保持不变除非被垃圾回收器回收掉。可是对于一个字符数组你可以显示的改变他的元素值,而安全敏感的这些信息不回总是存在系统中。

3.我们可以在多分支选择语句中使用字符串吗

版本7是OK的,从JDK7开始,我们可以使用字符串作为多分支选择条件,在版本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.怎么使用空格去拆分字符串?

我们可以简单的时候正则表达式。"\s"表示空格"","\t","\r","\n"

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

6.subsring()方法实际上做了什么事情

在JDK6中,substring()方法针对已经存在的字符串给但是不会创建一个新的。为了创建一个用新的数组表示的新的字符串,你可以像下面这样添加一个空的字符串:

str.substring(m, n) + ""

这样讲创建一个新的字符数组用来表示新的字符串,上面的代码有时候可以让你的代码变得快速,因为垃圾回收器可以收集不再使用的字符串而只保留子串。

在Oracle JDK7中,substring()创建一个新的字符数组而不是使用原来已经存在的。请看substring() difference between JDK 6 and JDK 7.

7. String vs StringBuilder vs StringBuffer

String vs StringBuilder:StringBuilder 是可变的,这意味找你可以修改它在创建完以后。
StringBuilder vs StringBuffer:StringBuffer 是线程同步的,这意味着它是线程安全的但是比StringBuilder慢一些。

8.怎么去复制一个字符串?

在Python中,我们可以使用乘以一个数组去复制字符串。在Java中门可以使用 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.怎么统计一个字符在字符串中出现的次数?

使用 Apache Commons Lang包中的StringUtils类

int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);

转载于:https://www.cnblogs.com/zhangminghui/p/4211801.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值