Java中的包裹器(Wrapper),其實就是類別型態?
目的是為了提升效率,將資料包裹成物件,因此物件可以攜帶更多資訊
Long、Integer、Double、Float、Boolean等類別是所謂的包裹器(Wrapper)
package cc.openhome;
public class IntegerDemo {
public static void main(String[] args) {
int data1 = 10;
int data2 = 20;
Integer wrapper1 = new Integer(data1);
Integer wrapper2 = new Integer(data2);
System.out.println(data1 / 3);
System.out.println(wrapper1.doubleValue() / 3);
System.out.println(wrapper1.compareTo(wrapper2));
}
}
基本包裹器都歸類於java.lang套件中,不用import,如使用Integer包裹整數可new出來,如果運算式都是int那結果也會是int
所以data1 / 3等於3
如用包裹器中的doubleValue()方法,可將包裹值以double型態做運算,所以wrapper1.doubleValue() / 3等於3.3333333333333335
而Integer還提供compareTo()方法,可與另一Integer物件做比較,相同回傳0,小於compareTo()包裹的值回傳-1,否則就1,== !=只能比較相等或不相等,compareTo()可傳回更多資訊
也有自動裝箱功能
Integer data1 = 10; 這就是直接裝箱,就不用像上面new了
Integer data2 = 20;
System.out.println(data1.doubleValue() / 3);
System.out.println(data1.compareTo(data2));
其他寫法or用法:
int number = 10;
Integer wrapper = number;
自動拆箱
int foo = wrapper;
再來 參考這篇 http://openhome.cc/Gossip/Java/AutoBoxUnBox.html
自動裝箱與拆箱內幕
這篇重點在最後
要比較兩個物件時,不要使用== !=,要用equals()
原因是物件它們參考的東西可能不一樣,所以用equals()比較物件比較好
沒有留言:
張貼留言