Java字符串热点问题汇总

1 比较字符串,用“==”还是equals()?

    “==”是用来比较字符串的引用地址,equals()是比较字符串的值。两个值相同的字符串用“==”比较结果有可能是false,而用equals()则一定为true。除非两个字符串是同一个new出来的对象,不然比较字符串值是否相同应该要用equals()。

2 对那些安全敏感的信息,用char[]存储要优于String?

    String是不可变的,它一旦被创建,就将永久驻留在内存中,直到垃圾回收器将其回收为止。而用数组存储方式,可以明确地改变数组中的元素,因此用数组方式,安全信息将有可能不存在系统内存的任何地方。

3 能否用字符串来声明switch语句?

    JAVA 7及以后的版本是支持的,在JDK 7中,允许使用字符串做switch语句的比较条件。jdk 6以前的版本,不能这样使用:

//java 7 only!

switch(str.toLowerCase()){

        case "a":

                   value = 1;

                  break;

       case "b":

                 value = 2;   

                break;

}

4 如何将字符串转换成数字int类型?

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

    很简单,但却会经常用到,也很容易被忽略。

5 如何用空格字符来分割字符串?

    可以使用正则表达式来分割字符串,“\s"表示空格字符,比如,"","\t","\r","\n"

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

6 subString()方法究竟是什么?

    在jdk6中,subString()方法用来在原字符串中提供一个截取字符的窗口,它并没有创建一个新的String实例。如果想创建新的字符数组,可以在subString()后加一个空字符:

    str.subString(m,n)+""

    这样就会创建一个String实例,上面的方法有时候可以让程序运行速度更快,因为垃圾回收器可以将没用的大字符串回收走,并保留其子字符串。

7 String、StringBuilder和StringBuffer哪个更优?

    String和StringBuilder:StringBuilder是可变的,也就是说用StringBuilder创建的字符串可以随时改变它。StringBuilder和StringBuffer:StringBuffer是同步的,它是线程安全(thread-safe)的,但效率要比StringBuilder差得多。

8 如何重复输出字符串?

    可以用StringUtils的repeat()方法来实现,StringUtils是Apache公共语言库的其中一个库类成员。

    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公共语言库中的StringUtils:

    int n = StringUtils.countMatches("1112222","1");

    System.out.println(n);


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值