boolean java基本數(shù)據(jù)類型之一程拭,只有兩個取值:true 和 false 這種類型只作為一種標(biāo)志來記錄 true/false ,其包裝類為Boolean類劳吠,里面提供了一些處理boolean類型的方法。接下來讓我們看一下Boolean類的具體實現(xiàn)宪赶。
基礎(chǔ)知識
1.java中判斷是否相等:
java中相等的判斷有兩中方式宗弯,一種是使用操作符==,一種是使用對象的equals方法搂妻。
== :對于基本數(shù)據(jù)類型==是數(shù)值比較蒙保,且基本數(shù)據(jù)類型只能用==進(jìn)行比較,對于引用數(shù)據(jù)類型==比較的是地址值欲主。
equals:比較兩個對象是否相等邓厕。如java中有兩個Person對象,對于現(xiàn)實中要比較這兩個人是否相同扁瓢,只需要比較其姓名详恼,身份證是否相同就可以了,在java中是兩個對象引几,自然有不同的地址昧互,若是用==進(jìn)行比較這兩個Person顯示不是同一個,這時就需要通過重寫equals方法實現(xiàn)自己的比較邏輯來判斷兩個Person是否相等她紫。
2.對象的排序
java中對象是通過Collections.sort進(jìn)行排序的硅堆,有兩種情況,一種是讓對象本身具有比較的特性贿讹,對象需要實現(xiàn)Comparable接口實現(xiàn)其compareTo方法渐逃;一種是創(chuàng)建一個新的比較器類,該類要實現(xiàn)Comparator接口民褂,實現(xiàn)其compare方法茄菊。
3.設(shè)置與獲取系統(tǒng)屬性
設(shè)置: 通過-Dkey=value的形式設(shè)置系統(tǒng)屬性
在eclipse中設(shè)置:
Run-->Run Confgurations-->然后在對話框的右邊選擇Arguments-->然后在VM arguments中輸入-Dkey=value
在命令行中設(shè)置:
java -Dkey=value -jar Test.jar
獲取:System.getProperty(propertyName)
Boolean類:
public final class Boolean implements Serializable,Comparable<Boolean>{}
可以看到Boolean類是final的不能被繼承赊堪,同時他實現(xiàn)了Comparable說明對象本身具有比較性面殖。
主要屬性
private final boolean value;
用于保存Boolean對象的值,而且是final的哭廉,一但初始化完成脊僚,不能被修改。
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
全局的不可改變的兩個Boolean對象遵绰。對于布爾值也就只有兩種狀態(tài)辽幌,即我們可以使用以上這兩個Boolean對象表示所有的布爾值。提供這兩個靜態(tài)變量相當(dāng)于對Boolean對象的"緩存",是為了讓開發(fā)者直接使用這兩個變量而不是每次都創(chuàng)建新的Boolean對象椿访,這樣既節(jié)省內(nèi)存又避免了創(chuàng)建一個新實例的時間開銷乌企。
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"));
}
兩種構(gòu)造方法,一種傳入boolean值成玫,一種傳入一個字符串加酵,傳入字符會進(jìn)行"to boolean"解析拳喻,即當(dāng)傳入的字符串忽略大小寫等于"true"時判斷為true,否則為false猪腕。
一般我們不推薦直接用構(gòu)造函數(shù)來創(chuàng)建Boolean對象冗澈,使用全局變量TRUE 、FALSE 或是使用Boolean.valueOf方法即可码撰,避免生成不必要的對象渗柿。
parseBoolean:
public static boolean parseBoolean(String s) {
return toBoolean(s);
}
將字符串轉(zhuǎn)換為boolean值个盆,調(diào)用了toBoolean方法脖岛。只有當(dāng)傳入的字符串忽略大小寫為"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方法用于返回對應(yīng)的Boolean對象柴梆,這里可以看成從"緩存"中獲取Boolean對象,因為布爾類型只有兩種狀態(tài)终惑。
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;
}
根據(jù)給定的名稱查詢系統(tǒng)中是否存在該屬性霸奕,如果存在且為true則返回true溜宽,否則返回false。根據(jù)程序需要可以提前設(shè)置一些系統(tǒng)屬性质帅,使用System.getProperty(name)獲取設(shè)置的系統(tǒng)屬性适揉。
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調(diào)用了compare方法煤惩。(x == y) ? 0 : (x ? 1 : -1)如果相等返回0嫉嘀,如果不等x為true則y為false返回1,否則返回-1魄揉。compareTo是實現(xiàn)的Comparable接口中的方法剪侮,該方法返回0表示本對象與傳入的對象相等,返回正數(shù)表示本對象比傳入的對象大洛退,返回負(fù)數(shù)表示本對象比傳入的對象小瓣俯。