Estou surpreso ao ver esse comportamento.
É um bug ou algo assim?
for(Object obj = new Object(), Integer = new Integer(300);
obj.toString().length()>3;
System.out.println("on object's loop")) {
} //causes an infinite loop (not foreach loop, of course)
o código acima é compilado e executado sem qualquer referência a new Integer(300)
. Por quê então?
Estou apenas interessado em saber porque Integer = new Integer(300);
está tudo bem sem qualquer referência.
Object obj = new Object(), Integer = new Integer(300);
Isso cria duas variáveis:
obj
do tipo Object
, ao qual é atribuído new Object()
.Integer
(sim, esse é o nome da variável) também do tipo Object
, ao qual é atribuído new Integer(300)
.A propósito, isso não tem nada a ver com o for
-loop; essa linha compilaria bem por conta própria. Agora, se isso ,
fosse realmente um ;
, seria uma história diferente.
Em geral, podemos construir declarações válidas da forma:
Type t1 = ..., t2 = ..., t3 = ..., ...;
que é equivalente a
Type t1 = ...;
Type t2 = ...;
Type t3 = ...;
...
Este artigo é coletado da Internet.
Se houver alguma infração, entre em [email protected] Delete.
deixe-me dizer algumas palavras