//: 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