关于Java String的10个常见问题

1. 如何比较字符串?是用"=="还是equals()?

         简单地讲,“==”是用来测试引用是否相同,而equals()是测试值是否相同。除非你是想检查两个字符串是否是同一个对象,你应该总是使用equals()方法(如果你知道 为什么Java中的字符串是不可变的 就能较好地理解这个问题了)。

2. 对于安全敏感信息来讲为什么使用char[]数组比String字符串更好?

         String字符串是不可变的,也就是说一旦你创建了一个字符串,该字符串就会一直保持不变,直到垃圾回收机制确定该字符串不再使用而被回收。而对于char[]数组来说,你可以显式地改变其中每个字符的值,在这种情况下,安全敏感信息(比如密码)就不会在你的系统中到处出现。

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

         从JDK7开始可以,但是JDK6及之前的版本是不支持字符串作为switch的条件。

// java 7 only!
switch (str.toLowerCase()) {
      case "a":
           value = 1;
           break;
      case "b":
           value = 2;
           break;
}

4. 如何将字符串转换成整型?

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

5. 如何对含有各种空格符的字符串进行分割得到字符串数组?

需要使用正则表达式,“\s”表示所有的空格符,如" ", "\t", "\r", "\n"。

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

6. substring()方法内幕?

JDK6和JDK7的实现方法是有区别的,请参见JDK6和JDK7中的substring()方法

7. String vs StringBuilder vs StringBuffer

String vs StringBuilder: StringBuilder是可变的,也就是说创建了之后可以对其进行修改

StringBuilder vs StringBuffer: StringBuffer是synchronized的,也就是说StringBuffer是线程安全的,但是比StringBuilder要慢

8. 如何重复一个string?

在Python中,只需要给字符串乘上一个数字就可以重复该字符串了,而在Java中我们可以使用包Apache Common 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 Common Lang

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值