Dúvida sobre StackOverFlowError (Questão 9 - Capítulo 5 do SCJP 6 Kathy Sierra)[RESOLVIDO]

3 respostas
tgmangolini

Boa noite,

Estou resolvendo uma questão (em anexo) do livro da Kathy Sierra e estou com uma dúvida…
Mas basicamente o trecho do código que eu estou com dúvida é este (não estou conseguindo identar…):

switch(sw) {

case 0: { for(int x = 10; x > 5; x++)

if(x > 10000000) x = 10;

break;

}

Ao analisar o trecho, acima, constatei que o programa entraria em um loop eterno, o que é correto segundo a resolução da questão. No entanto, estou em dúvida com a relação à opção que diz que ocorreria um "StackOverflowError". Segundo o livro, esta opção é incorreta…alguém saberia me explicar o porquê?
Segundo uma pesquisa que fiz, as variáveis locais também ficam alocadas na pilha (stack), então porque não ocorreria um "StackOverflowError" nessa situação?

Obrigada!!!


3 Respostas

ribclauport
switch(sw) {
  case 0: { 
   for(int x = 10; x > 5; x++){
     if(x > 10000000){
        x = 10;
    }
  }
 break; 
}

Veja que não está havendo a chamada novamente ao método, ou seja não tem como dar stackOverFlowError!, também não estão sendo criadas novas variáveis na pilha, repare que o for, vai iterar até o valor 100000000, e depois vai voltar para o for, desta forma, não entendi a sua duvida!

tgmangolini

Respondeu minha dúvida mesmo sem entendê-la rsss :lol:

ribclauport

Opa, legal que foi respondido, olha um toque, quando eu estava estudando para certificação, colocava sempre as duvidas la no forum de certificação! Acredito que vai obter resultados mais rápidos para suas questões!
So foi uma dica.

Valeu.

Criado 9 de junho de 2012
Ultima resposta 10 de jun. de 2012
Respostas 3
Participantes 2