java中封装类(一)

java中封装类共九个,分别是Boolean,Byte,Short,Integer,Long,Float,Double,Character,Void

其中Void对于使用者并无多大意义,也不可以构造任何对象,代码如下:

package java.lang;

public final class Void {
    public static final Class<Void> TYPE = Class.getPrimitiveClass("void");

    private Void() {}
}

这几个封装类中,以Boolean类型最简单,Character最复杂,Character个人觉得也是整个java中最复杂的一个类,先说Boolean:

package java.lang;

public final class Boolean implements java.io.Serializable,Comparable<Boolean>{
    public static final Boolean TRUE = new Boolean(true);

    public static final Boolean FALSE = new Boolean(false);

    public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean");

    private final boolean value;

    private static final long serialVersionUID = -3665804199014368530L;

    public Boolean(boolean value) {
        this.value = value;
    }

    public Boolean(String s) {
        this(toBoolean(s));
    }

    public static boolean parseBoolean(String s) {
        return toBoolean(s);
    }

    public boolean booleanValue() {
        return value;
    }

    public static Boolean valueOf(boolean b) {
        return (b ? TRUE : FALSE);
    }

    public static Boolean valueOf(String s) {
        return toBoolean(s) ? TRUE : FALSE;
    }

    public static String toString(boolean b) {
        return b ? "true" : "false";
    }

    public String toString() {
        return value ? "true" : "false";
    }

    public int hashCode() {
        return value ? 1231 : 1237;
    }

    public boolean equals(Object obj) {
        if (obj instanceof Boolean) {
            return value == ((Boolean)obj).booleanValue();
        }
        return false;
    }

    public static boolean getBoolean(String name) {
        boolean result = false;
        try {
            result = toBoolean(System.getProperty(name));
        } catch (IllegalArgumentException e) {
        } catch (NullPointerException e) {
        }
        return result;
    }

    public int compareTo(Boolean b) {
        return compare(this.value, b.value);
    }

    public static int compare(boolean x, boolean y) {
        return (x == y) ? 0 : (x ? 1 : -1);
    }

    private static boolean toBoolean(String name) {
        return ((name != null) && name.equalsIgnoreCase("true"));
    }
}

Boolean实现了Comparable接口,也就是说boolean类型本身是可以比较的,而对于boolean类型而言,在java中认为true是大于false的。示例如下:

package demo.nio;

public class BooleanDemo {
    public static void main(String[] args){
        System.out.println(Boolean.compare(true, false));//1 代表大于
        System.out.println(Boolean.compare(false, false));//0 代表等于
        System.out.println(Boolean.compare(true, true));//0 代表等于
        System.out.println(Boolean.compare(false, true));//-1 代表小于
    }
}

值得一提的是Boolean的hashcode是两个常数,这就保证了不管从何处new的对象,只要内部的value字段值为true,它的hashcode就是1231,为false就是1237。equals方法完全调用了内部value字段的==操作。所有的封装类型都包含了valueOf的静态函数,并且有

两个重载版本,分别是基元类型参数和字符串参数。还有一个parse函数,内部可以通过返回Cache中的数据来避免重复的装箱操作。java中对于Boolean的Cache就是 Boolean.TRUE和Boolean.FALSE两个静态字段。它们是公共类型。

public class BooleanDemo {
    public static void main(String[] args){
        Boolean b3 = Boolean.valueOf(true);
        Boolean b4 = Boolean.valueOf("true");
        Boolean b5 = Boolean.parseBoolean("true");
    }
}

时间: 2024-10-06 08:14:35

java中封装类(一)的相关文章

java中封装类Feild和使用setter和getter方法访问封装的类Feild

