boolean java基本数据类型之一,只有两个取值:true 和 false 这种类型只作为一种标志来记录 true/false ,其包装类为Boolean类,里面提供了一些处理boolean类型的方法。接下来让我们看一下Boolean类的具体实现。
基础知识
1.java中判断是否相等:
java中相等的判断有两中方式,一种是使用操作符==,一种是使用对象的equals方法。
== :对于基本数据类型==是数值比较,且基本数据类型只能用==进行比较,对于引用数据类型==比较的是地址值。
equals:比较两个对象是否相等。如java中有两个Person对象,对于现实中要比较这两个人是否相同,只需要比较其姓名,身份证是否相同就可以了,在java中是两个对象,自然有不同的地址,若是用==进行比较这两个Person显示不是同一个,这时就需要通过重写equals方法实现自己的比较逻辑来判断两个Person是否相等。
2.对象的排序
java中对象是通过Collections.sort进行排序的,有两种情况,一种是让对象本身具有比较的特性,对象需要实现Comparable接口实现其compareTo方法;一种是创建一个新的比较器类,该类要实现Comparator接口,实现其compare方法。
3.设置与获取系统属性
设置: 通过-Dkey=value的形式设置系统属性
在eclipse中设置:
Run-->Run Confgurations-->然后在对话框的右边选择Arguments-->然后在VM arguments中输入-Dkey=value
在命令行中设置:
java -Dkey=value -jar Test.jar
获取:System.getProperty(propertyName)
Boolean类:
public final class Boolean implements Serializable,Comparable{}
可以看到Boolean类是final的不能被继承,同时他实现了Comparable说明对象本身具有比较性。
主要属性
private final boolean value;
用于保存Boolean对象的值,而且是final的,一但初始化完成,不能被修改。
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
全局的不可改变的两个Boolean对象。对于布尔值也就只有两种状态,即我们可以使用以上这两个Boolean对象表示所有的布尔值。提供这两个静态变量相当于对Boolean对象的"缓存",是为了让开发者直接使用这两个变量而不是每次都创建新的Boolean对象,这样既节省内存又避免了创建一个新实例的时间开销。
public Boolean(boolean value) {
this.value = value;
}
public Boolean(String s) {
this(toBoolean(s));
}
private static boolean toBoolean(String name) {
return ((name != null) && name.equalsIgnoreCase("true"));
}
两种构造方法,一种传入boolean值,一种传入一个字符串,传入字符会进行"to boolean"解析,即当传入的字符串忽略大小写等于"true"时判断为true,否则为false。
一般我们不推荐直接用构造函数来创建Boolean对象,使用全局变量TRUE 、FALSE 或是使用Boolean.valueOf方法即可,避免生成不必要的对象。
parseBoolean:
public static boolean parseBoolean(String s) {
return toBoolean(s);
}
将字符串转换为boolean值,调用了toBoolean方法。只有当传入的字符串忽略大小写为"true"时返回true否则返回false。
booleanValue:
public boolean booleanValue() {
return value;
}
返回本对象的布尔值。
valueOf:
public static Boolean valueOf(boolean b) {
return (b ? TRUE : FALSE);
}
public static Boolean valueOf(String s) {
return toBoolean(s) ? TRUE : FALSE;
}
valueOf方法用于返回对应的Boolean对象,这里可以看成从"缓存"中获取Boolean对象,因为布尔类型只有两种状态。
toString:
public static String toString(boolean b) {
return b ? "true" : "false";
}
public String toString() {
return value ? "true" : "false";
}
如果为true返回字符串"true"如果为false返回字符串"false"。
hashCode:
public int hashCode() {
return value ? 1231 : 1237;
}
true返回1231,false返回1237。
equals:
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
return false;
}
先判断对象是否是Boolean类型,如果是再比较它们的值是否相等。
getBoolean:
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = toBoolean(System.getProperty(name));
} catch (IllegalArgumentException e) {
} catch (NullPointerException e) {
}
return result;
}
根据给定的名称查询系统中是否存在该属性,如果存在且为true则返回true,否则返回false。根据程序需要可以提前设置一些系统属性,使用System.getProperty(name)获取设置的系统属性。
compareTo:
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);
}
compareTo用于比较两个布尔值的大小true大于false,compareTo调用了compare方法。(x == y) ? 0 : (x ? 1 : -1)如果相等返回0,如果不等x为true则y为false返回1,否则返回-1。compareTo是实现的Comparable接口中的方法,该方法返回0表示本对象与传入的对象相等,返回正数表示本对象比传入的对象大,返回负数表示本对象比传入的对象小。
查看所有目录