gente to com uma pequena dúvida em relação ao tamanho e intervalo de uma variável primitiva.
Aprendemos que um tipo byte tem um tamanho de um byte e o seu intervalo é de -128 a 127.Isto quer dizer que se eu declarar uma varíavel do tipo byte e atribuir a ela o valor -128, o tamanho desta variavél em memória é de 1 byte ? Existe alguma maneira de em java mesmo ele me dizer o tamanho que uma variável está ocupando em memória ?
Essa minha dúvida surigiu porque eu digitei -128 no bloco de notas e salvei. Quando vi o tamanho era maior que 1 byte.
[quote=efcjunior]gente to com uma pequena dúvida em relação ao tamanho e intervalo de uma variável primitiva.
Aprendemos que um tipo byte tem um tamanho de um byte e o seu intervalo é de -128 a 127.Isto quer dizer que se eu declarar uma varíavel do tipo byte e atribuir a ela o valor -128, o tamanho desta variavél em memória é de 1 byte ? Existe alguma maneira de em java mesmo ele me dizer o tamanho que uma variável está ocupando em memória ?
Essa minha dúvida surigiu porque eu digitei -128 no bloco de notas e salvei. Quando vi o tamanho era maior que 1 byte.
Desculpa aí galera, fiquei incucado com isso.[/quote]
Você confundiu a representação decimal de -128 (que contém os caracteres ASCII “-”, “1”, “2” e “8”, ou seja, os bytes 0x2D, 0x31, 0x32 e 0x38 ) com o byte 0x80, também conhecido em Java por (byte)-128.
Em Unicode, e usando o Bloco de Notas, você vai ter:
0xFF 0xFE 0x2D 0x00 0x31 0x00 0x32 0x00 0x38 0x00
ou seja, 10 bytes. Os 2 primeiros bytes são o “BOM” (Byte Order Marker).
Você não deve confundir o nome de uma pessoa (ou seja, sua representação como uma string) com uma pessoa “em si” (ou seja, a pessoa “em carne e osso”). “EFCJunior” é uma string e representa a sua digníssima pessoa, que você sabe que não são apenas 9 caracteres.
O número -128 (byte -128, ou 0x80) ocupa 1 byte “em carne e osso”.
Agora, quando você o representa “visualmente”, como uma string, ele pode ocupar 4 caracteres ("-128"), se você o representar como uma string decimal, ou 2 caracteres (80) se você o representar em uma string hexadecimal, ou até 8 caracteres (“10000000”) se você o representar como uma string binária. Tudo é uma questão de representação x realidade.
opa entendi.rs…rs. massa, me lembrei da pré-escola agora…valeu.
Agora to querendo entender o tipo char.
o char pode armazenar em decimais os valores entre 0 a 65535. Pelo que eu entendi, cada decimal neste intervalo é relacionado com um caracter na tabela unicode, então se eu faço char x = 98, vai imprimir um caracter,neste o ‘b’.
Mas também o char ele pode guardar um valor literal. Qual o intervalo de literais ele pode guardar ? Fiz alguns testes e percebi que alguns caracteres ele não compila = ‘ﯣ’
Embora você possa inserir literais de outros alfabetos diretamente no seu código, como você tentou com árabe e eu estou mostrando em japonês:
String s = "ソニーのヘッドホンと?サイバーショット?";
na prática, para isso funcionar direito, você tem de salvar seu programa-fonte na codificação adequada (por exemplo, UTF-8) e então passar um parâmetro adequado ao javac (-encoding UTF-8).
Não há limitações; é você que não sabia dessa história escabrosa de salvar o fonte adequadamente e passar mais um parâmetro ao compilador.