6

我编写了以下代码,但是 o/p 不是预期的?有人指导我吗?

问题:编写一个示例程序来声明一个十六进制整数并使用显式类型转换将其转换为字符?

class hexa
{
public static void main(String ar[])
{
    int hex=0xA;
    System.out.println(((char)hex));
}
}

请告诉我:为什么输出有差异

/*code 1*/
int hex = (char)0xA; 
System.out.println(hex); 
/*code 2*/
int hex = 0xA; 
System.out.println((char)hex);
4

2 回答 2

11
int hex = 0xA; 
System.out.println( (char)hex );

十六进制值 0xA(或十进制 10)是 ASCII 中的“\n”(换行符)。
因此输出。

编辑(感谢halex在评论中提供更正:

int hex = (char) 0xA;
System.out.println(hex); //here value of hex is '10', type of hex is 'int', the overloaded println(int x) is invoked.

int hex = 0xA;
System.out.println((char) hex); //this is equivalent to System.out.println( '\n' ); since the int is cast to a char, which produces '\n', the overloaded println(char x) is invoked.
于 2012-10-07T09:05:31.483 回答
1

我假设您希望A打印这封信。而不是print使用printf.

int hex=0xA;
System.out.printf("%X%n", hex);
于 2012-10-07T09:07:11.140 回答