Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Curiosidade com relação ao metodo reduzido do for.

Essa questão é mais por caracter de curiosidade

quando escrevemos

for(Object o : lista)

É a mesma coisa que escrever

for(int i=0; i<lista.size(); i++) {
            Object oRef = lista.get(i);

Surgiu essa duvida por que fiz um teste para tentar entender com esse codigo simples e nesse caso parece que ele usou o length pois imprimiu 1 e 2 e depois completou com 0 a outras posições, e no exemplo do curso ele para no numero de contas criadas, como o array tem que nascer com tamanho especifico o array lista usado com java util deve ter um tamanho mas que não é acessado na interação desse laço de for.

public class Testett {

    public static void main(String[] args) {
        int numero[] = new int[10];

        numero[0] = 1;
        numero[1] = 2;

        for(Object o : numero) {
            System.out.println(o);
        }

    }

}

Então pelo que eu entendi se não estou enganado é que ele faz uma verificação se a referencia(Variavel) vem da biblioteca java.Util ele usa o metodo size() se não se é de um array puro ele usa o length é isso?

3 respostas

Oie Fernando, tudo bem contigo?

Esse "for reduzido" se chama foreache e ele faz bastante coisa por de baixo dos panos para gente, inclusive ele consegue perceber quando estamos usando uma collection advinda do pacote java.util ou apenas a array comum.

Por isso a resposta para sua pergunta é sim, ele faz essa lógica usando lenght ou size dependendo do que estamos usando.

Caso de interesse, achei um artigo bem interessante que explica sobre o "foreache" e quais são os outros métodos de implementar essa lógica. Se tiver interesse é só clicar aqui.

Continue assim e bons estudos!

solução!

Igor primeiro quero agradecer seu trabalho, voce esta sempre presente em muitos post de Java e trazendo otimos comentarios, alem de que você sempre tenta agregar com algum conteuto extra como o que colocou acima, adorei o conteudo que você relacionou, com o foreache basicamente voce isenta quase todos os paramentros desnecessários , como o de controle ou de uma criação de objeto local e foca apenas em fazer uma varredura pela lista, muito interessante.

Estava com essa mesma dúvida e estes posts me ajudaram bastante !