java - Java中什么是Null

标签 java

我对java中的null感到困惑。书上说,如果我们声明一个引用类型的变量而不进行初始化,该变量将具有默认值null。所以我尝试了这样的

import edu.princeton.cs.algs4.*;

public class test
{
     public static void main(String[] args)
    {
         String a;
         StdOut.println(a);
    }
}

但是在java中这是错误的,因为变量a没有初始化。这与 a 将具有默认值 null 相矛盾。

我还有一个困惑是,如果我运行下面的代码

import edu.princeton.cs.algs4.*;

public class test
{
    public static void main(String[] args)
    {
         StdOut.println(null+"a");
         StdOut.println("null"+"a");
    }
}

两个代码行都打印nulla。那么字符串 "null" 等于 null 是真的吗?

有人能帮我解答这两个问题吗?任何建议都有帮助。谢谢。

最佳答案

Book says that if we declare a variable of reference type without initialization, the variable will have default value null.

什么书?如果它真的这么说的话,那就错了。该语句仅适用于静态变量和实例变量,不适用于局部变量。局部变量在使用前必须显式初始化,编译器知道你没有这样做,并给出编译错误(而不是让你的程序以未定义的方式执行)。

is it true that string "null" equals null?

String.valueOf(null) 确实等于 "null"

关于java - Java中什么是Null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35123751/

相关文章:

java - 创建Activity时如何使EditText不聚焦

java - 构建 Java Swing GUI 的最佳方式?

java - 如何检查字符串是否包含 +、- 或 . (十进制)第一个字符?

java - 使用java在html页面中的webelement中查找字符串的(x,y)坐标

java - Hibernate 使用 field + max 的组合在非主键上生成值

JavaFX 8 : Separation of model/domain from view

java - 导入eclipse项目卡住

java - 无法获取 getText()

java - 如何在端口范围内找到开放端口?

java - jscrollpane 有拖尾图像