JavaRush /Java 博客 /Random-ZH /关于 Java 字符串的 10 个最常见问题
ext4
第 20 级

关于 Java 字符串的 10 个最常见问题

已在 Random-ZH 群组中发布

这里提到了有关 Java 字符串的 10 个最常见问题

[翻译] Java 中字符串最常见的 10 个问题 - 1
  1. 如何比较字符串?使用什么:“ ==”或equals()

    简而言之,“ ==”比较对字符串的引用,但equals()比较这些字符串中包含的值。如果您不想检查两个字符串是否是同一对象,那么您应该使用equals().

    了解字符串池的概念也很有好处。

  2. 为什么优先使用char[]字符串 ( String) 来保护敏感信息?

    字符串是不可变的。这意味着一旦创建了字符串,在垃圾收集器运行之前它不会被修改。对于数组来说,很明显我们可以更改它的元素。这样,敏感信息(例如密码)将不会以明文形式存储在程序中的任何位置。

  3. 使用switch 语句时可以将字符串作为参数传递吗?

    是的,从 JDK 版本 7 开始。以前,在版本 6 中,这是不可能的。

    // java 7 only!
    switch (str.toLowerCase()) {
          case "a":
               value = 1;
               break;
          case "b":
               value = 2;
               break;
    }
  4. 如何将字符串转换为整数值?

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

    Java 中的其他基本类型也是如此。

  5. 如何将字符串拆分为空格分隔的行?

    最简单的方法是使用正则表达式。“ \s” 充当空白字符的替代品,例如“ ”、“ \t”、“ \r”、“ \n”。

    String[] strArray = aString.split("\\s+");
  6. <该方法实际上做了什么substring()

    在 JDK 6 中,该方法substring()显示现有字符串中的部分字符,但没有创建该字符串的单独实例。要创建一个表示为字符数组的新字符串,您可以添加一些空字符串,例如,如下所示:

    str.substring(m, n) + ""

    结果是一个字符数组,这是我们的新字符串。这种方法有时可以减少代码执行时间,因为垃圾收集器可以销毁未使用的大字符串并仅存储子字符串。

    在 Oracle JDK 7 中,该方法substring()创建一个新的字符数组,而不使用现有的字符数组。您还可以查看代表 JDK 6 和 JDK 7 中 substring() 方法之间差异的图表。

  7. String、StringBuilder、StringBuffer

    Stringvs StringBuilderStringBuilder可变,这意味着我们可以在对象创建后更改其内容。

    StringBuildervs StringBufferStringBuffer同步,这意味着它在同时从多个线程使用时可以正确运行,但比StringBuilder.

  8. 如何将一行重复多次?

    在Python中,我们可以简单地将一个字符串乘以一个数字n,然后它就会重复n次。repeat()在 Java 中,我们可以使用 Apache Commons Lang 库类中的方法StringUtils

    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. 如何统计字符串中某个字符出现的次数?

    StringUtils使用Apache Commons Lang 库中的类。

    int n = StringUtils.countMatches("11112222", "1");
    System.out.println(n);
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION