Java字符串的十大问题

本文深入探讨了Java中关于字符串处理的十个常见问题,包括比较字符串、安全信息存储、switch语句应用、字符串转整型、空格分割、substring方法、String与StringBuilder比较、字符串重复、日期转换和字符计数等核心主题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下是前10个经常被问到的Java字符串的问题。
 1.如何比较字符串?使用“==”或使用equals()方法?
 简言之,“==”是测试引用对象是否一样,而equals()是测试值是否相等。除非你要检查两个字符串引用的是不是同一个对象,否则你应该一般是使用equals()方法。
 如果你参阅string interning. 这将帮助你更好地理解。

2.为什么对于安全敏感信息会更倾向用char[]而不是String?
字符串是不可变的 ,这意味着字符串对象一旦被创建,他们会一直不会被改变直到垃圾收集器回收。但如果用一个数组,你可以明确地改变它的元素。这样的话,安全敏感信息(如密码)将不会存在于系统中的任何地方。

3.我们可以在swith语句中可以使用字符串吗?
JDK 7是完全可以用字符串作为switch语句中的条件版本,但JDK 6之前,我们是不可以用字符串来作为switch语句中的条件的。
// java 7 only!
switch (str.toLowerCase()) {
      case "a":
           value = 1;
           break;
      case "b":
           value = 2;
           break;

}


4.如何将字符串转换为int?
 int n = int n = Integer.parseInt("10");
很简单,但如此频繁使用甚至有时会被忽略。

5.如何用空白字符分割字符串?
我们可以使用正则表达式来轻而易举的拆分。 “\ s”代表空格字符,如“ ”,“\ t”,"\ r”,"\ n”。 
String[] strArray = aString.split("\\s+");

6 .字符串中的substring()方法是做什么的呢?
在JDK 6中,可以利用substring()方法返回一个字符数组来表示现有的字符串,但不会创建新的字符数组。要创建一个新的字符数组来表示一个新的字符串,你可以做添加类似下面的一个空字符串:
str.substring(m, n) + ""
这将创建一个新的字符数组,表示新的字符串。上面的方法有时可以使你的代码更快,因为垃圾收集器可以收集未使用的大字符串并且保留子字符串。
 在Oracle的JDK 7,子()创建一个新的字符数组,而不是使用现有的。可以查看 JDK 6和JDK 7substring() 区别示意图 。

7.String,StringBuilder,StringBuffer比较

String与StringBuilder:StringBuilder是可变的,这意味着您可以在创建后修改它。
StringBuilder与StringBuffer:StringBuffer是同步的,这意味着它是线程安全的,但比StringBuilder的速度较慢。

8.如何重复一个字符串?
在Python中,我们可以只乘一个数字就可以重复的字符串。在Java中,我们可以使用包org.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。如何计算一个字符串中一个字符的出现次数?
 使用包org.apache.commons.lang下的StringUtils类
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);

最后一个
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值