fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. public void testaTudo(){
  11. List<ClasseTeste> lista = new ArrayList<ClasseTeste>();
  12.  
  13. ClasseTeste teste1 = new ClasseTeste("Joao", 100);
  14.  
  15. teste1.imprimir();
  16.  
  17. lista.add(teste1); // adiciona teste1 na lista
  18. // note que a variável teste1 ainda está apontando para um objeto do tipo Classeteste
  19. // o valor não some automaticamente
  20.  
  21. teste1.imprimir(); // imprime a mesma coisa que da primeira vez
  22.  
  23. ClasseTeste teste2 = new ClasseTeste("Pedro", 200);
  24.  
  25. teste2.imprimir();
  26.  
  27. lista.add(teste2); // adiciona teste2 na lista
  28.  
  29. // daí podemos fazer:
  30.  
  31. lista.get(0).imprimir(); // imprime o Joao, que foi o primeiro adicionado à lista
  32. lista.get(1).imprimir(); // imprime o Pedro
  33.  
  34. ClasseTeste teste3 = lista.get(0); // coloca em teste3 o primeiro elemento da lista : Joao
  35. // note que o elemento não é removido da lista
  36.  
  37. teste3.setValor(300);
  38.  
  39. teste3.imprimir(); // imprime o Joao, mas com valor 300
  40. teste1.imprimir(); // também imprime Joao, e com valor 300
  41.  
  42. lista.get(0).imprimir(); // tambem imprime Joao, e com valor 300
  43.  
  44. // Nós não mudamos a referência da variável teste1, então
  45. // tanto teste1 quanto teste3 e lista.get(0) retornam o mesmo objeto.
  46.  
  47. // inclusive, podemos fazer:
  48. lista.get(0).setValor(500);
  49.  
  50. lista.get(0).imprimir(); // Joao, com valor 500
  51. teste1.imprimir(); // Joao, com valor 500
  52.  
  53. }
  54.  
  55. public static void main (String[] args) throws java.lang.Exception
  56. {
  57.  
  58. new Ideone().testaTudo();
  59. }
  60.  
  61. class ClasseTeste{
  62. String nome;
  63. int valor;
  64.  
  65. public ClasseTeste(String nome, int valor){
  66. this.nome = nome;
  67. this.valor = valor;
  68. }
  69.  
  70. // permite alterar o valor
  71. public void setValor(int novovalor){
  72. this.valor = novovalor;
  73. }
  74.  
  75. // exibe nome e valor
  76. public void imprimir(){
  77. System.out.println("Nome : " + this.nome + " Valor : " + this.valor);
  78. }
  79. }
  80. }
Success #stdin #stdout 0.03s 711168KB
stdin
Standard input is empty
stdout
Nome : Joao  Valor : 100
Nome : Joao  Valor : 100
Nome : Pedro  Valor : 200
Nome : Joao  Valor : 100
Nome : Pedro  Valor : 200
Nome : Joao  Valor : 300
Nome : Joao  Valor : 300
Nome : Joao  Valor : 300
Nome : Joao  Valor : 500
Nome : Joao  Valor : 500