2
respostas

Dúvida sobre referência

O instrutor Paulo criou uma referencia chamada "aulas" do tipo List da classe aula e atribuiu como sendo retorno do método getAulas(). O que me deixou confuso foi em relação ao uso do método add() pela referência "aulas" que adicionou também na lista contida na classe "Curso". Foi dito que isso ocorre pois os dois possuem a mesma referencia, então faz todo sentido. O que não fez sentido para mim foi o simples exemplo abaixo:

int a = 5;
int b = a;
b+=1;
System.out.println(a);

As referencias "a" e "b" apontam para o mesmo endereço de memória, correto? Então seguindo a mesma lógica que ocorreu na outra situação, pq aqui imprime o valor de "a'" sendo 5 e não 6?

2 respostas

Boa noite Felipe,

Você tem duas variaveis - (a) = 5 e (b) que recebe (a) ou seja tem o valor 5 também, (b) recebe ele mesmo + 1 = ou seja 6 mas a tua saída do sysout é somente da variável (a) se vc fizer a saída da (b) vai ter o valor 6.

muda a sua saída System.out.println("VAR a: " + a + " Var b: " + b);

Boa tarde Renato! Agradeço a resposta, mas acho que não ficou claro minha dúvida. Existe a classe chamada "Curso" e nela contém uma lista como atributo "private List aulas = new ArrayList()", essa classe possui o método getAulas() que retorna a List. Aí na classe de teste foi feito isso:

public class TestaCurso {

    public static void main(String[] args) {

        Curso javaColecoes = new Curso("Dominando as coleções do Java", "Paulo Silveira");

        List<Aula> aulas = javaColecoes.getAulas();
        System.out.println(aulas);

        aulas.add(new Aula("Trabalhando com ArrayList", 21));

        System.out.println(aulas);
        System.out.println(javaColecoes.getAulas());
    }
}

o "b+=1" no exemplo anterior foi como uma forma de representar o método add(). Naquele exemplo imprime a variavel "a" que continua sendo 5 e obviamente se imprimirmos o "b" irá ser 6. E pq aqui as saídas são iguais?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software