在查看在线代码示例时,我有时会通过使用new运算符将String常量赋值给String对象.
例如:
String s;
...
s = new String("Hello World");
Run Code Online (Sandbox Code Playgroud)
当然,这与之相比
s = "Hello World";
Run Code Online (Sandbox Code Playgroud)
我不熟悉这种语法,也不知道目的或效果是什么.由于String常量通常存储在常量池中,然后以JVM处理String常量的任何表示形式存在,甚至还会在堆上分配任何内容?
当我看到equals()方法的实现时,它什么也没做,只是做了什么==.所以我的问题是,当我们有==运营商做同样的工作时,需要将它作为单独的方法吗?
受到关于这个问题的评论的启发,我很确定Java String是在运行时而不是编译时间实现的 - 当然,事实上可以在不同的时间编译类,但在运行时仍然会指向相同的引用.
我似乎无法找到任何证据支持这一点.谁能证明这一点?