使用显式类型转换将十六进制整数转换为字符?
Posted
技术标签:
【中文标题】使用显式类型转换将十六进制整数转换为字符?【英文标题】:Converting a hexadecimal Integer into a character using explicit type conversion? 【发布时间】:2012-09-27 20:39:07 【问题描述】:我编写了以下代码,但是 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);
【问题讨论】:
输出结果是什么?您的期望是什么? 为什么输出有差异??? /*代码 1*/ int hex = (char)0xA; System.out.println(hex); /*代码 2*/ int hex = 0xA; System.out.println((char)hex); 【参考方案1】:int hex = 0xA;
System.out.println( (char)hex );
十六进制值 0xA(或十进制 10)是 ASCII 中的“\n”(换行符)。 因此输出。
编辑(感谢halex 在 cmets 中提供更正:
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.
【讨论】:
为什么输出有差异 /*code 1*/ int hex = (char)0xA; System.out.println(hex); /*代码 2*/ int hex = 0xA; System.out.println((char)hex); 关于您的编辑:在您编写的代码的 cmets 中,toString
在 int
和 char
上被调用,但这是不正确的。没有自动装箱,但为 int
和 char
类型调用了适当的 println
重载版本。【参考方案2】:
我假设您希望打印字母 A
。
而不是print
使用printf
。
int hex=0xA;
System.out.printf("%X%n", hex);
【讨论】:
如果是这样,那么 %n 是做什么的 换行符。没有那个 printf 更像是print
而不是println
。以上是关于使用显式类型转换将十六进制整数转换为字符?的主要内容,如果未能解决你的问题,请参考以下文章