Galera, boa tarde!!!
Estou com uma pequena dúvida de conceito, que no momento não está atrapalhando meu trabalho, mas me deixou com uma pulga atrás da orelha…rs
olhem esse código de exemplo:
public class Main {
public static void main(String[] args) {
run();
}
public static void run () {
VO vo = new VO();
String teste;
teste = "variavel: Tentando concatenar...";
System.out.println(teste);
concatenar(teste);
System.out.println(teste);
System.out.println("");
vo.teste = "vo: Tentando concatenar...";
System.out.println(vo.teste);
concatenar(vo);
System.out.println(vo.teste);
}
public static void concatenar(String a) {
a += " consegui!!!";
}
public static void concatenar(VO vo) {
vo.teste += " consegui!!!";
}
}
class VO {
String teste;
}
Esse código resulta no seguinte resultado:
variavel: Tentando concatenar...
variavel: Tentando concatenar...
vo: Tentando concatenar...
vo: Tentando concatenar... consegui!!!
A idéia é tentar criar um método que não utilize return, e sim execute as alterações necessárias na String apenas pela referência do objeto em memória. Quando chamo o método concatenar(VO vo), ele passa para o método a instância do objeto VO criada na classe Main, então quando concateno a String, estou executando isso na variável que está dentro da instância da classe VO criada no Main.
Porém quando faço isso utilizando o método concatenar(String a), isso não acontece da mesma forma. Aparentemente o que está acontecendo é uma substituição do objeto String teste criado na Main por outro objeto String criado no método.
É isso mesmo que está acontecendo?
Alguém sabe exatamente o conceito que explica isso?
E como resolver?
Valeu!!!