【问题标题】:Most efficient way to convert a single char to a CharSequence将单个字符转换为 CharSequence 的最有效方法
【发布时间】:2011-09-29 23:48:56
【问题描述】:

将单个 char 传递给期望 CharSequence 的方法的最有效方法是什么?

这就是我所拥有的:

textView.setText(new String(new char[] {c} ));

根据the answers given here,在输入是字符数组的情况下,这是一种明智的做法。我想知道是否有一个偷偷摸摸的捷径可以应用于单字符的情况。

【问题讨论】:

    标签: java android string char charsequence


    【解决方案1】:
    textView.setText(String.valueOf(c))
    

    【讨论】:

      【解决方案2】:

      查看Character.toString(char c) 方法的实现会发现它们使用的代码几乎与您使用的代码相同:

        public String toString() {
             char buf[] = {value};
             return String.valueOf(buf);
        }
      

      为了可读性,您应该只使用Character.toString( c )

      另一种有效的方法可能是

      new StringBuilder(1).append(c);
      

      使用+ 运算符肯定更有效,因为根据javadoc:

      Java 语言为字符串连接运算符 ( + ) 以及将其他对象转换为字符串提供了特殊支持。字符串拼接是通过StringBuilder(或StringBuffer)类及其append方法实现的

      【讨论】:

      • 感谢您的解释。我将接受已接受的答案,因为我怀疑 String 类可能有一个内置的单字符字符串表来有效地支持 valueOf() 功能。
      【解决方案3】:

      当您有少量字符时,您可以获得的最紧凑的 CharSequence 是 CharBuffer。用你的 char 值初始化它:

      CharBuffer.wrap(new char[]{c});
      

      话虽如此,使用字符串更具可读性和易于使用。

      【讨论】:

        【解决方案4】:

        简写,尽可能少输入字符:

        c+""; // where c is a char
        

        全文:

        textView.setText(c+"");
        

        【讨论】:

          【解决方案5】:

          没有串联的解决方案是这样的:

          Character.valueOf(c).toString();
          

          【讨论】:

            【解决方案6】:
            char c = 'y';
            textView.setText(""+c);
            

            【讨论】:

              【解决方案7】:

              添加到上面提到的答案(link),添加示例以使事情更清楚

              char c = 'a';
              CharSequence cs = String.valueOf(c);
              

              【讨论】:

              • @EricAya 你提到的答案使用了 textView 和 setText ,我不清楚它们的含义。因此,我做了这个例子,只是为了让它更清楚。我只想将其作为对原始答案的评论,但我没有足够的声誉。让我提一下原始答案的功劳
              • 我理解你的观点。尽管如此,String.valueOf(c) 是 OP 问题的解决方案,并且已经在另一个答案中提出。我认为不需要再次发布。
              猜你喜欢
              • 1970-01-01
              • 2018-06-10
              • 2012-11-06
              • 2010-11-26
              • 1970-01-01
              • 2017-12-30
              • 1970-01-01
              • 2020-10-24
              • 2016-05-25
              相关资源
              最近更新 更多