Char

Pessoal,
Bom dia,
Alguem poderia me explicar o porque deste resultado ! ser 56 ?

 public static void main(String[] args)
    {
      char a = 4;
      System.out.println(a + '4');
    }

Obrigado.

Por que o valor de ‘a’ na tabela Unicode é 52…

http://pt.wikipedia.org/wiki/Unicode

T+

Qual é a diferença entre os dois programas abaixo?

  public static void main(String[] args)
     {
       char a = 4;
       System.out.println(a + '4'); // resposta: 4 somado com  52 = 56
     }
  public static void main(String[] args)
     {
       char a = 4;
       System.out.println(a + "4"); // resposta: 4 concatenado com "4" = "44"
     }

[quote=diego2005]Por que o valor de ‘a’ na tabela Unicode é 52…

http://pt.wikipedia.org/wiki/Unicode

T+[/quote]

Hummm… foi o que pensei, mas se você olhar direito o enunciado… porque o resultado não é 104?

Na verdade, não é o valor de a, mas o valor de ‘4’ que é 52. O valor de a é 4 mesmo, que corresponde a algum caracter esquisito (bel?).

ASCII 4 = EOT (End Of Transmission)

Obviamente o número 4 foi usado no exercício para lembrar que o “char” na verdade é um “unsigned short” - é o único tipo “unsigned” em Java.

Eu lamento profundamente que o sr. James Gosling tenha definido o “byte” como um tipo “signed” (e isso que ele é um engenheiro, basicamente); se ele fosse um tipo “unsigned”, muitos “maskings” desnecessários seriam evitados.

char aceita um inteiro… entao cada letra tem um valor unicode… agora de vc queria concatenar ali deveria usar o " ". Agora fiquei com uma duvida o char aceita ate 127 ou 128?

O “char” do Java ocupa 2 bytes e o valor numérico vai de 0 até 65535. Por exemplo, o caracter 愛 (cuja pronúncia em japonês e mandarim é “AI” e quer dizer amor) tem o código Unicode U+611B, ou seja, em decimal é 24859.

char ai = 24859;

ou

char ai = '\u611B';

Pode ser que você não consiga visualizar o caracter acima; instale uma fonte (como MS Mincho) no seu computador que tenha esses caracteres chineses e japoneses.

[quote=ViniGodoy]Hummm… foi o que pensei, mas se você olhar direito o enunciado… porque o resultado não é 104?

Na verdade, não é o valor de a, mas o valor de ‘4’ que é 52. O valor de a é 4 mesmo, que corresponde a algum caracter esquisito (bel?).[/quote]

Nem notei isso…rsrssrsr

a = 97

Acho que não li o código direito…

Me desculpe…

Vc deve estar confundindo com byte, que aceita de -128 até 127(8 bits ou 1 Byte).Como disse o Thingol, char são 16bits.

Vc deve estar confundindo com byte, que aceita de -128 até 127(8 bits ou 1 Byte).Como disse o Thingol, char são 16bits. [/quote]

char é um inteiro de 16 bits sem sinal. um literal char pode ser representado como um único caracter em aspas simples ‘J’, o valor unicode ‘\u0041’ ou um valor inteiro, desde que menor do que 65536 – segundo o livro da Kathy Sierra.

Isso eu sei, eu pensei q ele tinha confundido char com byte.A saber:
char vai de ‘\u0000’ até ‘\uffff’(inclusive), que é, de 0 até 65535 do Unicode.