Passando variavel byte por parâmetro

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.

[code]public class Data {
private byte dia;
private byte mes;
private int ano;

public Data() {
	this ();
}
public Data(byte dia, byte mes, int ano){
	setDia(dia);
	setMes(mes);
	setAno(ano);
	
}

[/code]

Ou só usando cast?tipo ((byte)2) por exemplo

Fazendo cast seria uma forma mais simples, como abaixo:

Data d = new Data((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

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.

Esse seria um modo extremamente econômico de se fazer:

[code]public class Data {

private static final int MES_MASK = 0xF000;
private static final int ANO_MASK = 0x0FFF;
private static final int MES_SHIFT = 12;
private static final int ANO_SHIFT = 0;

private byte dia;
private short mesAno;

public Data() {
    this(15, 9, 1980);
}

public Data(int dia, int mes, int ano) {
    // Cuidado. Se se chama métodos da própria classe no construtor se eles
    // forem final ou private!
    setDia(dia);
    setMes(mes);
    setAno(ano);

}

public final void setAno(int ano) {
    ano = ano << ANO_SHIFT & ANO_MASK;
    mesAno = (short) (mesAno & ~ANO_MASK | ano);
}

public final void setMes(int mes) {
    mes = mes << MES_SHIFT & MES_MASK;
    mesAno = (short) (mesAno & ~MES_MASK | mes);
}

public final void setDia(int dia) {
    this.dia = (byte) dia;
}

public int getDia() {
    return dia;
}

public int getMes() {
    return (mesAno & MES_MASK) >> MES_SHIFT;
}

public int getAno() {
    return (mesAno & ANO_MASK) >> ANO_SHIFT;
}

@Override
public String toString() {
    return String.format("%02d/%02d/%02d", getDia(), getMes(), getAno());
}

public static void main(String[] args) {
    //Veja, funciona mesmo!
    System.out.println(new Data());
    System.out.println(new Data(21, 12, 2022));
    System.out.println(new Data(31, 01, 4000));
}

}[/code]

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.