• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Operador de Incremento puzzle 005!! – Resposta

August 18, 2016 by Mauda Leave a Comment

Conteúdo do Post:
  1. Puzzle 005 – Resposta
  2. finnaly{

Olá Pessoal, tudo bom?

Aqui é a resposta do puzzle 005. Veja na continuação deste post!

Puzzle 005 – Resposta

E aí, o que o código da classe Teste irá imprimir no console???

Java
1
13

Mas porque ele imprimiu esse valor?

Vamos iniciar pelo início :-P. Pela linha 9:

Java
1
ClasseInterna instancia = new ClasseInterna(5);

Nessa linha o construtor da ClasseInterna é chamado passando o valor 5. Agora vamos ver a linha 19, única linha de código do construtor:

Java
1
this.x = y++;

De acordo com o que aprendemos com os outros puzzles, o operador de pós incremento não influencia no valor da variável atribuída quando existe apenas uma aparição do operador na mesma variável. Assim o valor do atributo x será 5.

Agora vamos voltar para a linha 10:

Java
1
System.out.println(instancia.metodo(instancia));

Essa linha pega a instância que possui o valor de x como 5 e chama o método metodo(instancia). Repare que a instância criada é passada para o método. Vamos para o método:

Java
1
2
3
4
5
6
7
8
9
10
11
int metodo(ClasseInterna instancia) {
if (instancia.x == 5) {
instancia.x += 6;
metodo(instancia);
}
if (instancia.x == 6) {
instancia.x += 9;
metodo(instancia);
}
return ++instancia.x;
}

A instância (valor de x = 5) enviada é utilizada pelo if da linha 23, o qual entra dentro desse if.

Assim o atributo x é acrescido de 6, passando para o valor 11. Após isso na linha 25 é chamado novamente o método.

Nessa segunda chamada o java não entra em nenhum if, chegando na linha 31, o qual acresce em mais uma unidade a variável x, passando pra 12.

Lembre-se estávamos na segunda chamada do método, assim retornamos para a primeira chamada, que cai novamente na linha 31, o qual acrescenta em mais uma unidade, 13 e retornando para o System.out.println() o qual imprime 13 no console.

finnaly{

Gostou dos puzzles? Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!

Até um próximo post!

Filed Under: Java, Puzzle Tagged With: Java, JUnit, pós incremento, pré incremento, puzzle

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in