使用:
初始化String时有什么不同
- java.lang.String中
- String(only)
醇>
为什么要写完整包的名称?
答案 0 :(得分:2)
没有区别。 java.lang
包在所有java程序中隐式导入。
答案 1 :(得分:1)
如果没有定义自定义“String”类,则没有区别。
但是,如果您定义了自己的“String”类。然后你需要额外的java.lang来识别正确的String类。
答案 2 :(得分:1)
为什么要写完整包的名称?
在这种情况下,你不应该这样做。
正如@Asaph所述,java.lang
是隐式导入到每个类中。这意味着您的代码可以通过简单的类名称引用String
和其他类,例如Boolean
,System
和NullPointerException
。
您需要通过其完全限定名称(String
)引用java.lang.String
的唯一情况是:
如果您在某些反思API中将类名称作为String提供,或
如果你愚蠢地写了一个你自己的类,其简称是String
;例如com.example.stupid.String
,您已将 版本的String
明确导入其他类。
最佳做法是通过简单名称引用java.lang
中的类,而不是在其他包中使用相同的简单名称定义自己的类。
在一般情况下,这两种形式的含义完全相同,并且会为您提供完全相同的编译代码:
// version 1
package com.example.bar;
import com.example.foo.Foo;
public class Bar {
private Foo myFool;
...
}
// version 2
package com.example.bar;
public class Bar {
private com.example.foo.Foo myFool;
...
}
答案 3 :(得分:0)
没有区别
我们编写包以将其与项目中类似命名的类(如果有)区分开来。例如,如果您的项目还有一个名为String
的类,则java将不知道您要使用哪个String类 - 您的或者内置的java类。