Ceci est une ancienne question et pat a fait brièvement mention char, j'ai juste pensé que je devrais élargir ces pour les autres, qui va regarder cette en bas de la route. Prenons regarder de plus près les types primitifs de Java:
octet de 8 bits entier signé
court - 16 bits entier signé
int - entier signé 32 bits
long de 64 bits entier signé
char - caractères 16 bits (entier non signé)
Bien que le char ne prend pas en charge non signé de l'arithmétique, essentiellement, il peut être traité comme un entier non signé. Vous devez explicitement exprimés opérations arithmétiques de retour en char, mais il ne vous fournir un moyen pour spécifier les nombres non signés.
char a = 0;
char b = 6;
a += 1;
a = (char) (a * b);
a = (char) (a + b);
a = (char) (a - 16);
b = (char) (b % 3);
b = (char) (b / a);
//a = -1; // Generates complier error, must be cast to char
System.out.println(a); // Prints ?
System.out.println((int) a); // Prints 65532
System.out.println((short) a); // Prints -4
short c = -4;
System.out.println((int) c); // Prints -4, notice the difference with char
a *= 2;
a -= 6;
a /= 3;
a %= 7;
a++;
a--;
Oui, il n'y a pas de support direct pour les entiers non signés (évidemment, je n'aurais pas à lancer la plupart de mes opérations de retour en char si il y avait un soutien direct). Cependant, il existe certainement un unsigned type de données primitif. J'aurais aimé avoir vu un octet non signé, mais je suppose que le doublement de la mémoire de coûts et d'utiliser plutôt le char est une option viable.
Edit:
Avec JDK8 il y aura de nouvelles Api pour Longtemps et Entier qui fournissent des méthodes d'assistance en cas de traitement de longue et int les valeurs comme des valeurs non signées. En outre, la Goyave fournit un certain nombre de méthodes d'aide à faire la même chose pour les types integer, permettant de combler le vide laissé par l'absence de la prise en charge native pour les entiers non signés.