Java 在执行加法时如何处理长变量?
错误的版本 1:
Vector speeds = ... //whatever, speeds.size() returns 2
long estimated = 1l;
long time = speeds.size() + estimated; // time = 21; string concatenation??
错误的版本 2:
Vector speeds = ... //whatever, speeds.size() returns 2
long estimated = 1l;
long time = estimated + speeds.size(); // time = 12; string concatenation??
正确的版本:
Vector speeds = ... //whatever, speeds.size() returns 2
long estimated = 1l;
long size = speeds.size();
long time = size + estimated; // time = 3; correct
我不明白,为什么 Java 将它们连接起来。
谁能帮我,为什么要连接两个原始变量?
你好,你好
最佳答案
我猜你实际上是在做类似的事情:
System.out.println("" + size + estimated);
这个表达式从左到右求值:
"" + size <--- string concatenation, so if size is 3, will produce "3"
"3" + estimated <--- string concatenation, so if estimated is 2, will produce "32"
要让它工作,你应该这样做:
System.out.println("" + (size + estimated));
再次从左到右求值:
"" + (expression) <-- string concatenation - need to evaluate expression first
(3 + 2) <-- 5
Hence:
"" + 5 <-- string concatenation - will produce "5"
关于java - 为什么添加长变量会导致串联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/243045/