美文网首页Java学习笔记Java
十个最常见的java字符串问题

十个最常见的java字符串问题

作者: 打铁大师 | 来源:发表于2018-04-20 09:45 被阅读40次

    原文戳这里:Top 10 questions of Java Strings

    以下是10个最常见的java字符串问题。

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

    简单的说,"=="用来测试是否引用了同一个字符串对象。equals()用来测试字符串值是否相等。除非你想要检测两个字符串是否是相同的对象,否则你应该总是使用equals()

    2. 对于安全敏感类的信息,为什么char[]优于String?

    字符串是不可变的,这意味着一旦它们被创建,它们将保持不变,直到垃圾收集器清理为止。对于数组,你可以明确的修改它的元素。这样一来,安全性敏感信息(比如密码)将不会出现在系统的任何地方。

    3. 是否可以在switch语句中使用String

    java7及以后是可以的。从JDK7开始,我们可以使用string作为switch的条件,在JDK6之前,我们不能使用string作为switch语句的条件。

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

    4.如何把string转成int?

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

    简单,但是使用很频繁还容易忘记。

    5.如何用空白符分割字符串?

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

    6.substring()方法究竟做了什么?

    在 JDK6中,substring()方法给出了一个表示现有String的字符数组的窗口,而不是创建一个新字符串。为了创建一个由新char数组表示的新字符串,你可以添加一个空字符串,代码如下所示:

    str.substring(m, n) + ""
    

    这将创建一个表示新字符串的新的char数组。上面的代码,有时会让你的代码运行更快,因为垃圾回收器会收集无用的大字符串,并仅仅保留子字符串。

    在Oracle JDK 7中,substring()会创建一个新的char数组,而不是使用现有的char数组。想了解substirng()在JDK6跟JDK7之间的差异,请戳这篇文章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中,我们可以使用StringUtils中的repeat()方法来实现。StringUtils来自 Apache Commons Lang package.

    import org.apache.commons.lang3.StringUtils;
    
    String str = "abcd";
    String repeated = StringUtils.repeat(str,3);
    

    9.如何把字符串转换为日期?

    try {
            String str = "Sep 17, 2013";
            Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str);
            System.out.println(date);
     }catch (Exception e){
            
     }
    

    10.如何去统计一个字符在字符串中出现的次数?

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

    相关文章

      网友评论

        本文标题:十个最常见的java字符串问题

        本文链接:https://www.haomeiwen.com/subject/iwxakftx.html