[Help]:如何构造只有一个字符的String

alphax 2008-01-31 04:34:19
我是这样子做的,

public String build(char c){
char[] carr = new char[1];
carr[0] = c;
return new String(carr);
}

我觉得好像比较累赘,请问,有没有直接一点的方法?

另,CharBuffer有没有可共直接创建的子类,貌似文档上没有提到
我想用作Reader.read的参数
...全文
107 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
alphax 2008-01-31
  • 打赏
  • 举报
回复
谢谢火龙果,谢谢各位,


最近通过不断的学习,我对java的性能很是担忧阿,先不说它是虚拟机平台,

就简单的作一个字符的string, 首先要call String.ValueOf(), 构造一个char[],然后再写一个字符,再构造一个string,然后从char[]中复制,最后再return,没有指针的代价太大了

就像上次问的那个问题,做一个int TryStrToInt(String s,ErrorCheck ec){},
先要做正则表达式匹配,然后再进行字符串到int的转换!或者通过异常来检测,先构造异常块,然后正式转换,如果错误,再进行异常unwiding,然后设置错误标志,再还有,还要通过一个ErrorCheck对象来返回是否发生了错误,而这个ErrorCheck还要再堆里面分配内存,然后初始化,为的只是返回一个boolean值,

有点接受不了

你们怎么看待这些问题?
  • 打赏
  • 举报
回复
allocate中需要指定缓冲区的容量。
  • 打赏
  • 举报
回复
呵呵,看错了,我还以为是用read作为参数呢。。。

是使用CharBuffer作为read的参数,呵呵,那可以使用 CharBuffer.allocate() 来创建 CharBuffer 实例的。
枫叶rain 2008-01-31
  • 打赏
  • 举报
回复
charbuffer下有很多方法啊
查一下api就可以啊
CharBuffer a ;
a.read(参数);
a.append(参数);
a.charAt(参数);
等等
不知道你问的是不是这样的?
  • 打赏
  • 举报
回复
第一个还可以使用 String.valueOf(c); Character.toString就是调用这个方法的。
不过这些实现内部与你的做法基本上是一致的,

String.valueOf的源代码:
public static String valueOf(char c) {
char data[] = {c};
return new String(0, 1, data);
}

CharBuffer都是采用静态方法allocate和wrap来创建类的,不能用read作为参数。

可以考虑使用BufferedReader,这个也是有缓冲区的。
alphax 2008-01-31
  • 打赏
  • 举报
回复
我的天啊,原来这么简单!
多谢了!!!

另,第二问有没有知道的弟兄?
sunwei_07 2008-01-31
  • 打赏
  • 举报
回复
路过……
healer_kx 2008-01-31
  • 打赏
  • 举报
回复
... ...
  • 打赏
  • 举报
回复
return Character.toString(c);

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