0

したがって、私の質問はかなり単純です。

  1. 文字列連結に加算演算子を最初に使用したのは誰ですか?
  2. それが Java だった場合、なぜそうすることにしたのでしょうか。
    • Sun は、Java での演算子のオーバーロードを明示的に禁止しているようです。これにより、演算子の再定義が可能になり、その演算子に関する想定が破られます。
    • それでも、文字列連結加算演算子を実装することを決定しましたが、これは加算演算子の可換プロパティに違反していますか?
4

1 に答える 1

1

Java によると、コードを書くプログラマーは演算子をオーバーロードできませんが+、プリミティブ (int や double など) と String オブジェクトで加算を実行する Java 言語演算子がオーバーロードされる限り。

C++ のような演算子のオーバーロードをサポートする言語では、+演算子を変更して減算を実行できますが、その結果、コードが貧弱になります。これは、Java 設計者がプログラマーに演算子のオーバーロードを許可しない場合です。

JavaStringオブジェクトは、プログラムで頻繁に使用されるため、Java では特別な扱いを受けます。プリミティブはコール スタックに格納されるため、必要なストレージ スペースが少なく、操作が安価です。一方、オブジェクトはプログラム ヒープに格納されるため、複雑なメモリ管理とより多くのストレージ スペースが必要になります。
パフォーマンス上の理由から、Java の String はプリミティブとクラスの間にあるように設計されています。

文字列リテラルは共通プールに格納されます。これにより、ストレージを節約するために同じ内容の文字列のストレージを共有することが容易になります。これは、Java 設計者が+パフォーマンスを向上させ、プログラマーに利便性を与えるために文字列連結をオーバーロードすることを考えているケースでもあります。

于 2013-09-09T09:39:51.673 に答える