返回信息流问以下两个语句输出什么?
1、System.out.println('1'+1);
2、System.out.println(1+"welcome"+'a'+1);
答案给的是:1->50 2->1welcomea1
我觉得这两个答案是矛盾的,如果你把'1'当成是一个单字符而且ASC码值为49的话,那第二题中的'a'也有它的ASC码值97啊,为什么第二题的答案不是:1welcome971 ?
求解释。。
这是一条镜像帖。来源:北邮人论坛 / java / #22942同步于 2012/7/13
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
一个JAVA输出的问题。。。这个问题也许有点细了。。
Liliangliang
2012/7/13镜像同步18 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
因为 + 运算符是左结合的
【 在 liliangliang (狼来了) 的大作中提到: 】
: 问以下两个语句输出什么?
: 1、System.out.println('1'+1);
: 2、System.out.println(1+"welcome"+'a'+1);
: ...................
【 在 lastword 的大作中提到: 】
: 因为 + 运算符是左结合的
:
每太懂。。左结合的就得把'1'当成字符,而不把‘a’当成字符么?我觉得第二题中答案是把‘a’当成一个字符串了。。
..左结合就是从左到右依次计算
遇到不同类型还要涉及自动类型转换
你第一句是低精度的char向高精度的int转换
第二句是基本类型char向类类型String转换,然后基本类型int也向String转换
【 在 liliangliang (狼来了) 的大作中提到: 】
: 每太懂。。左结合的就得把'1'当成字符,而不把‘a’当成字符么?我觉得第二题中答
案是把‘a’当成一个字符串了。。
【 在 shoren 的大作中提到: 】
: System.out.println('a' + 1); 【98】
: System.out.println("a" + 1); 【a1】
: 这个直观点儿~
就是不太明白为什么多了个引号效果就不一样了呢,
是不是因为:如果加号两边都是数字或者单字符,那结果就是int,加号就是加法。如果,只要有一边是“”字符串,那结果一定也是字符串,加号就是个连接符?
也就是说->
System.out.println(1+"a" ); 【1a】
System.out.println(1+'a'); 【98】
和位置没关系?
【 在 lastword 的大作中提到: 】
: ..左结合就是从左到右依次计算
: 遇到不同类型还要涉及自动类型转换
: 你第一句是低精度的char向高精度的int转换
: ...................:
从左到右转换是没错,那第二句中的三个加号分别是 char向类类型string转换 类类型string向char转换 char向int转换么?
我在哪个地方说是从左到右转换了。。
【 在 liliangliang (狼来了) 的大作中提到: 】
: 从左到右转换是没错,那第二句中的三个加号分别是 char向类类型string转换 类类
型string向char转换 char向int转换么?
找本好点的Java书,都会告诉你类型转换的规则的,要不google也行...
【 在 liliangliang (狼来了) 的大作中提到: 】
: 就是不太明白为什么多了个引号效果就不一样了呢,
: 是不是因为:如果加号两边都是数字或者单字符,那结果就是int,加号就是加法。如果,只要有一边是“”字符串,那结果一定也是字符串,加号就是个连接符?
: 也就是说->
: ...................
【 在 lastword 的大作中提到: 】
: 我在哪个地方说是从左到右转换了。。
: 型string向char转换 char向int转换么?
:
“从左到右依次计算”。。。