Diferença entre for

8 respostas
J

Bom dia

Gostaria de saber a diferença entre este dois for

for (x=0; x>0; x++ ){
}
for (Casa casa : casaList){
}

onde acho material para esse segundo for???

8 Respostas

Pedrosa

Esse segundo é o foreach, que entrou no Java a apartir de versão 5.

Mais detalhes:

P

o segundo for é, eventualmente, chamado de foreach …for especial…

o segundo ele é utilizado para percorrer listas, array …qnd vc nao sabe o total de registros q cada lista possue, OU, caso nao seja importante saber…vc quer apenas percorre-la…
[]'s

LPJava

o efeito é o mesmo, porem o segundo vc usa para percorrer um array e um conjunto… se vc precisar obter o tamanho. O proprio foreach como é chamado ja faz isso por vc… mais ele so tem funcionalidade quando vc tem que percorrer todo o seu conjunto/array.
veja

class Arra{
public static void main(String ar[]){
int array[] = {1,2,3,4,5};
for(int z : array)
System.out.println(z);
}}
//mais simples ne?
class Arra2{
public static void main(String args[]){
int array[]={1,2,3,5};
for(int x=0;x<array.length;x++)
System.out.println(array[x]);
}}
//mesma funcionalidade porem essa é a tradicional

foreach so a partir do java 1.5 :smiley:
flw!! espero ter ajudado…

peczenyj

Quem quiser ver algo divertido use o programa javap com a opção -v nessas 2 classes e veja as diferenças.

A versão sem foreach é menor, o main tem ‘43’ instruções enquanto a versão com foreach tem ‘58’. Mas a versão com foreach é mais interessante em alguns momentos :slight_smile:

P

peczenyj:
Quem quiser ver algo divertido use o programa javap com a opção -v nessas 2 classes e veja as diferenças.

A versão sem foreach é menor, o main tem ‘43’ instruções enquanto a versão com foreach tem ‘58’. Mas a versão com foreach é mais interessante em alguns momentos :)

poderia explicar o seria o javap -v? :oops:

peczenyj

direto do man japap

NAME
javap - Java class file disassembler

SYNOPSIS
javap [ options ] class …

DESCRIPTION
The javap command disassembles a Java class file. The options determine the output. If no options are used, javap prints out the package, pro­
tected, and public fields and methods of the classes passed to it. The javap command displays its output to stdout. For example, compile the
following class declaration:

import java.awt.*;
          import java.applet.*;

          public class DocFooter extends Applet {
                    String date;
                    String email;

                    public void init() {
                         resize(500,100);

                         date = getParameter("LAST_UPDATED");
                         email = getParameter("EMAIL");
                    }

                    public void paint(Graphics g) {
                         g.drawString(date + " by ",100, 15);
                         g.drawString(email,290,15);
                    }
          }

   The output from javap DocFooter yields:

          Compiled from DocFooter.java
          public class DocFooter extends java.applet.Applet {
               java.lang.String date;
               java.lang.String email;
               public void init();
               public void paint(java.awt.Graphics);
               public DocFooter();
          }

-v é a opção verbose

é bem util para algumas investigações. Por exemplo, pra saber o que um @interface ou enum geram, ou como o generics funciona por debaixo dos panos, etc.

lgi2020

O javap é realmente uma grande ferramenta!

Abraços.

B
Um exemplo legal de utilidade do foreach tbm é quando você cria um objeto com atributos de varios tipos diferentes(int,String,date,double...Funcionario tem nome,idade,data de nascimento,salario)nesse caso eu acho mais facil utilizar o foreach usando get set para acessar os atributos..
Vector<Funcionario>  listaFunc = pequisaFuncionarios(nome_funcionario);
for(Funcionario i:listaFunc){
     System.out.println("Nome:"+ i.getNome()+"Idade:"+i.getIdade());
  
}

flw []'s

Criado 10 de dezembro de 2007
Ultima resposta 10 de dez. de 2007
Respostas 8
Participantes 7