Java 使用运算符+;用于字符串连接,从何时开始?

Java 使用运算符+;用于字符串连接,从何时开始?,java,operator-overloading,string-concatenation,Java,Operator Overloading,String Concatenation,所以我的问题很简单, 谁是第一个使用加法运算符进行字符串连接的人 如果是Java,他们为什么决定这么做? Sun似乎明确禁止Java中的运算符重载,因为它允许您重新定义运算符,这打破了对该运算符的假设 然而,他们决定实现一个字符串连接加法运算符,这违反了加法运算符的交换属性 根据java的说法,编写代码的程序员不能重载运算符,但就java语言+而言,运算符是重载的,它对原语(如int和double)和字符串对象执行加法 支持C++的运算符重载的语言,可以将 +/Cux>运算符执行减法,导致代

所以我的问题很简单,

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

  • 根据java的说法,编写代码的程序员不能重载运算符,但就java语言
    +
    而言,运算符是重载的,它对原语(如int和double)和字符串对象执行加法

    支持C++的运算符重载的语言,可以将<代码> +/Cux>运算符执行减法,导致代码不完善。java设计者不允许程序员覆盖操作符。p> 在Java

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

    字符串文本存储在公共池中。这有助于共享具有相同内容的字符串的存储,以节省存储空间。这也是Java设计人员认为为字符串压缩重载
    +
    的情况,以提高性能并方便程序员


    严格来说,所有的算术运算符都是重载的。该语言不允许用户重载运算符,但语言设计者为自己保留了这一权利。这真的会有什么不同吗?我不知道,但我要试一试:文本连接的第一次使用“+”来自于第一次编写的烹饪食谱,如“+2个鸡蛋”@Mada:这不就是通常的加法吗?与单位的概念一起应用?@chrylis:像这样更好?显然,如果你定义加法运算符来执行减法,那么结果就是糟糕且可维护的代码,但是对我来说,我不相信,这比定义一个破坏交换属性的加法运算符糟糕得多。这两种情况都打破了关于加法运算符行为的假设。然而,我必须承认,随着时间的推移,我已经接受了这一点,将其作为Java编程语言的一部分,但起初,这对我来说似乎真的有缺陷,我仍然试图避免像这样误用加法运算符。另外,你的答案也没有说明这种做法是从Java还是其他编程语言开始的。