2
respostas

Sobre a Data

Quando executo meu programa aparece como data a seguinte expressão: Data@6bc7c054 Caso alguém possa analisar meu código:

class Funcionario{

    String nome;
    String rg;
    double salario;
    Data dataEntrada;
    String departamento;


    public void recebeAumento(double valorDoAumento){
        salario+=valorDoAumento;

    }

    public double calculaGanhoAnual(){
        //salario=salario*12; Era meu jeito;
        return this.salario*12;

    }
}
class Data{

    int dia;
    int mes;
    int ano;

    void escreveData(int dia,int mes,int ano){
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

}
class Programa{

    public static void main(String[]args){

        Funcionario bruno = new Funcionario();
        bruno.nome = "Bruno Queiroz";
        bruno.rg = "1234.567";
        bruno.salario = 20.000;


        System.out.println(bruno.nome);

        bruno.dataEntrada = new Data();
        bruno.dataEntrada.escreveData(15, 9, 2016);

        System.out.println(bruno.dataEntrada);

        Funcionario daianara = bruno;

        if (bruno != daianara){
            System.out.println("São diferentes");
        }else{
            System.out.println("São iguais");
        }

    }
}

ps: estou fazendo as classes em arquivos separados, mas acredito que isso não esteja influenciando neste resultado. Obrigada!

2 respostas

Opa Daianara, tudo bom?

Então, o comportamento esperado é este mesmo. Quando você faz:

System.out.println(bruno.dataEntrada);

O Java imprime o conteúdo do atributo dataEntrada que é a referência para um objeto do tipo Data.

Se quiser imprimir o conteúdo você deve criar um método que formate e retorne a data dentro da classe Data e chamá-lo no momento que você quer imprimir, algo como:

System.out.println(bruno.dataEntrada.formatada());

Abraço!

Olá Daianara.

Apenas complementando o código da Joviane, o método 'formatada', que seria instanciado dentro da classe DATA ficaria como algo do tipo:

String formatada () {
    return (this.dia + "/" + this.mes + "/" + this.ano);
}

Quando for chamar o método, na classe principal, basta colocar, seguindo seu exemplo:

System.out.println(bruno.dataEntrada.formatada());

Abraços,

Marco Aurélio