黑马程序员技术交流社区
标题:
关于字符和字符串输出的问题
[打印本页]
作者:
bushangkoukou
时间:
2013-5-22 15:28
标题:
关于字符和字符串输出的问题
char c='张';
char c2='三';
System.out.println(c+""+c2);
这个我们知道的,输出的是张三
char c='张';
char c2='三';
System.out.println(c+c2);
这个我们也知道输出的是数字44329
char c='张';
char c2='三';
System.out.println(c+'男'+c2);
问题来了,为什么这个输出的也是数字 94336
我们知道 + 有两种用法如果两边都为数值做相加,否则做链接,请问最后一个里面的 '男'不是字符么,不是数值,怎么做相加运算了?
作者:
谢孔营
时间:
2013-5-22 15:44
既然c,和c2都是字符,可以自动转为ASCII码进行运算,那么字符‘男’也是一样,也可自动转为ASCII码,如果是把‘男’改为
“男”字符串就不会输出数字了。
作者:
王靖远
时间:
2013-5-22 15:47
字符当然是相加了。自动转化成ASCII码表中对应的数字相加。想是字符连接符的话就要用双引号。
作者:
王靖远
时间:
2013-5-22 15:48
char可以存单个字。因为都是占2个字节,所以也可以和字符进行运算。
作者:
ozt6719393
时间:
2013-5-22 16:01
字符+“”会变成字符串相连接,所以第一次的输出时“张三”。
第二次中“张”+“三”,首先会把“张”和“三”装换成ASCII表对应的数值再相加,所以是44329。
第三次原理同第二次,所以是94336.如果是把‘男’改为“男”字符串就不会输出数字了。
作者:
骑上最爱
时间:
2013-5-22 17:11
' '号引起来的都是字符,说以在怎么相加都是数字,如果在后面加个“”号就转换为字符串了。
作者:
kaka小明
时间:
2013-5-22 17:38
汉字字符常量在java中的默认编码方式是UNICODE,都有自己对应的码值,就像英文字符采用ASCII码一样,如果均是字符相加,则是对各自的码值做求和,当有字串时,这做字串链接处理。
作者:
金辉
时间:
2013-5-22 17:57
System.out.println(c+c2); 和 System.out.println(c+'男'+c2);
中输出的本质上是相同的,都会进行运算,'男'也是char类型的
前面System.out.println(c+""+c2); 在中间加上了“”,它整体转换成String类型的了
作者:
Super_Class
时间:
2013-5-22 18:04
这个就要说到unicode表了。
System.out.println(....);//这个输出语句,得到的一定是字符串
System.out.println(c+""+c2);//这个是直接转成String了。
System.out.println(c+c2); //这个char+char类型的,得到的是char类型的。在ASCII表中是有映射的。
System.out.println(c+'男'+c2); //这个也是一样的,计算结果也是char类型的。
注意以下这种情况:
System.out.println(""+1+2);//这里得到的是字符串。
System.out.println(1+2); //这里得到的结果3,是基本数据类型。但是自动包装了。又调用了Integer的toString方法。所以输出的3还是字符串
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2