(Casi) Todas las operaciones activadas byte
, las short
promocionará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. byte
y short
complicaría las cosas, no creo que esta micro optimización valga la pena ya que estamos hablando de una cantidad fija de variables.
byte
es 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 Calendar
clase 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
, short
y otras primitivas no hará ninguna diferencia en absoluto. Además, muchas implementaciones de Java alinean variables * (y objetos).
* byte
y short
ocupan el mismo espacio como int
si 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, byte
tome 1 byte, short
tome 2 bytes y int
tome 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.