1. 程式人生 > >如何判斷一個基本型別的變數的型別呢?

如何判斷一個基本型別的變數的型別呢?

我們知道當變數是引用型別的時候,可以通過反射來判斷一個變數的型別。
可是當這個變數的型別是基本型別的時候呢,我們無法用反射來判斷他的型別,這個時候我們可以採用instanceof操作符來判斷。

下面我用一個典型的例子來做演示:

public class Test {
    public static void main(String[] args) {
        Test t = new Test();

        byte b1 = 1;
        byte b2 = 2;

        System.out.println("b1的型別是:" + t.judgeType(b1));
        System.out
.println("b1+b2的型別是:" + t.judgeType(b1 + b2)); } public String judgeType(Object temp) { if (temp instanceof Byte) { return "是Byte型別"; } else if (temp instanceof Integer) { return "是Integer型別"; } else { return "是其他型別"; } } }

控制檯輸出:

b1的型別是:是Byte型別
b1+b2的型別是:是Integer型別

這同樣解釋了之前的一個典型的例子:

byte b1 = 1;
byte b2 = 3;
byte b3 = b1 + b2;         //會報錯

因為b1+b2他的型別是Integer型別的,你把他賦值給Byte型別是不可以的。需要進行強制轉換。

byte b3 = (byte)(b1+b2);       //這才不會報錯