一个5的问题,,,50分!!!

时间:2023-01-29 12:09:28
class Hello 

public static void main(String[] args) { 
int a=6;
char b='3';
System.out.println(a+b);
char fire=(char)(a+b);


}   

这段代码只要a+b不超过10的话运行结果为什么无缘无故的前面硬有个5????

8 个解决方案

#1


char fire=(char)(a+b);
这段代码是多余的,,不要也一样!~!

#2


b的ASCII码51,
a+b是6+51=57.

#3


谢谢楼上的!~!~

#4


因为a是整数类型的,要执行a+b,jvm会将b隐式转换为整数类型((int)b=51),所以a+b=6+51=57,输出57

#5


char往int晋升了吧。倒。

#6


class Hello 

public static void main(String[] args) { 
int a=6;
char b='3';
System.out.println(a+b);
char fire=(char)(a+b);


}   

这段代码只要a+b不超过10的话运行结果为什么无缘无故的前面硬有个5????

字符'3'的ASCII的值为51。

System.out.println(a+b);这段代码是先将变量b转换成相应的ASCII值,然后再与a进行相加,结果为57.

char fire=(char)(a+b);
这段代码是将整型57强制转换成char字符类型,即将57的数值转换成相应对的ASCII的字符,即‘9’,所以显示结果如下:
57
9

就是这个形式,你还没有明白吗???

!!!!!!

#7


还有强制类型转换是有风险性的,超出转换后类型的存储范围要负责任的。。。

#8


将C/C++的陋习带到Java来啦!

#1


char fire=(char)(a+b);
这段代码是多余的,,不要也一样!~!

#2


b的ASCII码51,
a+b是6+51=57.

#3


谢谢楼上的!~!~

#4


因为a是整数类型的,要执行a+b,jvm会将b隐式转换为整数类型((int)b=51),所以a+b=6+51=57,输出57

#5


char往int晋升了吧。倒。

#6


class Hello 

public static void main(String[] args) { 
int a=6;
char b='3';
System.out.println(a+b);
char fire=(char)(a+b);


}   

这段代码只要a+b不超过10的话运行结果为什么无缘无故的前面硬有个5????

字符'3'的ASCII的值为51。

System.out.println(a+b);这段代码是先将变量b转换成相应的ASCII值,然后再与a进行相加,结果为57.

char fire=(char)(a+b);
这段代码是将整型57强制转换成char字符类型,即将57的数值转换成相应对的ASCII的字符,即‘9’,所以显示结果如下:
57
9

就是这个形式,你还没有明白吗???

!!!!!!

#7


还有强制类型转换是有风险性的,超出转换后类型的存储范围要负责任的。。。

#8


将C/C++的陋习带到Java来啦!