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

标签 java android

<分区>

我看到这段代码,有点困惑

java.lang.String s = new String("hello");

我不确定什么变量 s 被初始化为 java.lang.String ,这个 vs String hold = "hello"的目的是什么。我试图查看一些文档,但找不到任何内容。

最佳答案

这真是糟糕的编程风格

java.lang.String s = new String("hello");

请记住,java.lang 中的所有类都是自动导入的。如果您在同一个包中有一个名为 String 的类,它也会被导入,但隐藏 java.lang.String 类。这可能是完全限定类型的原因,例如

java.lang.String s;

但在这种情况下,您只能为它分配一个 java.lang.String 引用,因为该类是 final,因此不能扩展。常规的做法是

java.lang.String s = new java.lang.String("hello");

如果你问的是

java.lang.String s = new String("hello");

对比

java.lang.String s = "hello";

然后检查其他答案或副本。

关于java - 了解 java.lang.String s = new String ("hello") 和 String hold = "hello"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938482/

相关文章:

java - 安卓)java.lang.NoClassDefFoundError : com. google.android.gms.internal.zzno

android - LandScape 模式下的 ActionBarDrawerToggle.syncState() 异常

java - 如何从android中的纬度值中找到度数?

java - 如何使用特定构造函数动态创建类的新实例

java - Curator Framework 绕过 Zookeeper ACL 设置

java - android中如何将二进制字符串数据转换为String

android - 拖放后如何交换2个按钮?

android - 在 Android Studio 3.6 中使用 Import Sceneform Asset 导入 FBX 时出错

java - Cucumber Runner 不会使用 Karate 加载所有功能文件

java - 删除数组列表中的重复项