打印对象并检查null

时间:2017-02-23 02:10:37

标签: java

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

输出:

true

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

Is Manager object available : true

3 个答案:

答案 0 :(得分:5)

因为它认为您" 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));

答案 1 :(得分:1)

其他答案涵盖了正在发生的事情,这就是它发生的原因:

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

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

所以你所拥有的是按顺序应用运算符:

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

要解决此问题,您可以使用括号以其他方式强制优先级:

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

答案 2 :(得分:-1)

尝试使用这行代码。

var a = Math.round((Math.random() * 90) + 1);
var b = Math.round((Math.random() * 90) + 1);
var c = 180 - a - b;