黑马程序员技术交流社区

标题: 看下这个程序结果为啥是150abc [打印本页]

作者: 费破的可    时间: 2013-10-29 08:50
标题: 看下这个程序结果为啥是150abc
本帖最后由 费破的可 于 2013-10-29 10:06 编辑

class Twsr
{
        public static void main(String[] args)
        {
                String s = '1'+'2'+'3'+"abc";
                System.out.println("s===="+s);
        }
}

作者: 张凡    时间: 2013-10-29 09:07
字符'1','2','3'的值依次是49、50、51,在进行运算时先将这三个字符值相加为150,再加“abc”是150转换为string类型,所以最后输出地值为150abc
作者: 靓仔    时间: 2013-10-29 09:17
因为'1' +'2'+'3'是char类型的,在+"abc"就会把它们转换成String类型的,又因为它们的值分别为49,50,51,相加后,在转成字符串的“150”,所以看到的是150abc
作者: 李文帅    时间: 2013-10-29 09:37
应为char类型数据相加时,会自动转换为int类型,计算的是字符所对应的ASCII码值,'1'=49;'2'='50';'3'=51;
'1'+'2'+'3'=49+50+51=150,其后又加上String类型数据"abc",此时的"+"的含义是字符串连接符,所以是把整型数据150和String类型数据"abc"拼接起来,所以最后的结果是"150abc"
这是我自己的理解,希望对你有所帮助...
作者: 费破的可    时间: 2013-10-29 10:06
谢谢各位
作者: mayor125    时间: 2013-10-29 10:20
字符'1'、'2'、'3'在ASCII码中的数值分别是49、50、51,加起来就是150 。而"abc"表示一个字符串,也就是String类型,由于任何类型的数据和String类型的数据相运算,结果都想String类型转换,所以"abc"前面的“+”表示连接符,所以最终打印结果为150abc 。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2