我看到在Java中将char
转换为String
有四种选择。
v = Something.lookup(new String((char)binaryData[idx])); // SORRY! Wrong.
v = Something.lookup("" + (char)binaryData[idx]);
v = Something.lookup(String.valueOf((char)binaryData[idx]));
v = Something.lookup(Character.toString((char)binaryData[idx])));
我认为第一个选项最慢。第二个选项非常方便。我推测第三个选项可能会返回先前创建的String
实例,但我不确定,API文档也没有说明。选项四也是如此。如果能够重用实例,那么基于哈希的查找就可以利用String
中的hashCode()
缓存,这将非常有利。(虽然这个特性未在API文档中描述,但很多人告诉我)
我来自C++,感觉缺乏复杂性信息让人困扰。:-) 我的猜测正确吗?我们是否有任何官方文档声明了性能保证和缓存机制?
String.valueOf
,并且您是否已经衡量过其中任何一个呢?您知道这是否真的是代码的瓶颈吗?您是否尝试确定String.valueof
是否确实缓存了值?(很容易判断……)假设“binaryData”是一个“byte[]”,那么您可以轻松地自己构建一个带有256个字符串的“String[]”,以绝对保证缓存。 - Jon Skeetnew String()
创建新字符串实例很少是一个好主意,选项2是难看的隐式转换误用。 - biziclop