(Casi) Todas las operaciones activadas byte, las shortpromocionarán a int, por ejemplo, no puede escribir:
short x = 1;
short y = 2;
short z = x + y; //error
La aritmética es más fácil y directa cuando se usa int, no es necesario lanzar.
En términos de espacio, tiene una muy poca diferencia. bytey shortcomplicaría las cosas, no creo que esta micro optimización valga la pena ya que estamos hablando de una cantidad fija de variables.
bytees relevante y útil cuando programa para dispositivos integrados o cuando trata con archivos / redes. Además, estas primitivas son limitadas, ¿y si los cálculos pudieran exceder sus límites en el futuro? Trate de pensar en una extensión para la Calendarclase que pueda desarrollar números más grandes.
También tenga en cuenta que en los procesadores de 64 bits, los locales se guardarán en los registros y no utilizar ningún recurso, por lo que usar int, shorty otras primitivas no hará ninguna diferencia en absoluto. Además, muchas implementaciones de Java alinean variables * (y objetos).
* byte y shortocupan el mismo espacio como intsi fueran variables locales , variables de clase o incluso variables de instancia . ¿Por qué? Porque en (la mayoría) de los sistemas informáticos, las direcciones de las variables están alineadas , por lo que, por ejemplo, si usa un solo byte, en realidad terminará con dos bytes, uno para la variable en sí y otro para el relleno.
Por otro lado, en las matrices, bytetome 1 byte, shorttome 2 bytes y inttome cuatro bytes, porque en las matrices solo el inicio y quizás el final deben estar alineados. Esto hará una diferencia en caso de que quiera usar, por ejemplo System.arraycopy(), entonces realmente notará una diferencia de rendimiento.