大家好,我是科堂。今天我们就来说说基本数据类型boolean及其包装类Boolean。今天我们结合下面的例子来说明两者的区别。公共类BooleanTest{privateBooleanisTrue;/***属性isTrue的Getter方法。**@returnisTrue的属性值*/publicBooleangetTrue(){returnisTrue;}/***属性isTrue的Setter方法。**@paramisTrue分配给属性isTrue的值*/publicvoidsetTrue(BooleanisTrue){this.isTrue=isTrue;}publicstaticvoidmain(String[]args){//booleana=null;布尔值a=null;布尔b=新布尔(null);Booleanc=newBoolean("真");如果(null==a){a=true;}系统输出.println(a);System.out.println(b);BooleanTestbooleanTest=newBooleanTest();booleanTest.setTrue(null);System.out.println(booleanTest.isTrue);System.out.println(booleanTest.getTrue());}}首先,是否可以nullBoolean是一个类,所以它的引用对象可以是无效的;Booleana=null或Booleanb=newBoolean(null)都可以,而基本数据类型boolean只能为true或false2.Boolean可以在new中引入字符串要知道为什么Boolean可以在new中引入字符串,我们打开Boolean的源码,源码是这样的:/***Allocatesa{@codeBoolean}objectrepresentingthevalue*{@codetrue}如果字符串参数不是{@codenull}*并且忽略大小写等于字符串{@code"true"}。*否则,分配一个表示*值{@codefalse}的{@codeBoolean}对象。示例:
*{@codenewBoolean("True")}生成一个{@codeBoolean}对象*表示{@codetrue}。
*{@codenewBoolean("yes")}生成代表{@codefalse}的{@codeBoolean}对象*。**@params要转换为{@codeBoolean}的字符串。*/publicBoolean(Strings){this(parseBoolean(s));}/***将字符串参数解析为布尔值。如果字符串参数*不是{@codenull}并且忽略大小写等于str,则返回的{@codeboolean}*表示值{@codetrue}ing*{@code“真”}。
*示例:{@codeBoolean.parseBoolean("True")}返回{@codetrue}。
*示例:{@codeBoolean.parseBoolean("yes")}返回{@codefalse}。**@params{@codeString}包含要解析的布尔值*表示形式*@return由字符串参数表示的布尔值*@since1.5*/publicstaticbooleanparseBoolean(Strings){return((s!=null)&&s.equalsIgnoreCase("true"));}这里可以清楚的看到字符串只有为“true”不为null时才为真(true不区分大小写),其他都是false3.阿里巴巴Java开发手册*基本数据类型和使用规范wrapper数据类型如下:1)【强制】所有POJO类的属性都必须使用wrapper数据类型。2)【强制】RPC方法的返回值和参数必须使用wrapper数据类型。3)【建议】局部变量全部使用基本数据类型。注意:POJO类属性没有初值,提醒用户需要使用时必须显式赋值。任何NPE问题或存储检查由用户保证。正例:数据库查询结果可能为null,因为自动拆箱,接收基本数据类型有NPE风险。反例:某业务的成交报表显示总成交额的涨跌情况,即正负x%,其中x为基本数据类型。当调用RPC服务不成功时,返回默认值,页面显示0%。这是不合理的,应该显示为破折号-。因此,wrapper数据类型的null值可以表示额外的信息,比如:远程调用失败,异常退出。*以上为手册原文,所以一般情况下,最好使用包装类从数据库接收数据,防止NPE问题。这就是为什么前面的代码用布尔包装类而不是基本数据类型定义的原因。这就是Boolean和boolean的区别。这里是Ketang,他将分享他的学习和收获。欢迎大家交流。csdn地址为:https://blog.csdn.net/kaneand...