【问题标题】:How can I get the whole String printed out and not only the single character?我怎样才能打印出整个字符串而不仅仅是单个字符?
【发布时间】:2020-01-11 10:41:35
【问题描述】:

这是我的问题:我正在构建一个 StringBuilder 并且我构建了一个 toLowerCase() 方法,它只返回一个字符而不是整个字符串。

 public MyStringBuilder1 toLowerCase() {
      String newStr = "";
      for (int i = 0; i < s.length(); i++) {
        if (s.charAt(i) >= 'A' && s.charAt(i) <= 'Z') {
          newStr = newStr + (char)(s.charAt(i) + 32) + "";
        }
      }
      return new MyStringBuilder1(newStr);
    }

 public static void main(String[] args) { 
      // Create a MyStringBuilder1 object 
      MyStringBuilder1 str1 = new MyStringBuilder1("Radixsort"); 
      // Display string as lowercase 
      System.out.println("\nString to lower case: " + str1.toLowerCase());
  }

【问题讨论】:

  • 您的意见是什么? MyStringBuilder1 方法里面有什么?
  • 提示:您忽略了非大写字符。您的调试器是您的朋友。学会使用它。这非常简单,可以帮助您找到一些像这样的琐碎问题。现在学习使用它。您将避免浪费时间。
  • 你的构造是什么,你是如何得到结果的?
  • @gauravJeswani ```public static void main(String[] args) { // 创建一个 MyStringBuilder1 对象 MyStringBuilder1 str1 = new MyStringBuilder1("Radixsort"); // 将字符串显示为小写 System.out.println("\nString to lower case: " + str1.toLowerCase());´´´´

标签: java stringbuilder lowercase


【解决方案1】:

您可以在StringBuilder 上使用toString() 以返回String

但您没有利用 StringBuilder 的力量,当涉及到长字符串时,它们的串联可能会占用大量资源

为了连接字符串,将一个字符串复制到内存中的一个新插槽,然后再复制下一个

StringBuilder 提供类似 List 的行为,您可以轻松地将 char 动态附加到 stringBuilder

所以而不是

newStr = newStr + (char)(s.charAt(i) + 32) + "";

你最好使用

stringBuilder.append((char)(s.charAt(i) + 32)) 

建议阅读以下tutorial

记住,显着的性能提升会随着字符串长度的增加而增加,但是对于短字符串,编译器优化会产生更好的性能

【讨论】:

    猜你喜欢
    • 2021-06-07
    • 2017-08-28
    • 2021-12-21
    • 1970-01-01
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多