java中boolean是什么,java boolean Boolean
00-1010序类加载机制:对象实例化过程:补充:布尔和布尔性能查询总结
00-1010上次有同学问,布尔型不是只有真值和假值吗?为什么他定义的属性有空值?
我们要明确boolean是Java的基本数据类型,Boolean是Java的一个类。布尔类型将在“零值赋值”阶段为属性赋值false。Boolean是一个在“赋值零值”阶段将null赋值给对象的类。
如果它是一个静态属性,它将在加载类时被赋值。如果是普通的类属性,会在对象实例化的时候赋值。从这两点可以了解到“类加载机制”和“对象创建过程”。
00-1010加载:根据类的全名获取该类的二进制字节流,将该类加载到内存中,并在堆中生成一个代表该类的类对象,该类对象将作为方法区数据的访问点。验证:验证类文件中的字节流是否符合JVM规范。准备:在方法区为类的静态属性分配内存并初始化默认值(boolean的默认值为false,Boolean的默认值为null)解析:常量池中的符号引用转换为直接引用,可以理解为对象引用转换为指针初始化:真正开始执行类中的代码,进行静态属性赋值和静态块。
00-1010检查类是否已经加载(父母委托)给对象分配内存空间(指针冲突)零值初始化(false/null)设置对象头(对象的生成年龄等信息)执行init方法(属性初始化、语句块和构造方法)。所以,Boolean只加载了,还没有实例化,实例化之前没有分配内存,所以是null。
接下来我们可以看看boolean的属性和构造方法,看看它是如何包装Boolean的。
//类型Final Boolean的属性通过构造方法注入值private final boolean value//构造方法Boolean a=true实际上是调用这个方法public boolean(布尔值){this。值=值;}//构造方法公共布尔值(strings){ this(parse boolean(s));}其他属性和方法,自己查看相对简单。
布尔的使用存在风险点,阿里巴巴的开发手册也很好。
简单来说,布尔定义的属性必须有值。如果布尔对象的值为空,NPE将出现在解包过程中。
想象一个场景:你的女票问你:你爱我吗?但你没听到我说的。如果你是布尔,你就回答,我没听清(null),如果你是布尔,你就回答,我不爱你(false)
之后,你会被打。
目录
针对Boolean与true
单纯从音源上看,看不出哪个性能更好;Big Boolean还初始化两个静态对象。
源代码截图如下:
写一个测试类:测试方法(获取大布尔型的时间true,获取小布尔型的时间true,通过100,1000,10000,100000次,次数少的多的看那个时间)
测试代码如下:
公共类测试{/** *方法一* * @ return */public static Boolean A(){ return Boolean . true;}/* * *方法2 * * @ return */public static boolean d(){ return true;}公共静态字符串get(){ long I=0L;long j=0Lfor(int n=0;n 100000n){ long start time=system . nano time();d();long end time=system . nano time();long boolean time=end time-start time;long start=system . nano time();a();long end=system . nano time();long boolean ca=end-start;if(booleanca boolean time){ I=I 1;} else { j=j 1;} } return I j;} public static void main(string[]args){ system . out . println(-10万次比较结果- get());}}执行结果如下:
00-1010关于Java中boolean和boolean的区别这篇文章到此为止。更多关于Java中布尔和布尔的区别,请搜索之前关于流行IT的文章或者继续浏览下面的相关文章。我希望你将来能支持流行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。