首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带字符串的Java整数加法

带字符串的Java整数加法
EN

Stack Overflow用户
提问于 2016-04-02 16:49:06
回答 4查看 2.5K关注 0票数 7

在下面的代码示例中,为什么第一个加法(1/2+1/2)打印0,而第二个加法打印00。

代码语言:javascript
复制
System.out.println(1/2+1/2+"=1/2+1/2");
System.out.println("1/2+1/2="+1/2+1/2); 

输出:

0=1/2+1/2

1/2+1/2=00

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-04-02 16:52:24

整数数学(int 1除以int 2是int 0,如果要将浮点结果强制转换为1和2的浮点数类型)和操作顺序,第二个例子是String连接。编译器将其转换为

代码语言:javascript
复制
 System.out.println(new StringBuilder("1/2+1/2=").append(1/2).append(1/2));

然后你得到

代码语言:javascript
复制
 System.out.println(new StringBuilder("1/2+1/2=").append(0).append(0));
票数 4
EN

Stack Overflow用户

发布于 2016-04-02 16:59:49

第一个语句“System.out.println( 1/2 +1/2+”=1/2+1/2);“打印0,因为从1/2获得的整数值为零。其余部分被删除,因为1/2等于0.5,所以.5被删除。第二个语句"System.out.println("1/2+1/2="+1/2+1/2);“由于级联符号而打印出00。在第二个语句中,第一个整数1显示为+1,因此该语句实际上被读取为(+1/2 +1/2),这就是它返回00的原因。如果第二条语句是这样设置的:

代码语言:javascript
复制
System.out.println("1/2+1/2="+ (1/2+1/2));

输出将与第一条语句相同。

票数 0
EN

Stack Overflow用户

发布于 2016-08-04 22:27:50

表达式是从左到右计算的。在第一种情况下,它执行int+int (即0),然后是int + "= String" ( String tmp = "0= String" )。在另一种情况下,您有‘String =“+ intwhich becomes"String =int”to which you append one moreint’。因此,您打印字符串"0“和"0”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36376044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档