qual é o tamanho em bits do tipo primitivo
boolean ???
Pois comparei dois livros, e um dizia que é 1 bit e outro 8 bits.
qual é o tamanho em bits do tipo primitivo
boolean ???
Pois comparei dois livros, e um dizia que é 1 bit e outro 8 bits.
Até onde sei são 8 bits (1 byte).
Bem, vamos tirar a dúvida na especificação da linguagem … humm, humm, interessante, hummm … sem resposta!
A JLS não diz nada sobre o tamanho, ou seja, fica a critério da Virtual Machine (veja).
Os outros tipos primitivos também não são ditados pela JLS mas sim pelo que cada um deve suportar (é impossível seguindo a especificação usar 8 bits para representar um short).
espero ter ajudado,
[]s
só para completar, em uma maquina X86, é muito dificil alguma linguagem utilizar apenas um bit para o tipo de dados boolean, ja que a arquitetura não disponibiliza instruções para acesso a um bit, isto só é possivel por mascaramento de um byte
inclusive no C++ o tipo bool ocupa um byte
bom, a não se que meu assembly esteja mais enferrujado do que eu pensei
Que eu sei esses são os tamanhos de todos os tipos primitivos do JAVA
boolean - 1 bit
byte - 8 bits - 1byte
short - 16 bits - 2 bytes
char - 16 bits - 2 bytes
int - 32 bits - 4 bytes
float - 32 bits - 4 bytes
long - 64 bits - 8 bytes
double - 64 bits - 8 bytes
não, o boolean, apesar de armazenar apenas true ou false, é armazenado em um byte
No livro “Java Como programar” diz q boolean tem 8 bits, mas quando vi no livro “Complete Java2 Certificade Study Guide” diz q é 1 bit somente.
Tb procurei na especificacao, mas não encontrei nada.
ele tem 8 bits, que são utilizados para representar um só, pois sairia muito caro e sem vantagem nenhuma representar isto em um só bit.
Eu faço coro com o urubatan 8)
Em máquinas x86 é muito mais fácil trabalhar com 1 byte do que bits.
Seu assembly não esta tão enferrujado assim … acho pouco provavel que uma VM implemente um boolean de 1 bit pq alem do acesso a memoria pra pegar os 8 bytes ainda teria que fazer a manipulação.
Incrusives o Oracle (que é o que tenho mais contato) usa esse principio como otimização, ele nunca pega (nem tenta) somente os bytes das informação mas sim um múltiplo de 8.
[]s
Então caso caia na prova de certificação, responderei 8bits.
Vou avisar aos autores do livro Study Guide sobre este erro.
Valeu pelas respostas
Sem duvida ele se utiliza de um byte, mas como a JVM eh livre de Hardware nao podemos dizer com certeza se em todas as implementacoes eh assim!
Abraco,
Claudio
quer descobrir quantos bits a implementação da sun usa?
o teste é bem simples, nos medimos quanto de memoria 1 array de booleans ocupa.
O teste não é capas de dizer quantos bits uma variavel boolean usa, mas pelo menos quantos bits arrays de booleans usam.
public class a
{
static {
boolean b[] = new boolean[1024 * 1024 * 10];
}
}
primeiro:
java -Xmx6m a
deu OutOfMemoryError
entao nao usou menos de 1 byte
depois:
java -Xmx11m a
deu NoSuchMethodError
com 8,9 ou 10mb deu OOME, estranho…
x86 tem todas instruções nescessarias pra se implementar 1 boolean com 1 bit sem precisar fazer bit masking
BS(F|R): Bit Scan (Forward|Backward)
BT: Bit Test
BT(S|C|R): Bit Test and (Set|Complement|Reset)
Pra descobrir mesmo so olhando no fonte da JVM, caso alguem esteja com boa vontade, so olhar na descrição da cpu pra x86, que é o 486 pra 1.4.0, e procurar por essas 6 instruções.
Hmm se bem que BTS deve ser utilizada com thin locks.
como o louds e o claudio indicaram, isso depende da implementacao
se perguntarem, a reposta eh: ele gasta 1 bit. se a minha JVM quiser guardar ele em um mega, problema eh dela.
[quote=“Paulo Silveira”]como o louds e o claudio indicaram, isso depende da implementacao
se perguntarem, a reposta eh: ele gasta 1 bit. se a minha JVM quiser guardar ele em um mega, problema eh dela.[/quote]
De acordo o link acima então a resposta são 4 bytes.
ehehe nada como ir na fonte, valeu!
De acordo com esse link acima, existe uma observação que em arrays
os booleans ocupam 8 bits:
http://java.sun.com/docs/books/vmspec/2nd-edition/html/Overview.doc.html#24357
" In Sun’s JDK releases 1.0 and 1.1, and the Java 2 SDK, Standard Edition, v1.2, boolean arrays in the Java programming language are encoded as Java virtual machine byte arrays, using 8 bits per boolean element."