当前位置: 首页 > 面试题库 >

布尔值的java.lang.NullPointerException

邢鸿博
2023-03-14
问题内容

我根据另一个问题编写了一个非常简单的代码,它是:

丢给我一个错误

java.lang.NullPointerException第5和17行

我不知道我在做什么错。

 public class Main {

    public static String bool(Boolean param){
        if(param == true){    (line 5)
            return "a";
        }else if(param == false){
            return "b";
        }
        return "c";

    }

    public static void main(String[] args){

        System.out.println(bool(true));
        System.out.println(bool(null)); (line 17)
        System.out.println(bool(false));


    }
}

问题答案:

null无法自动拆箱为原始boolean值,当您尝试与进行比较时会发生这种情况true。在

param == true

类型trueboolean,因此左侧操作数也必须为boolean。您正在传入Boolean,这是一个对象,但可以自动拆箱到boolean

因此,这相当于

param.booleanValue() == true

显然,如果paramnull,则以上抛出NullPointerException

为了避免自动拆箱的隐藏陷阱,您可以改用以下Boolean对象:

if (Boolean.TRUE.equals(param))
  return "a";
if (Boolean.FALSE.equals(param))
  return "b";
return "c";


 类似资料:
  • 问题内容: 哪种列类型最适合在MySQL数据库中使用布尔值?我用,但我的同事用。 问题答案: 这些数据类型是同义词。

  • 到目前为止我们看到的类型都能表示很大范围的数据,整数多的是,而浮点数更多。相对而言,字符集的规模小的多。C++中还有一个类型表示的范围更小,即布尔类型,它只能表示true和false两个值。 虽然没提到过该类型,但我们前面几章中实际已经使用过布尔值了。if语句和while语句中的条件就是布尔表达式。比较操作符的结果也是布尔值。例如: if (x == 5) { // 进行某些处理 } ==操

  • 原文: http://exploringjs.com/impatient-js/ch_booleans.html 基本类型 _ 布尔 _ 包含两个值 - false和true: > typeof false 'boolean' > typeof true 'boolean' 14.1。转换为布尔值 这三种方法可以将任意值x转换为布尔值。 Boolean(x) 最具描述性;推荐的。 x ?

  • 我发现了这个语法: 这个有两个点的语法是什么:叫? 在哪里可以找到有关它的信息? 它是仅适用于布尔值还是以其他不同的方式实现?

  • 我公开了一个使用另一个SOAP服务的服务。我得到了JAXB生成的服务模型。当我使用服务时,数据被设置到与此模型相关的对象中。我定义了自己的域模型,它与JAXB模型具有完全相同的类集,但没有xml注释等。我使用dozer来执行数据映射。当标记为注释(nillable=true)的某些布尔元素为null时,我的域模型中的目标对象布尔对象将设置为默认的true或false值。我希望它保留相同的空值。布尔

  • 问题内容: 我有些困惑:我有一个函数,该函数以Object作为参数。但是,即使我只是传递一个原语,甚至将布尔原语识别为布尔对象,编译器也不会抱怨。为什么呢? 问题答案: 因为原始的’ ‘将被自动 装箱 到并且是一个。