【问题标题】:Can we use toString() function with stringbuffer object-'sb'?我们可以将 toString() 函数与 stringbuffer object-'sb' 一起使用吗?
【发布时间】:2019-06-22 14:26:06
【问题描述】:

这是反转字符串保留空间位置的程序。在这个问题中,无论是否使用带有sbtoString() 函数,输出都是正确的。有一件事我不明白sb 是一个StringBuffer 对象,那么我们如何在最后一个打印语句中使用该对象,因为该对象需要转换为字符串格式。

这是jdk 1.8.0的代码

public static void main(String args[])
{
    Scanner sc=new Scanner(System.in);
    String st="";
    st=sc.nextLine();
    StringBuffer sb=new StringBuffer(st.replace(" ",""));
    sb=sb.reverse();
    for(int i=0;i<st.length();i++)
    {
        if(st.charAt(i)==' ')
        {
            sb.insert(i,' ');
        }
    }
    System.out.println(sb);

}

【问题讨论】:

  • 注意:StringBuffer 有它所有的方法synchronized。这现在被认为是不必要的,并且是关于 Java 对象应该如何工作的历史错误假设的一部分。 StringBuffer 在 2004 年被 StringBuilder 取代,它是非同步的,但其他方面相同,因此更轻量级。

标签: java string function tostring


【解决方案1】:

PrintStream(如System.outSystem.err)有几个重载的println 方法。在这里,具体来说,您正在调用println(Object)。此方法在其参数上调用String.valueOf,然后打印它。对于非空参数,相当于在其上调用toString()

【讨论】:

  • 感谢您的即时回复!但是我想澄清一件事,我们必须使用 sb.toString() 以字符串格式显示它,但我很惊讶在不使用它的情况下看到答案。你能用更一般的方式解释一下吗?
  • @DivyanshuSharma println 将参数转换为字符串本身。你不需要自己打电话给toString
  • 或者,如果你需要String,你必须调用toString,因为println也接受Object必须不叫它
猜你喜欢
  • 1970-01-01
  • 2012-04-25
  • 2022-01-04
  • 2012-07-13
  • 1970-01-01
  • 2021-06-02
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多