class Person { private String name; private int age; public void setName(String name) //定义访问name的方法 { if (name.length() > 6 || name.length() < 2) { System.out.println("您设置的人名长度不合要求!"); } else { this.name = name; } } public String getName()

java中封装类(二)

java中的数字类型包括 Byte,Short,Integer,Long,Float,Double.其中前四个是整数,后两个是浮点数. 在说java中数字类型之前先来看看它们统一的基类Number. package java.lang; public abstract class Number implements java.io.Serializable { public abstract int intValue(); public abstract long longValue(); pu

Java语言学习(6)-Java中封装类(正则表达式操作类)

java中封装的正则表达式 Java封装了正则表达式处理的类,在java.util.regex包中.主要包含如下三个类: 1) Pattern类 Pattern类是对一个正则表达式的编译表示. Pattern类没有公共构造函数.要创建一个Pattern对象,必须制定一个正则表达式,通过调用器公共静态编译方法,返回一个Pattern对象.样例: Patternr=Pattern.compile(""(1*)(a+)(.*)""); 2) Matcher类 Matche

Java中的基本数据类型及其封装类

Java中的数据类型有两种,基本数据类型和引用数据类型,引用数据类型的创建是 需要去new一个对象,该对象的内存分配在堆区,同时栈区会保存一个指向该对象的引用, 但是对于一些简单数据的创建,用new的方式就不是很有效了,因此JVM中定义了一套对于基本 数据类型的描述,它直接保存值到堆栈当中,而不需要在堆中创建对象. Java需要确定每种基本数据类型所占空间的大小,而且他们所占空间的大小是固定不变 的,这也是java具有高移植性的一个原因,下面是java中所定义的9中基本数据类型及其封装类: 由于

看Java中==、equals、hashCode的来龙去脉

我有一个哥们去参加了面试,面试官这样问一个Java问题: 你说一下java对象的equals方法调用什么方法呢?我这个哥们想了想,回答说"应该是比较的引用".听了这个答案之后,那个面试官摇头晃脑的说:"不对,你回答的不对,equals方法调用的是hashCode方法".于是乎,我那个技术还不错的哥们就悲壮地栽在这道题目上了. 今天晚上,西安历史上少有的热,那就好好总结一下这个题目的来龙去脉好了,也方便给后面的朋友们提个醒,不要栽在这么简单的问题上.你说这个面试官回答

Java中反射机制和Class.forName、实例对象.class(属性)、实例对象getClass()的区别(转)

一.Java的反射机制   每个Java程序执行前都必须经过编译.加载.连接.和初始化这几个阶段,后三个阶段如下图:  其中 i.加载是指将编译后的java类文件(也就是.class文件)中的二进制数据读入内存,并将其放在运行时数据区的方法区内,然后再堆区创建一个Java.lang.Class对象,用来封装类在方法区的数据结构.即加载后最终得到的是Class对象,并且更加值得注意的是:该Java.lang.Class对象是单实例的,无论这个类创建了多少个对象,他的Class对象时唯一的!!!!.

java中,return和return null有什么区别吗?

java中,return和return null有什么区别吗? 最大的区别:return;方法的返回值必须是void!return null;方法的返回值必须不是 原始数据类型(封装类除过)和void! return 就是跳出方法...return null也是跳出方法并返回null.. 也就是说return null必须用在返回值不是void的方法里面..return可以用在任何方法里面 不要认为null就是没有值..null就是值..真正的没有值是..比如你String s;这个时候s是没有

Java中的进程和线程

 Java中的进程与线程 一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程. 进程:进程是指处于运行过程中的程序,并且具有一定的独立功能.进程是系统进行资源分配和调度的一个单位.当程序进入内存运行时,即为进程. 进程的三个特点: 1:独立性:进程是系统中独立存在的实体,它可以独立拥有资源,每一个进程都有自己独立的地址空间,没有进程本身的运行,用户进程不可以直接访问

转! java 中“==” 与“ .equals ”比较

在java程序设计中,经常需要比较两个变量值是否相等.例如1.简单数据类型比较a = 10;b = 10;if(a == b){//写要执行的代码}2.引用数据类型比较ClassA a = new ClassA("abc");ClassB b = new ClassB("abc");if(a == b){//写要执行的代码}显然在例1中 a == b的值为true,例2中a == b值为false你应该有一些java基础吧,下面我用int类型和它的封装类Intege