了解java.lang.String s = new String(“ hello”)和String hold =“ hello”之间的区别

use*_*837 1 java android

我碰到了这段代码,有些困惑

java.lang.String s = new String("hello");
Run Code Online (Sandbox Code Playgroud)

我不确定将哪个变量s初始化为java.lang.String,以及此vs String hold =“ hello”的目的是什么。我试图浏览一些文档,但找不到任何东西。

Sot*_*lis 5

这真的是不好的编程风格

java.lang.String s = new String("hello");
Run Code Online (Sandbox Code Playgroud)

请记住,其中的所有类java.lang都是自动导入的。如果您String在同一个程序包中有一个称为的类,则也将导入java.lang.String该类,但会遮盖该类。这可能是完全限定此类的原因

java.lang.String s;
Run Code Online (Sandbox Code Playgroud)

但是在这种情况下,您只能分配一个java.lang.String对它的引用,因为该类已经final扩展,因此无法扩展。传统的做法是

java.lang.String s = new java.lang.String("hello");
Run Code Online (Sandbox Code Playgroud)

如果你在问

java.lang.String s = new String("hello");
Run Code Online (Sandbox Code Playgroud)

java.lang.String s = "hello";
Run Code Online (Sandbox Code Playgroud)

然后查看其他答案或重复的答案。