Java - char, int conversions

En Java, le suivant est autorisé:

char c = 'A' + 1;

Ici, c contiendra la valeur "B". Ci-dessus, d'abord l'expression est évaluée. Si 'A' est converti à 65 ans, l'ensemble de l'expression est évaluée à 66, et puis 66 est converti en " B " depuis que nous sommes stocker la valeur dans un char.

La suite, cependant, donne une erreur de compilation:

char c = 'A';
c = c + 1;

Qu'est-ce que l'explication de la façon dont Java vues les expressions différemment? Par ailleurs, le suivant fonctionne très bien aussi:

char c = 'A';
c++;
  • Veuillez vous référer à la question suivante et specfically à rgettman de réponse: stackoverflow.com/questions/18648283/...
  • Je ne suis pas sûr si, en disant que 66 est converti à 'B' est un précis de dire. Les personnages sont essentiellement des chiffres déjà.
  • C'est un point intéressant si le spec ne décrivent char comme un éventail de points de code ainsi que la gamme intégrale. Pour les littéraux, un caractère littéral ("B") est toujours de type char et bien sûr 66 est toujours de type int. Peut-être le plus précis serait de dire qu'elle est convertie en '\u0042 " (un code numérique qui est toujours de type char).
  • C'est une bonne question , je n'ai pas vu comme ça avant. Génial question. Et votre réponse est-elle grande et complété pour le vôtre.
InformationsquelleAutor Cosmic_Dust | 2014-01-23