java怎麼判斷為基本型別??
阿新 • • 發佈:2021-07-07
有時候我們在開發的時候需要當前的型別是不是基本型別,你會怎麼做?是使用"getClass().getName()"方法嗎?這種方法也可以判斷,但是java中已經給我們寫好了方法,我們只需要呼叫一下就可以了,不需要寫大量的邏輯判斷,為我們提供了方便,也節省了大量的時間。下面都是Class類中提供的一些便利的方法。
(1)class類提供了isPrimitive()方法
這個方法判斷指定的 Class 物件是否表示一個基本型別或者void型別,為什麼要把void放到這個方法中我也不太清楚,如果Class物件為表示八個基本型別和void則為true,否則false。所以以後我們可以直接使用這個方法來判斷物件是不是基本型別。注意基本型別的包裝類不屬於基本型別,呼叫這個方法的返回值為false。
例項如下:
// 基本型別判斷 System.out.println( BigDecimal.class.isPrimitive()); System.out.println(int.class.isPrimitive()); System.out.println(void.class.isPrimitive()); System.out.println( TestBigdecimal.class.isPrimitive()); System.out.println(Class.class.isPrimitive()); 執行結果: false true true false false
我們也來擴充套件一下其他的知識點。
(2)class類也提供了判斷是不是陣列型別方法isArray()。
(3)getName()返回此 Class物件表示的實體名稱。
- 如果此類物件表示的引用型別不是陣列型別,則返回該類的二進位制名稱
- 如果此類物件表示基本型別或void,則返回的名稱是一個 String 字串
- 如果此類物件表示一類陣列,則名稱的內部形式由元素型別的名稱組成,其後一個或多個“[”字元表示陣列的深度巢狀。
關於第三點中說的元素型別,列出來一張元素型別表:
元素型別 | 編碼 |
boolean | Z |
byte | B |
char | C |
class or interface | Lclassname; |
double | D |
float | F |
int | I |
long | J |
short | S |
例項如下:
// getName long[] a2 = new long[] {1,2,3,4}; String[] a3 = new String[] {"1","2","3","4"}; System.out.println(Integer.class.getName()); System.out.println(a1.getClass().getName()); System.out.println(a2.getClass().getName()); System.out.println(a3.getClass().getName()); System.out.println(int.class.getName()); System.out.println(String.class.getName()); List<String> str = Arrays.asList( a3 ); System.out.println(str.getClass().getName()); System.out.println(str.getClass().isArray()); 執行結果: java.lang.Integer [I [J [Ljava.lang.String; int java.lang.String java.util.Arrays$ArrayList false
(4)判斷陣列中元素型別方法 getComponentType()
getComponentType()方法返回表示陣列的元件型別的Class,也就是說返回陣列的每個元素的型別。如果此類不表示陣列類,則此方法返回null。
例項如下:
// 返回陣列的元素型別 int[] a1 = new int[] {1,2,3,4}; System.out.println(a1.getClass().getComponentType()); System.out.println(a1.getClass()); System.out.println(int.class.getComponentType()); 執行結果: int class [I null
上面的方法都是Class類中的方法,Class類裡面的方法還有很多,後續我會把一一解析的。