Pergunta

Eu tenho sido programação em Java desde 2004, principalmente aplicações empresariais e web. Mas eu nunca usei curto ou byte , além de um programa de brinquedo apenas para saber como esses tipos de trabalho. Mesmo em um loop de 100 vezes, nós normalmente ir com int . E eu não me lembro se eu já me deparei com qualquer código que fez uso de byte ou curto , excepto algumas APIs públicas e frameworks.

Sim, eu sei, você pode usar um curto ou byte para economizar memória em grandes matrizes, nas situações em que as economias de memória realmente importa. O cuidado ninguém para praticar isso? Ou é apenas algo nos livros.

[Editado]

Usando byte matrizes para programação de rede e comunicação de soquete é um uso bastante comum. Obrigado, Darren, ao apontar isso. Agora, que tal curto ? Ryan, deu um excelente exemplo. Obrigado, Ryan.

Foi útil?

Solução

Tenha em mente que Java também é usado em dispositivos móveis, onde a memória é muito mais limitado.

Outras dicas

Eu uso byte muito. Geralmente sob a forma de matrizes de bytes ou ByteBuffer, para comunicações de rede de dados binário.

Eu raramente utilizar float ou double, e eu não acho que eu já utilizado curta.

Eu usei 'byte' muito, em termos de funcionalidade da implementação do código C / C ++ como compressão de imagem (ou seja, a execução de um algoritmo de compressão sobre cada byte de um bitmap preto-e-branco), e processamento de binário mensagens de rede (por interpretar o bytes na mensagem).

No entanto, eu quase nunca usado 'float' ou 'duplo'.

O uso primário que eu vi para eles é durante o processamento de dados com uma estrutura desconhecida ou mesmo estrutura não real. programação de rede é um exemplo da antiga (quem está enviando os dados sabe o que significa, mas você não pode), algo como compressão de imagem de 256 cores (ou tons de cinza) imagens é um exemplo deste último.

Em cima da minha cabeça grep vem à mente como um outro uso, como faz qualquer tipo de cópia de arquivo. (Claro, o sistema operacional irá fazê-lo -. Mas às vezes isso não é bom o suficiente)

A linguagem Java em si torna excessivamente difícil de usar os tipos byte ou short. Sempre que realizar qualquer operação em um valor byte ou short, Java promove-lo a um int primeiro, eo resultado da operação é retornada como um int. Além disso, eles estão assinados, e não há equivalentes não assinados, que é outra fonte frequente de frustração.

Assim que você acaba usando byte muito porque ainda é o bloco de construção básico de todas as coisas cyber, mas o tipo short poderia muito bem não existir.

Até hoje eu não tenho aviso quão raramente eu usá-los.

Eu uso byte já para o material relacionado rede, mas na maioria das vezes eles foram para minhas próprias ferramentas / aprendizagem. Em projetos de trabalho essas coisas são tratadas por estruturas (JSP, por exemplo)

curta? quase nunca.

Long? Nenhum dos dois.

As minhas literais inteiro preferenciais são sempre int, para loops, contadores, etc.

Quando os dados vem de outro lugar (um banco de dados, por exemplo) eu uso o tipo adequado, mas para literais Eu uso sempre int.

Eu uso bytes em muitos lugares diferentes, a maioria envolvendo processamento de dados de baixo nível. Infelizmente, os designers da linguagem Java fez bytes assinados. Eu não posso pensar em qualquer situação em que ter valores de bytes negativos tem sido útil. Tendo uma gama 0-255 teria sido muito mais útil.

Eu não acho que eu calções já usado em qualquer código adequado. Eu também nunca usar carros alegóricos (se eu precisar de valores de ponto flutuante, eu sempre uso duplo).

Eu concordo com Tom . Idealmente, em linguagens de alto nível que não deve se preocupar com as representações da máquina subjacentes. Devemos ser capazes de definir os nossos próprios intervalos ou usar números de precisão arbitrária.

quando estamos programando para dispositivos eletrônicos, como telefone celular, usamos byte e short.In Neste caso, deve tomar cuidado no gerenciamento de memória.

É talvez mais interessante olhar para a semântica de int. São aqueles limites arbitrários e truncamento silencioso que você quer? Para código de nível de aplicativo realmente quer inteiros de tamanhos arbitrários, é só que Java não tem nenhuma maneira de expressar o razoavelmente.

Eu tenho usado bytes ao salvar Estado ao fazer verificação de modelos. Nesse aplicativo, a economia de espaço valem a pena o trabalho extra. Caso contrário, eu nunca usá-los.

eu descobri que eu estava usando variáveis ??byte ao fazer algum processamento de imagem de baixo nível. O .NET GDI + chamar rotinas foram muito lento para que eu enrolados à mão a minha própria.

Na maioria das vezes, porém, eu ficar com números inteiros assinados a menos que eu sou forçado a usar algo maior, dadas as restrições do problema. Qualquer tipo de física de modelagem eu faço geralmente requer flutuadores ou duplos, mesmo que eu não preciso a precisão.

Apache POI estava usando short bastante algumas vezes. Provavelmente por causa da limitação de número de linha / coluna do Excel.

Há alguns meses eles mudaram para int substituindo

createCell (columnIndex curta )

com

createCell (coluna int ) .

Em datagrids na memória, ele pode ser útil. O conceito de um datagrid como GemFire ??é ter um enorme mapa distribuído. Quando você não tem memória suficiente, você pode transbordar para o disco com a estratégia LRU, mas as chaves de todas as entradas do seu mapa permanecerá na memória (pelo menos com GemFire).

Assim, é muito importante fazer suas chaves com uma pegada pequena, especialmente se você está lidando com grandes conjuntos de dados. Para o valor de entrada, quando puder também é melhor usar o tipo apropriado, com uma pequena memória pegada ...

Eu tenho usado calções e bytes em Java Apps comunicando com usb personalizado ou micro-controladores de série para receber valores 10bit embrulhados em 2 bytes como shorts.

bytes e shorts são amplamente utilizados no desenvolvimento de Java Card. Dê uma olhada na minha resposta a existem quaisquer usos reais para o Java byte tipo primitivo? .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top