有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java打印对象并检查null

public void printManagerAvailable(Manager mgr) {
    System.out.println(" Is Manager object available : " + mgr!=null);
}

输出:

true

为什么这里的输出只有true?我期待着:

Is Manager object available : true

共 (3) 个答案

  1. # 1 楼答案

    其他答案包括正在发生的事情,这就是为什么会发生:

    Java中operator precedence的顺序将加法+置于相等之前!=

    重要的是要认识到这不是由从左到右的顺序造成的

    因此,您需要按照如下顺序应用运算符:

    ("Is null : " + mgr) != null
    

    要解决此问题,可以使用括号以另一种方式强制优先级:

    "Is null : " + (mgr != null)
    
  2. # 2 楼答案

    尝试使用这行代码

    System.out.println(" Is Manager object available : " + (mgr == null ? "is null" : "not null"));
    
  3. # 3 楼答案

    因为它认为你在说" Is Manager object available : " + mgr都在!= null的左边。换句话说,它先做" Is Manager object available : " + mgr,然后比较" Is Manager object available : [Object:Manager]" != null

    这样做

    Manager mgr = new Manager();
        mgr.setChangeClass(5);
        mgr.setChangeClockIn(10);
        System.out.println(" Is Manager object available : " + (mgr!=null));