我的代码是
int array[] = {'a',98};
for(int num:array) {
System.out.println(num);
}
Run Code Online (Sandbox Code Playgroud)
如果我打印这个,我会得到o/p为97 98.
如果我打印(char) num那么o/p将是ab.
是否可以将数组打印为98?我的猜测是,数组将存储数组元素的整数值,这是不可能的.但是这里的解决方案呢
use*_*685 27
我认为没有办法做到这一点int[].但你可以创建Object[]来实现这一目标.
这是代码片段:
public static void main (String[] args) throws Exception {
Object array[] = {'a',98};
for(Object o : array){
System.out.println(o);
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
a
98
Run Code Online (Sandbox Code Playgroud)
Mar*_*oun 11
你有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
}
Run Code Online (Sandbox Code Playgroud)
如您所见,值插入为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
}
Run Code Online (Sandbox Code Playgroud)
请注意
// Method java/lang/Character.valueOf:(C)Ljava/lang/Character;
Run Code Online (Sandbox Code Playgroud)
line,告诉该方法Character.valueOf被调用,因此您将获得实际字符而不是其int值.
Object[] array = { 'a', 98 }
if (array[i] instanceof Character) { // Or Integer
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1661 次 |
| 最近记录: |