黑马程序员技术交流社区
标题:
吧2个字符连着打印不出来
[打印本页]
作者:
ilvsoft
时间:
2014-4-7 09:56
标题:
吧2个字符连着打印不出来
System.out.println('*'+'*');//打印出来是84
System.out.println("*"+'*');//打印出来是**
System.out.println('*');//打印出来是*
按我的想法System.out.println('*'+'*');应该打印出来是**才对啊,为什么会是84呢
作者:
ok-Prince
时间:
2014-4-7 11:01
本帖最后由 ok-Prince 于 2014-4-7 11:03 编辑
'*'是字符,不是字符串,字符串是双引号,字符是单引号的,'*'在ASCII表中对应的数值是42,两个42做加法运算当然就是84啦,所以会打印出84来,就比如说你输入个'A'+'B',计算机会运算65+66然后把他们的和打印出来是一个道理。下面链接地址是ASCII码表,可以对照上面看一看:
http://www.96yx.com/tool/ASC2.htm
作者:
zhangbingyuan
时间:
2014-4-7 11:10
首先要明确的是 '*' 的类型是char类型的 "*"的类型是String类型的
如果char + char,那么就会进行自动类型提升,变成 int(char) + int(char)
int('*') == 42; //即 * 的ASCII码
所以 int('*') + int('*') == 84;
而对于String + (char、int、。。。) ,都会将右边自动类型提升为String类型。
所以“*”+ '*' ----> ** // '*'自动类型提升为String类型,变成了“*”+“*”---->"**"
至于单独打印'*'的时候,没有进行运算,所以不存在自动类型提升,直接输出了char类型的 * 。
希望可以帮到你
作者:
曲佳奇
时间:
2014-4-7 11:17
规则:
1.当左右两边连接的都是非数字类型时,则为连接符;
2当一边是数值类型,另一边是非数值类型时,则为连接符;
3.当两边都是数值类型时,则为运算符,即相加求和的作用。
第一个输出84 是因为加号两边都是'*'(单引号) 属于char类型 这里就把'*'的编码相加了 所以输出的是84
第二个输出** 是因为"*"(双引号) 属于String类型 所以这里+号就起到了链接符的作用
第三个输出* 这个是输出char的一种方式
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2