余腾

导航

Java源码分析二:(Boolean)

Java源码分析第二弹(Boolean)

此方法继承的接口

  java.io.Serializable、Comparable<Boolean>
  一个是序列化,一个是可以进行比较

此方法声明的一些固定属性

以下两个属性是内部创建的两个对象可以理解为多例模式创建对象,创建两个对象的目的为了节约内存空间因为Boolean 就俩值要么true 要么false 你每次都新建对象的话浪费内存空间
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
此对象就是造一个反射出来的对象,这个给他规定死了就是boolean 意思就是反射出来的就是boolean对象
public static final Class<Boolean> TYPE = (Class<Boolean>) Class.getPrimitiveClass("boolean");
需要着重注意下你造一个对象Boolean b=true b.getClass()不等于TYPE 下面我们可以带大家打印一下
System.out.println(Boolean.class);  -- 输出class java.lang.Boolean
System.out.println(boolean.class);  -- 输出boolean
System.out.println(Boolean.TYPE);   -- 输出boolean
由此可看这俩所产出的Class类不是一个着重注意一下哦
这个属性就有点简单了 包装类明知故问对基本数据的包装肯定要存储基本数据呀 这个就是存储的数据
private final boolean value;
这个不多BB 序列号
private static final long serialVersionUID = -3665804199014368530L;.

下面为大家介绍一下此类的构造器

    此构造方法是传入一个boolean值 通过构造器都是在堆中新开辟一段空间存进去
    public Boolean(boolean value) {
      this.value = value;
  }
    这个是传入一个stirng 然后调用下面的parseBoolean(String s) 方法 下面讲方法的时候我着重说下
     public Boolean(String s) {
      this(parseBoolean(s));
  }

下面为大家介绍一下方法

public static boolean parseBoolean(String s) {
      return ((s != null) && s.equalsIgnoreCase("true"));
  }
如果字符串不为空且输入的字符串无视大小写的true才为真 否则为假
 public boolean booleanValue() {
      return value;
  }
  此方法返回value值
   public static Boolean valueOf(boolean b) {
      return (b ? TRUE : FALSE);
  }
  此方法判断你输入的boolean 返回对应的多例 我们平时Boolean b=true 的时候就是调用的此方法 意思是 你用等号新建对象的时候都是复用对象 不是新开辟空间创建新对象
  public static Boolean valueOf(String s) {
      return parseBoolean(s) ? TRUE : FALSE;
  }
  此方法跟上面一样 举个例子 Boolean b="true" 先通过parseBoolean判断一下真假 如果真就返回真的多例对象
    public static String toString(boolean b) {
      return b ? "true" : "false";
  }
  这个方法是重写的toString 可以用类调用不用新建对象 不多说很简单
   public String toString() {
      return value ? "true" : "false";
  }
  同上 toString方法属性调用 
  public int hashCode() {
      return Boolean.hashCode(value);
  }
  重写的hashCode方法 这里hashCode是定值哦 true=1231 false=1237  JDK版本不一样的话改不改不知道 我是8.0
   public static int hashCode(boolean value) {
      return value ? 1231 : 1237;
  }
  你可以通过类来调用他的hashCode 如 Boolean.hashCode(true) 那么他就返回1231
   public boolean equals(Object obj) {
      if (obj instanceof Boolean) {
          return value == ((Boolean)obj).booleanValue();
      }
      return false;
  }
  重写的equals方法很简单比value值就行
   public static boolean getBoolean(String name) {
      boolean result = false;
      try {
          result = parseBoolean(System.getProperty(name));
      } catch (IllegalArgumentException | NullPointerException e) {
      }
      return result;
  }
  可以通过输入的字符串获取一个boolean 值 
    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);
  }
  此方法判断先判断是否一样 如果一样就0  不一样就继续判断 如果x是true 就返回1 否则就-1 意思是 排序按照 先false 后true的顺序
      public static boolean logicalAnd(boolean a, boolean b) {
      return a && b;
  }
 此方法不多说判断两个是否都是true
     public static boolean logicalOr(boolean a, boolean b) {
      return a || b;
  }
  跟上面一样判断是否有一个是true
      public static boolean logicalXor(boolean a, boolean b) {
      return a ^ b;
  }
  判断一下异或 这里讲解一下异或  如果都是true或者false那么返回false 如果一个true 一个false 那么就返回true



  

posted on 2021-09-10 17:00  余腾  阅读(135)  评论(0)    收藏  举报

Fork me on Gitee