Quando uso: System.out.println(segundaConta.saldo); aparece o saldo da primeira conta.
Entendo que ao usar:: System.out.println(primeiraConta); deveria aparecer todos os dados, porém o resultado é: Conta@54bedef2.
Porque acontece isso?
Quando uso: System.out.println(segundaConta.saldo); aparece o saldo da primeira conta.
Entendo que ao usar:: System.out.println(primeiraConta); deveria aparecer todos os dados, porém o resultado é: Conta@54bedef2.
Porque acontece isso?
Oi Bruna
Apenas para eu conseguir te explicar com mais precisão, poderia enviar seu código?
Abraço!
Oi Otávio, segue abaixo:
public class TestaReferencia {
public static void main(String[] args) {
Conta primeiraConta = new Conta();
primeiraConta.saldo = 300;
System.out.println("Saldo da primeira conta:" + primeiraConta.saldo);
Conta segundaConta = primeiraConta;
System.out.println("o saldo da segunda conta é " + segundaConta.saldo);
segundaConta.saldo += 100;
System.out.println("saldo da segunda conta atualizado " + segundaConta.saldo);
System.out.println("Saldo da primeira conta atualizado " + primeiraConta.saldo);
//If para ver a referencia da conta
if (primeiraConta == segundaConta) {
System.out.println("As contas são iguais");
}
else {
System.out.println("São contas diferentes");
}
}
}
Entendo que ao usar:: System.out.println(primeiraConta); deveria aparecer todos os dados, porém o resultado é: Conta@54bedef2.
Está imprimindo o endereço de memória Conta@54bedef2 por conta que não existe o método toString() na sua classe Conta, se você implementar conforme exemplo abaixo será impresso "Conta{saldo=300.0, agencia=0, numero=0, titular='null'}"
class Conta{
double saldo;
int agencia;
int numero;
String titular;
@Override
public String toString() {
return "Conta{" +
"saldo=" + saldo +
", agencia=" + agencia +
", numero=" + numero +
", titular='" + titular + '\'' +
'}';
}
}
Quando uso: System.out.println(segundaConta.saldo); aparece o saldo da primeira conta.
Isso acontece porque no código que você envou existe apenas 1 objeto conta (você chamou o new apenas uma vez) e está referenciando esse mesmo objeto usando a variável primeiraConta e segundaConta, mas de fato são o mesmo objeto.
Conta primeiraConta = new Conta(); // cria 1 objeto conta e referencia ele por primeiraConta
primeiraConta.saldo = 300; // coloca o saldo do objeto conta em 300
Conta segundaConta = primeiraConta; // segundaConta aponta para o mesmo objeto que primeiraConta
if (primeiraConta == segundaConta) { // são o mesmo objeto Conta
....