当前位置: 首页 > 面试题库 >

串联一个空字符串来进行字符串转换真的那么糟糕吗?

潘刚洁
2023-03-14
问题内容

假设我有两个char变量,后来我想将它们连接成一个字符串。这就是我要做的:

char c1, c2;
// ...

String s = "" + c1 + c2;

我见过有人说"" +“把戏”是“丑陋的”等,因此您应该使用String.valueOfCharacter.toString代替。我更喜欢这种构造,因为:

  • 如果可能,我更喜欢使用语言功能而不是API调用
    • 通常,该语言通常不是比API更稳定的语言吗?
    • 如果语言功能仅隐藏API调用,则更强烈的理由更喜欢它!
    • 抽象!隐藏是好的!
  • 我喜欢,c1并且c2在视觉上处于同一水平
    • String.valueOf(c1) + c2 暗示一些特别之处 c1
  • 更短

是否真的有一个很好的论点,为什么String.valueOfCharacter.toString更可取"" +

琐事:在中java.lang.AssertionError,以下行出现7次,每种都有不同的类型:

    this("" + detailMessage);

问题答案:

你的论点很好;这是Java语言中表达能力更强的领域之一,而且"" +正如您所发现的那样,该习惯用法似乎根深蒂固。

请参阅JLS中的字符串串联。像这样的表达

"" + c1 + c2

相当于

new StringBuffer().append(new Character(c1).toString())
                  .append(new Character(c2).toString()).toString()

除了不需要所有中间对象(效率不是动机)之外。规范说一个实现可以使用StringBuffer或不使用。由于该功能是语言的内置功能,因此我认为没有理由使用更详细的形式,尤其是在已经很冗长的语言中。



 类似资料:
  • 本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果

  • 问题内容: 我正在从事Java代码优化。我不清楚或符号之间的区别: 第2行和第3行有什么区别? 问题答案: 这种方法使用StringBuilder创建结果字符串 此方法仅调用的静态方法来获取int的String版本 依次调用

  • 问题内容: 这是以前有关Java中的String初始化的一些问题的后续问题。 在用Java进行了一些小测试之后,我面临以下问题: 为什么我可以执行此语句 当str2一个String对象初始化为,但我不能调用方法toString()上str2?那么Java如何将空字符串对象和字符串文字串联起来? 顺便说一句,我还尝试将一个初始化为null和字符串文字的Integer连接起来,”a_literal_s

  • 问题内容: 在Python中,什么时候以及什么时候使用字符串连接与字符串替换比较容易。由于字符串连接的性能有了很大的提高,这(成为更多)是一种风格上的决定,而不是一种实际的决定吗? 举一个具体的例子,如何处理灵活的URI: 编辑:也有关于加入字符串列表和使用命名替换的建议。这些是中心主题的变体,即在什么时候做正确的方法?感谢您的回复! 问题答案: 根据我的机器,连接的速度(明显)更快。但是从风格上

  • 问题内容: 以下语句, 产生输出。 但是,以下内容 产生。 区别在哪里? 问题答案: 您会因为操作符优先级和字符串转换的结合而看到此行为。 JLS 15.18.1 指出: 如果只有一个操作数表达式的类型为String,则对另一操作数执行字符串转换(第5.1.11节),以在运行时生成字符串。 因此,第一个表达式中的右侧操作数将隐式转换为字符串: 但是对于第二个表达式,必须将复合赋值运算符与一起考虑。

  • 问题内容: Oracle Java Community网站上的一篇文章提供了以下方法作为示例(对于JPA Converter,但这并不相关): 将String y强制转换为String val有什么用?有正当的理由吗? 原始文章:JPA的新增功能 问题答案: 这样的转换是完全没有必要的。我可以想象那是以前 但是后来参数类型更改为,而作者只是忘了删除强制类型转换。