Então, estou fazendo 2 construtores. Eu estou tentando passar 2 variaveis byte e uma int como parâmetro para um metodo.
Quanto a int sem problemas, mas a byte eu nao consigo fazer.
Eu lembro que variaveis tipo float nós fazemos " 33.2f ", por exemplo. Gostaria de saber entao como declarar a byte.
Fazendo cast seria uma forma mais simples, como abaixo:
Datad=newData((byte)9,(byte)11,1981);
Na verdade mais simples seria usar o int, porque o problema de usar o byte em outros métodos é esse, que para passá-lo como argumento tem que fazer a conversão, mesmo lá do outro lado o parâmetro tendo o tipo certo.
Por isso o mais usado na maioria dos casos é o int.
Eu recomendaria a você usar o int. A diferença de desempenho é minima, a não ser que você esteja fazendo uma aplicação para uma calculadora kkkkk
ViniGodoy
Se seu sistema for ser paranóico com espaço ocupado, declare o ano também como short ao invés de int.
A paranoia hard seria representar o mês e o ano em uma única variável short (4 bits para o mês, 12 bits para o ano).
Caso contrário, declare tudo como int. Ocupa um pouco mais de memória, mas é mais fácil de lidar e tem melhor performance.
ViniGodoy
Esse seria um modo extremamente econômico de se fazer:
publicclassData{privatestaticfinalintMES_MASK=0xF000;privatestaticfinalintANO_MASK=0x0FFF;privatestaticfinalintMES_SHIFT=12;privatestaticfinalintANO_SHIFT=0;privatebytedia;privateshortmesAno;publicData(){this(15,9,1980);}publicData(intdia,intmes,intano){// Cuidado. Se se chama métodos da própria classe no construtor se eles// forem final ou private!setDia(dia);setMes(mes);setAno(ano);}publicfinalvoidsetAno(intano){ano=ano<<ANO_SHIFT&ANO_MASK;mesAno=(short)(mesAno&~ANO_MASK|ano);}publicfinalvoidsetMes(intmes){mes=mes<<MES_SHIFT&MES_MASK;mesAno=(short)(mesAno&~MES_MASK|mes);}publicfinalvoidsetDia(intdia){this.dia=(byte)dia;}publicintgetDia(){returndia;}publicintgetMes(){return(mesAno&MES_MASK)>>MES_SHIFT;}publicintgetAno(){return(mesAno&ANO_MASK)>>ANO_SHIFT;}@OverridepublicStringtoString(){returnString.format("%02d/%02d/%02d",getDia(),getMes(),getAno());}publicstaticvoidmain(String[]args){//Veja, funciona mesmo!System.out.println(newData());System.out.println(newData(21,12,2022));System.out.println(newData(31,01,4000));}}
Mais econômico que isso, só transformando os campos internos da data em um contador, indicando um número de dias desde um determinado período de tempo.
Como 2 bytes podem armazenar 65.536 dias, você teria então um período de 179 anos de intervalo para guardar.