Generell solltest du die Typen nutzen, die am besten Ausdrücken, was du aussagen möchtest. In diesem Fall machen das, mMn, byte und int gleich gut, von daher würde ich int nutzen (ua weil es int-Literale gibt, um Gegensatz zu byte, und das bei Rechenoperationen immer mit int gerechnet wird (abgesehen von long und float/double)).
Besser wäre es u.U., eine extra "Alter"-Klasse (oder "Jahre", oder genereller etwas wie "UnsignedInteger") einzuführen, die drückt dann genauer aus, was du aussagen willst, und kann zusätzlich zB sicherstellen, dass es immer positiv ist.
Der Speicherplatz-Bedarf von byte vs int lässt sich nur relativ schwer eindeutig festlegen. Obige Klasse braucht zB genauso viel Platz, wenn man int benutzten würde. Das kann man im Hinterkopf behalten, sollte aber nicht grundsätzlich erste Priorität haben.
Dass der Cast dort nötig ist überrascht mich grad ([USER=58041]@mihe7[/USER], [USER=57843]@httpdigest[/USER], [USER=61094]@JustNobody[/USER] vielleicht einer von euch warum der nötig ist?), [icode]byte b = 4;[/icode] wäre zB problemlos möglich, hätte erwartet, dass es gleichermaßen für Parameter funktioniert.