`
BrokenDreams
  • 浏览: 254661 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
68ec41aa-0ce6-3f83-961b-5aa541d59e48
Java并发包源码解析
浏览量:100413
社区版块
存档分类
最新评论

Java lang包-Boolean

 
阅读更多
         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
分享到:
评论

相关推荐

    java-java-lang包.pdf

    Java编程语言中的java.lang包是一个核心包,它提供了Java语言运行时的基础类库,包含了Java程序运行的基本数据类型、异常处理类以及一些用于系统级别的工具类和接口。java.lang包中的类和接口不需要程序员显示地导入...

    JAVA lang包PPT

    在Java编程语言中,`java.lang`包是一个基础包,它包含了所有Java程序都会自动导入的基本类和接口,包括一些核心的数据类型(如`String`和`Math`)的包装类。本篇PPT主要讲解了`java.lang`包中的核心概念,特别是`...

    java.lang包

    Java语言的核心库之一就是`java.lang`包,它是最基础且最重要的包,包含了所有Java程序都会用到的一些基本类。这个包中包含了如异常处理、基本数据类型的包装类、数学运算、类和对象操作等核心功能。 异常处理是...

    java_lang包详解.pdf

    首先,java.lang包包括了基本数据类型的包装类,如Boolean、Long、Integer、Short、Byte、Character、Double和Float。这些包装类使得基本数据类型能够作为对象进行操作,支持面向对象的特性。例如,Number是所有数值...

    java.lang包介绍

    Java编程语言的基础构建块之一是`java.lang`包,它被自动导入到每个Java程序中,无需显式导入。这个包包含了许多核心类和接口,是编写任何Java应用程序不可或缺的部分。`java.lang`包中最基本的类是`Object`,它是...

    java-lang包详解

    【java-lang包详解】 在Java编程语言中,`java.lang`包是所有Java程序的基础,因为它包含了许多核心类和接口,这些类和接口是编写任何Java应用程序所必需的。由于这个包是自动导入的,因此程序员无需在代码中显式地...

    java基础教程----精华版

    - 异常类层次结构,根类为`java.lang.Throwable`,常见的有`Exception`和`Error`。 4. **包(Package)**: - 为了管理类和接口,Java引入了包的概念,如`java.util`,`java.io`等,方便代码的组织和导入。 5. *...

    北大青鸟JAVA培训教程-java.lang包

    【java.lang包】是Java标准库中最基础的包,它包含了一些核心的类,比如`Math`, `Class`, `Object`等,这些类是所有Java程序的基础。在学习这个包时,首先要理解的是,`java.lang`包是自动导入到每一个Java程序中的...

    commons-lang3-3.1 API

    lang.exception包用于处理Java标准API中的exception,为1.4之前版本提供Nested Exception功能;lang.math包用于处理数字;lang.mutable用于包装值型变量;lang.time包提供处理日期和时间的功 能。 org.apache....

    commons-lang-2.6-src.zip

    本篇将深入探讨"commons-lang-2.6-src.zip"这个源码包中的核心知识点。 1. **项目结构**:解压"commons-lang-2.6-src.zip"后,我们可以看到项目的目录结构,它遵循Maven的约定,包括`src/main/java`存放源代码,`...

    重难点之java_javalang包.pdf

    《Java编程中的java.lang包详解》 在Java编程语言中,`java.lang`包是所有Java程序的基础,它包含了进行基本操作和对象创建所必需的类和接口。这个包的重要性在于它是每个Java应用程序的默认导入包,无需显式导入...

    javalang包PPT课件.pptx

    Java 语言基础知识点 ...java.lang 包是 Java 语言中的基础包,包含了一系列程序中经常要用到的类,如 String、Math、Object、Class 等。了解 java.lang 包和包装类是 Java 语言基础知识点的重要组成部分。

    java基础视频-试看.rar

    6. **包(Package)**:Java使用包来组织类,避免命名冲突。例如,`java.util`包包含了各种实用工具类,如ArrayList和HashMap。 7. **异常处理**:Java使用try-catch-finally语句块处理运行时错误。异常是通过`...

    javalang包PPT学习教案.pptx

    【Java `java.lang` 包】是Java编程语言的核心包,包含了执行任何Java程序都需要的基础类,包括一些基本类型(如数字和字符串)的包装类、异常处理机制、线程管理以及基本系统属性的访问。这个包是自动导入的,所以...

    JAVA编程高级-工具类.pdf

    - `java.lang`: 包含一些基础类如`String`、`Math`、`System`等。这个包会被自动导入到每个Java程序中。 - `java.util`: 提供了一些实用工具类,比如`List`、`Calendar`、`Date`等。 - `java.awt`: 提供了用于...

    JAVA面试题---基础

    2. **基本数据类型与引用数据类型**:Java有8种基本数据类型,包括整型(byte、short、int、long)、浮点型(float、double)、字符型(char)和布尔型(boolean)。引用数据类型包括类、接口和数组,它们都是对象的...

    完整版Java全套入门培训课件 Java基础 01-Java概述(共31页).rar

    这份"完整版Java全套入门培训课件 Java基础 01-Java概述(共31页)"为初学者提供了一个全面的起点,深入理解Java的核心概念。下面我们将详细探讨其中可能涵盖的知识点。 1. **Java起源与特性** - Java由James ...

    使用Java反射机制将Map转换为Java对象,支持Boolean、Date类型

    首先,我们需要了解Java中的`java.lang.reflect`包,这个包提供了`Class`、`Constructor`、`Method`和`Field`等类,它们是反射的核心。通过`Class`对象,我们可以获取到任何类型的类信息,包括其构造器、方法和字段...

    java API使用-中文word

    由于它位于`java.lang`包下,因此可以直接使用,无需导入。 - `System.out`:标准输出流,常用于打印信息到控制台。 - `System.in`:标准输入流,用于读取从键盘输入的数据。 - `System.arraycopy()`:用于数组复制...

Global site tag (gtag.js) - Google Analytics