Java中String字符串的常见10个问题

Java中String字符串的常见10个问题

1:怎么比较字符串? 是用"=="还是equals()方法。

总的来说,如果是引用则使用双等号"==",如果是比较字符串内容,则使用equals()方法。
除非你想比较两个对象是否相等(即是否为同一个对象时)时使用双等号"==",否则最好使用equals()方法。

2:为什么对于安全敏感的信息,char[]字符数组要优于String字符串。

String字符串是不可变的对象,这就意味着,它一但被创建,就不可以更改直到被垃圾回收器处理掉。
使用数组,你则可以改变它的元素。通过这种方式,安全敏感的信息(例如:密码)就不会保存在当前
系统的任何地方。

3:在switch语句中可以使用String类型吗?

在JDK 7的版本中当然是可以的,我们可以使用String类型作为switch语句中的条件。
在JDK 6以前的版本中是不能使用String类型作为switch语句的条件的。
//在jdk 7 中有效
switch (str.toLowerCase()) {
case "a":
value = 1;
break;
case "b":
value = 2;
break;
}

4:怎么把String类型的数字转换为int类型。

int n = Integer.parseInt("10");
很简单吧,但是如此常用的,有时候却被忽略。
(把int类型的数字,转换为String类型的字符串
String number = String.valueOf("10");


5: 怎么使用空格符来拆分String字符串。

我们可以简单的使用String类的split()方法,带正则表达式的参数来拆分。
"\s"表示空格符,就像" ","\t","\r","\n"(空,制表位,换行符,回车符)

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

6:substring()方法实际上是怎么实现的?
在JDK 6中,substring()方法只是给出了一个代表已经存在的String字符串的数组,但并不是新建了一个。
通过新建一个char字符数组,来代替新建一个String字符串,这样你就可以在新的char字符数组后面添加空的String字符串
如下:
str.substring(m, n) + ""

通过这种新建char字符数组来代替新建一个字符串,可以使代码跑的更快。
原因在于,这样做垃圾回收器就会回收不使用的大的String字符串(原来的字符串),只保留需要的子字符串。

7. String ,StringBuilder ,StringBuffer的区别
String vs StringBuilder:StringBuilder是可变对象,这就意味着创建后可以修改。String对象时不可变对象,……
StringBuilder vs StringBuffer: StringBuffer是线程安全的,它使用synchronized来保持同步。它是线程安全的就比非线程
安全的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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值