En termes de performances, un int est plus rapide dans presque tous les cas. Le processeur est conçu pour fonctionner efficacement avec des valeurs 32 bits.
Les valeurs plus courtes sont compliquées à gérer. Pour lire un seul octet, par exemple, le processeur doit lire le bloc de 32 bits qui le contient, puis masquer les 24 bits supérieurs.
Pour écrire un octet, il doit lire le bloc 32 bits de destination, écraser les 8 bits inférieurs avec la valeur d'octet souhaitée et réécrire l'intégralité du bloc 32 bits.
En termes d'espace, bien sûr, vous économisez quelques octets en utilisant des types de données plus petits. Donc, si vous construisez une table avec quelques millions de lignes, des types de données plus courts peuvent valoir la peine d'être envisagés. (Et la même raison pourrait être une bonne raison pour laquelle vous devriez utiliser des types de données plus petits dans votre base de données)
Et du point de vue de l'exactitude, un int ne déborde pas facilement. Et si vous pensiez votre valeur va tenir dans un octet, puis à un moment donné dans le futur, une modification apparemment inoffensive du code signifie que des valeurs plus importantes y seront stockées ?
Ce sont quelques-unes des raisons pour lesquelles int devrait être votre type de données par défaut pour toutes les données intégrales. N'utilisez byte que si vous souhaitez réellement stocker des octets machine. Utilisez uniquement des shorts si vous avez affaire à un format de fichier ou à un protocole ou similaire qui spécifie en fait des valeurs entières de 16 bits. Si vous n'avez affaire qu'à des nombres entiers en général, faites-en des entiers.