jonbonjava, só para complementar a tabela: variáveis do tipo boolean ocupam 1 bit na memória e só admitem dois valores possíveis, true ou false.
Em relação as classes wrapper… Elas tem o papel de empacotar os tipos primitivos em objetos correspondenets ao tipo. Permitindo assim, através de métodos disponibilizados pelo objeto, a realização de operações como conversão entre tipos, mudanças de base numérica e trabalhar com coleções (o que só é permitido com objetos).
Para ver exemplos de uso, você pode acessar este link. Porém não deixe de realizar uma busca no Google, você encontrará muita coisa interessante!
Também estou iniciando meu aprendizado na plataforma Java e, se posso te dar um conselho, seja amigo da documentação! Neste link você pode ver a documentação do pacote [i]java.lang[/i], que contém algumas das classes essenciais da linguagem, dentre elas todas as classes wrapper com seus respectivos métodos.
Não, infelizmente, ocupam um byte inteiro.
Um boolean só vai ocupar um bit mesmo em estruturas de dados específicas, como o BitSet.
[/quote]
Na realidade ocupam um tamanho variável conforme a implementação da jvm. No hotspot (implementação da sun, agora Oracle) ocupam 8 bits. Mas isso não é fixo pela especificação ( da io detalhe do ? na tabela no inicio do tópico).
java.util.BitSet é um tipo “conjunto de bits” que armazena os bits em grupos de 32, dentro de arrays de long. Por exemplo, se você quiser ter um array de 256 bits (256 booleans) isso é guardado internamente em um array de 8 longs.
Teoricamente sim, mas na prática o espaço do computador é em multiplos de 8 bits (16, 32) e é mais prático usar boolean.
Outro problema mais complexo têm que ver com a entropia. Um único bit não permite que vc detecte erros. Portanto, os bits extra são usados como uma especie de digito verificador para “assegurar” que aquela informação é um boolean “de verdade”. Não é seguro de fato, mas ajuda.
É muito importante separar o conceito de valor booleano, da implementação. Na familia C, nem existia boolean. Era tudo inteiro. Isto era um problema grave conceptualmente, porque o valor lógico era interpretado pelo programador, não pelo compilador. Ou seja, em C não ha strong typing.
Na realidade apenas para os inteiros importa saber o tamanho, pois está relacionado aos valores cobertos pelo tipo, para o resto não interessa isso.
Não importa saber quantos bits tem um boolean ou uma referencia de objeto. Até porque isso evolui com a arquitetura dos OS.
No C# por exemplo tem um conjunto imenso de tipos , signed, unsigned, o diabo… para quê ? para cria confusão. Java tem poucos primitivos e dá para fazer tudo com eles. Sim, talvez seria legal ter um unsigned byte para coisas mais on the wire, mas dá para contornar ( usando int)