Boolean类是Java中基本类型boolean的包装类。这个类比较简单,直接看源代码吧。
public final class Boolean implements java.io.Serializable,
Comparable<Boolean>
可以看到有final修饰,说明这个类是不能被继承的,而且是可序列化和可比较的。
Boolean内部以一个boolean型的私有域来保存状态。
/**
* The value of the Boolean.
*
* @serial
*/
private final boolean value;
这个私有域是final型的,所以Boolean类型的实例是一个不变量。
/**
* The <code>Boolean</code> object corresponding to the primitive
* value <code>true</code>.
*/
public static final Boolean TRUE = new Boolean(true);
/**
* The <code>Boolean</code> object corresponding to the primitive
* value <code>false</code>.
*/
public static final Boolean FALSE = new Boolean(false);
Boolean类提供了两个静态实例(注意它们是final的),我们应当优先使用这两个现成的实例,而不是创建新的实例,这样能节省一些空间(一个Boolean对象的大小是24字节)和时间开销。
public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean");
这里还有一个静态域TYPE,用来表示基本类型boolean对应的class对象。
System.out.println(Boolean.TYPE);//boolean
System.out.println(Boolean.class);//class java.lang.Boolean
Boolean类里提供静态的valueOf方法,如下:
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
public static Boolean valueOf(String s) {
return toBoolean(s) ? TRUE : FALSE;
}
上面说了我们们应该优先使用静态实例,但如果我们拿到一个boolean或者能表示boolean的字符串(比如“true”),我们就应该使用valueOf方法来得到包装类,好处还是省空间时间开销。
而且Java中对基本类型boolean的自动装箱(在编译为class过程中进行)就是使用的救就是valueOf(boolean b)。
最后看看hashcode方法。
public int hashCode() {
return value ? 1231 : 1237;
}
看到这里一定会有疑问,为毛是这两个数?
我们知道hashCode方法的作用是当对象存放散列表中时,有一个良好的分布。所以这里选择了2个素数;而且一般复杂对象的hashCode的计算会根据其域对象的hashCode来计算,所以这里的2个素数也是较大的素数。具体可参考
boolean-hashcode。
分享到:
相关推荐
lang.exception包用于处理Java标准API中的exception,为1.4之前版本提供Nested Exception功能;lang.math包用于处理数字;lang.mutable用于包装值型变量;lang.time包提供处理日期和时间的功 能。 org.apache....
系统会在每个java程序中隐含导入了java.lang这个包 8、java中的注释, 单行注释 //...... 多行注释 /* .......*/ 文档注释/** ........(换行标签)*/,用javadoc命令可以根据原码中的文档注释生成注释文档(html...
1、所属的包 java.lang 2、类的继承关系、实现接口 前面6个包装类是与数字相关的 父类:Number Boolean、Character 父类:Object 8个包装类实现的接口:Serializable ,Comparable 3、构造方法 ...
boolean delete(java.lang.String sql, java.util.Map<java.lang.Integer,java.lang.Object> elements) 根据传入的参数删除单条记录的方法 boolean delete(java.lang.String sql, java.lang.Object[] elements)...
js到java 将js对象包装为java对象的简单方法。 在,我们需要使用js对象编写Java类名,以便使其编码为write类。安装$ npm install js-to-java用法...// => {$class: 'java.lang.Boolean', $: true}// Java: short[] s
boolean delete(java.lang.String sql, java.util.Map<java.lang.Integer,java.lang.Object> elements) 根据传入的参数删除单条记录的方法 boolean delete(java.lang.String sql, java.lang.Object[] elements)...
import java.lang.reflect.InvocationTargetException; /** * A demo PDF Viewer application. */ public class PDFViewer extends JFrame implements KeyListener, TreeSelectionListener, PageChangeListener...
在java.lang包里有个ClassLoader类,ClassLoader 的基本目标是对类的请求提供服务。当 JVM 需要使用类时,它根据名称向 ClassLoader 请求这个类,然后 ClassLoader 试图返回一个表示这个类的 Class 对象。通过覆盖...
amp-java ... AMP Boolean = java.lang.Boolean 或 boolean AMP 浮点数 = java.lang.Double 或 double AMP 十进制 = java.math.BigDecimal AMP 日期时间 = java.util.Calendar AMP ListOf = java
wsn-core-2.7.6.jar,cxf-xjc-boolean-2.6.2.jar,cxf-xjc-bug671-2.6.2.jar,cxf-xjc-dv-2.6.2.jar,cxf-xjc-runtime-2.6.2.jar,cxf-xjc-ts-2.6.2.jar,dom4j-1.6.1.jar,ehcache-1.2.3.jar,ehcache-core-2.5.1.jar,ejb3-...
java.lang.Boolean $content$内容是同目录下的shell.jsp文件内容 即:将shell.jsp文件上传到服务器上,最终部署的war访问: http://192.168.7.84:10081/myname/index.jsp 如果有mynameok 表示部署成功 使用client....
java.lang.Object 继承者 com.opensymphony.xwork2.ActionSupport 所有已实现的接口: Action, LocaleProvider, TextProvider, Validateable, ValidationAware, Serializable 直接已知子类: ...
1、java.lang 1) Object 1 2) String 1 3) AbstractStringBuilder 1 4) StringBuffer 1 5) StringBuilder 1 6) Boolean 2 7) Byte 2 8) Double 2 9) Float 2 10) Integer 2 11) Long 2 12) Short 2 13) Thread
Collections ...1、java.lang 1) Object 1 2) String 1 3) AbstractStringBuilder 1 4) StringBuffer 1 5) StringBuilder 1 6) Boolean 2 7) Byte 2 8) Double 2 9) Float 2 10) Integer 2 11) Long 2 12)
boolean.class,Boolean.class,boolean[].class,Boolean[].class, char.class,Character.class,char[].class,Character[].class, String.class,String[].class, BigDecimal.class,BigDecimal[].class, ...
import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql....
java.lang.Boolean $content$内容是同目录下的shell.jsp文件内容 即:将shell.jsp文件上传到服务器上,最终部署的war访问: http://192.168.7.84:10081/myname/index.jsp 如果有mynameok 表示部署成功 使用client....
java.lang.Boolean $content$内容是同目录下的shell.jsp文件内容 即:将shell.jsp文件上传到服务器上,最终部署的war访问: http://192.168.7.84:10081/myname/index.jsp 如果有mynameok 表示部署成功 使用client....
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...
java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 2、应用服务器与WEB SERVER的区别?应用服务器:Weblogic、Tomcat、Jboss; WEB ...