2015-06-18 42 views
-5

我目前正在嘗試使用System.out.print來發出一個整數x的類型。然而,從我發現的唯一函數simular到typeOf是getClass,它不適用於int或instanceof,它似乎只適用於if。有沒有其他的命令我可以嘗試或我堅持System.out.print("Integer")
typeOf沒有使用getClass()或instanceof

+1

爲什麼你需要知道一個數的類型?字面本身告訴你它的類型。或者那不是你的意思? –

+1

你想做什麼,爲什麼你需要檢查元素是否是int?請注意,你可以使用'int.class'。 –

+0

我不需要它來檢查,但要給出哪個元素。我試圖找到一種沒有字符串的方法,因爲我會在處理對象時多次改變對象的類型 – byj

回答

4

請注意,Java是靜態類型語言。在運行時不需要檢查變量基元類型,因爲它在編譯時已知並且不能更改。例如,如果你聲明

int x = 5; 

然後x不能別的比int等,所以試圖做類似typeof(x)(像一些其他語言)是沒有意義的。

可以概括變量類型它分配給Object引用類型:

int x = 5; 
Object obj = x; 

但即使在這種情況下obj不會int。在這種情況下,Java編譯器會自動將您的x設爲Integer類型,因此obj.getClass().getName()將返回java.lang.Integerobj instanceof Integer將返回true。

1

一般來說,如果你知道這個類型,沒有理由這樣做,你不需要一個函數來爲你工作。

唯一有用的是當你無法計算出類型時,因爲你在學習,而且類型不明顯。你可以使用像這樣的重載函數來實現它。

public static void main(String[] args) { 
    byte b = 1; 
    byte a = 2; 
    System.out.println("The type of a+b is "+typeOf(a+b)); 
    long l = 1; 
    float f = 2; 
    System.out.println("The type of l+f is "+typeOf(l+f)); 
} 
public static String typeOf(byte b) { 
    return "byte"; 
} 
public static String typeOf(char ch) { 
    return "char"; 
} 
public static String typeOf(short s) { 
    return "short"; 
} 
public static String typeOf(int i) { 
    return "int"; 
} 
public static String typeOf(long i) { 
    return "long"; 
} 
public static String typeOf(float i) { 
    return "float"; 
} 
public static String typeOf(double i) { 
    return "double"; 
} 
public static String typeOf(boolean b) { 
    return "boolean"; 
} 
public static String typeOf(Object o) { 
    return o.getClass().getName(); 
} 

打印

The type of a+b is int 
The type of l+f is float 
相關問題