If it is not as low as bit masking or memory intensity, where every byte of each object matters, I would probably use int , even if byte could do it.
Remember that Java objects are often complemented, making access to the JVM easier. therefore, depending on the other fields of your class, using a byte may still occupy the same memory as int! See javamex exploring Java memory usage
If I know that there are only 10 possible values, for OO reasons, I would not use byte to store it. Why will the values be from 1 to 10? Does each meaning mean something special? If so, I would probably use enum and give each of these 10 values a drop-down name for the intent.
source share