wrapper primitives和char向int轉化

//: UaryPlus.java
/*
*1.Unary Plus "its only effect is to promote byte,short,or char to int"
*Thinking in Java P101
*
*2.當比int小的基本類型運算時也會自動轉換爲int
*/

/*
*3.wrapper primitives:wrappper type(wrapper class)是一種類,可以調用方法
*/


class UaryPlus 
{
    public static void main(String[] args) 
    {
        byte a1 = 1;

        //!primitive無法調用方法(方法只能由對象使用)
        //!System.out.println(a1.getClass().getName());

        System.out.println(getType(a1));    //java.long.Byte


        Byte a2 = new Byte("1");
        //Byte a2 = 1;

        System.out.println(a2.getClass().getName());    //java.long.Byte
        System.out.println(getType(-a2));               //java.long.Integer
        System.out.println(getType(+a2));               //java.long.Integer

        Character c = new Character('a');
        System.out.println(c.getClass().getName());     //java.long.Character

        System.out.println(a2 + c);                     //98

        System.out.println(getType(a2 + c));            //java.long.Integer
    }

    public static String getType(Object o)
    {

        return o.getClass().getName();
    }
}

//“.getClass().getName()”亦可爲“.getClass().toString()"
//:~

主要是wrappper class的用法、出現原因。Java中基本類型並非是對象,這使得”Everyting is an Object”並不精確。爲了保持一致性、利用類的益處所以提供了對基本類型的封裝類(即wrapper class)。當兩者初始化時也會有一些差異:

//: WrapperPrimitives.java

class  WrapperPrimitives
{
    public static void main(String[] args) 
    {
        Class1 c1 = new Class1();
        Class2 c2 = new Class2();

        System.out.println(c1.i);
        System.out.println(c2.i);
    }
}

class Class1
{
    int i;
}

class Class2
{
    Integer i;
}

/*Output:
*0
*null
*///:~

參考:1.Stack Overflow: When to use wrapper class and primitive type

2.w3resource: Java Wrapper Classes

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章