int array[] = {'a',98};
for(int num:array) {
System.out.println(num);
}
如果我打印這一點,我會得到O/P爲。
如果我打印(char) num
那麼o/p將是a b。
是否可以打印陣列爲a 98?我的猜測是,數組將存儲數組元素的整數值,這是不可能的。但是這裏有什麼解決方案
int array[] = {'a',98};
for(int num:array) {
System.out.println(num);
}
如果我打印這一點,我會得到O/P爲。
如果我打印(char) num
那麼o/p將是a b。
是否可以打印陣列爲a 98?我的猜測是,數組將存儲數組元素的整數值,這是不可能的。但是這裏有什麼解決方案
我不認爲有什麼辦法可以用int[]
來做到這一點。但是您可以創建Object[]
來實現此目的。
這裏是代碼片段:
public static void main (String[] args) throws Exception {
Object array[] = {'a',98};
for(Object o : array){
System.out.println(o);
}
}
輸出:
a
98
如果只有兩種可能的類型(char和int),我寧願創建一個自定義對象來保持該值並確保它是int或char。這樣可以避免危險的行爲,因爲Object數組可以填充任何東西。 –
Object[] array = { 'a', 98 }
if (array[i] instanceof Character) { // Or Integer
如果使用對象數組,他不必檢查該類,因爲該對象的toString方法是自動調用的。 (在他的打印示例中) –
爲什麼if語句?只需使用'array [i] .toString()'獲得一個不可知的字符串表示。 – MichaelK
@MichaelKarnerfors你甚至不需要調用toString(),因爲它被自動調用! –
不,這是不可能的int[]
知道,如果它的數據被寫入一個字符或在源代碼中的號碼。如果你想保留這種信息,你需要一個不同的數據結構。
你有int[] array
,這就是字節碼的樣子:
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_2
1: newarray int
3: dup
4: iconst_0
5: bipush 97
7: iastore
8: dup
9: iconst_1
10: bipush 98
12: iastore
13: astore_1
14: return
}
正如你所看到的,值插入爲int
。
其他用戶建議使用Object[] array
。看看它的字節碼:
public class Test {
public Test();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_2
1: anewarray #2 // class java/lang/Object
4: dup
5: iconst_0
6: bipush 97
8: invokestatic #3 // Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
11: aastore
12: dup
13: iconst_1
14: bipush 98
16: invokestatic #4 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
19: aastore
20: astore_1
21: return
}
注意
// Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
線,它告訴該方法Character.valueOf
被調用,所以你會得到實際的字符,而不是它的int
價值。
我想不出有辦法做到這一點。 你想這麼做的原因是什麼?也許你應該使用不同的方法? –
我懷疑這是可能的。你可以用'List'代替嗎? – sidgate
一旦這些值在數組中,它們就是普通整數。無法知道它們來自一個字符還是一個常規整數。 – Berger