Pergunta

O que Java ver com variáveis ??longos durante a execução disso?

Versão errada 1:

Vector speeds = ... //whatever, speeds.size() returns 2
long estimated = 1l;
long time = speeds.size() + estimated; // time = 21; string concatenation??

Versão errada 2:

Vector speeds = ... //whatever, speeds.size() returns 2
long estimated = 1l;
long time = estimated + speeds.size(); // time = 12; string concatenation??

versão correta:

Vector speeds = ... //whatever, speeds.size() returns 2
long estimated = 1l;
long size = speeds.size();
long time = size + estimated; // time = 3; correct

Eu não entendo, por que Java concatenar-los.

Alguém pode me ajudar, por duas variáveis ??primitivas são concatenados?

Greetings, Guerda

Outras dicas

Meu palpite é que você está realmente fazendo algo como:

System.out.println("" + size + estimated); 

Esta expressão é avaliada esquerda para a direita:

"" + size        <--- string concatenation, so if size is 3, will produce "3"
"3" + estimated  <--- string concatenation, so if estimated is 2, will produce "32"

Para chegar a este trabalho, você deve fazer:

System.out.println("" + (size + estimated));

Novamente, isto é avaliada esquerda para a direita:

"" + (expression) <-- string concatenation - need to evaluate expression first
(3 + 2)           <-- 5
Hence:
"" + 5            <-- string concatenation - will produce "5"
scroll top