0

所以我的问题很简单;

  1. 谁是第一个使用加法运算符进行字符串连接的人?
  2. 如果是 Java,为什么他们决定这样做?
    • 看起来 Sun 明确禁止 Java 中的运算符重载,因为它允许您重新定义运算符,这打破了对该运算符的假设。
    • 然而他们决定实现一个字符串连接加法运算符,这违反了加法运算符的交换性质?
4

1 回答 1

1

根据 java 的说法,编写代码的程序员不能重载运算符,但只要 java 语言+运算符被重载,它就会对原语(例如 int 和 double)和 String 对象执行加法。

在像 C++ 这样支持运算符重载的语言中,您可以将+运算符转为执行减法,从而导致代码不佳。这就是 Java 设计人员不允许程序员重载运算符的情况。

在 JavaString中,对象在 Java 中受到特殊处理,因为它们在程序中经常使用。基元存储在调用堆栈中,这需要较少的存储空间并且操作起来更便宜。另一方面,对象存储在程序堆中,需要复杂的内存管理和更多的存储空间。
出于性能原因,Java 的 String 被设计为介于原语和类之间。

字符串文字存储在一个公共池中。这有利于内容相同的字符串共享存储以节省存储空间。这也是Java设计人员认为重载+字符串连接以提高性能并为程序员提供便利的情况。

于 2013-09-09T09:39:51.673 回答