Java string literal automatically interpreted as String object, but how?

后端 未结 3 1947
余生分开走
余生分开走 2021-01-12 00:42

What are the mechanics behind Java automatically interpreting string literals as String objects, since there are no overloaded operators and there is no default support for

3条回答
  •  温柔的废话
    2021-01-12 00:53

    It's a little of both.

    The JVM has byte codes for loading string literals onto the runtime stack, and these opcodes are specified in the JVM spec to work by pushing an appropriately-constructed String object onto the stack whose contents are equal to some string literal specified in the class file. There is no specification for how this is done other than that the String object must be interned, meaning that the transformation is implementation-specific.

    At the language level, the compiler can treat any String literal it sees as a complete String object for the purposes of type checking, and can then just write out the literal and the appropriate bytecodes into the class file.

提交回复
热议问题