Dúvida sobre referência

Vejam o seguinte código:

import java.util.ArrayList;

public class Teste 
{

	private Integer inteiro; 
    private ArrayList<Integer> array;
    
    public Teste() 
    {
    	array = new ArrayList();
    }
    
    public void teste(int iteracoes)
    {
    	for(int i=0;i<iteracoes;i++)
    	{
    		inteiro = getInteiro(i);
    		array.add(inteiro);
    	}
    }
    
    public Integer getInteiro(int integer)
    {
    	return new Integer(integer);
    }
    
    public void escreveArray()
    {
    	for(int i=0;i<array.size();i++)
    	{
    		System.out.println(""+array.get(i));
    	}
    }
    
    public static void main(String[] s)
    {
    	Teste teste = new Teste();
    	
    	teste.teste(50);
    	teste.escreveArray();
    }
    
}

Na parte que eu defino “array.add(inteiro);” estou inserindo sempre a mesma referência no ArrayList, não? Ao fim, eu teria N posições preenchidas com a mesma referência ou estou enganado?

Acho que não hein… teu método getInteiro está retornando uma nova instância de Integer.

veja o código:

public void teste(int iteracoes) { for(int i=0;i<iteracoes;i++) { inteiro++; array.add(inteiro); } }

vc pode notar que no final, ERA pra ser tudo o mesmo numero certo ou nao??!?

o array list faz guarda apenas uma NOVA copia seria mais ou menos assim:

ArrayList.add (Integer i) {
  guardaValor ( new Integer(i) );
}

se estiver errado, me corriJam! :wink:

Na verdade os arrays mão trabalham com primitivos apenas com objetos, portanto se vc põe um número esse número é convertido para um Object não interessa se a referência é a mesma ou se é uma nova, quando vc manda ele guardar ele guarda como se fosse uma nova.

caso precise que os objetos não se repitam use Set ao invés de List ou um Map, talvez…