java - punto - ¿Alguien que usa tipos primitivos de corto y byte en aplicaciones reales?
tipos de datos primitivos en programacion (15)
Descubrí que estaba usando variables de bytes al hacer un procesamiento de imágenes de bajo nivel. Las rutinas de dibujo de .Net GDI + fueron muy lentas, así que rodé las mías por mi cuenta.
La mayoría de las veces, sin embargo, me quedo con números enteros a no ser que me obliguen a usar algo más grande, dadas las limitaciones del problema. Cualquier tipo de modelado de física que hago generalmente requiere flotadores o dobles, incluso si no necesito la precisión.
He estado programando en Java desde 2004, principalmente aplicaciones empresariales y web. Pero nunca he usado short o byte , aparte de un programa de juguete solo para saber cómo funcionan estos tipos. Incluso en un bucle for de 100 veces, solemos ir con int . Y no recuerdo si alguna vez me he encontrado con algún código que hiciera uso de byte o short , aparte de algunas API y frameworks públicos.
Sí, lo sé, puede usar un short o un byte para guardar la memoria en arreglos grandes, en situaciones donde el ahorro de memoria realmente importa. ¿Alguien quiere practicar eso? O es solo algo en los libros.
[Editado]
El uso de arreglos de bytes para programación de red y comunicación de socket es un uso bastante común. Gracias, Darren, para señalarlo. Ahora que tal corto ? Ryan, dio un excelente ejemplo. Gracias, Ryan.
El uso principal que he visto para ellos es al procesar datos con una estructura desconocida o incluso sin una estructura real. La programación de red es un ejemplo de lo primero (quien envía los datos sabe lo que significa, pero puede que no), algo así como la compresión de imágenes de 256 colores (o escala de grises) es un ejemplo de esto último.
Fuera de mi cabeza, grep me viene a la mente como otro uso, al igual que cualquier tipo de copia de archivo. (Claro, el sistema operativo lo hará, pero a veces eso no es lo suficientemente bueno).
Hasta hoy no me he dado cuenta de lo poco que los uso.
He usado byte para cosas relacionadas con la red, pero la mayoría de las veces fueron para mis propias herramientas / aprendizaje. En los proyectos de trabajo, estas cosas son manejadas por frameworks (JSP por ejemplo)
¿Corto? casi nunca.
¿Largo? Ninguno.
Mis literales enteros preferidos son siempre int, para bucles, contadores, etc.
Cuando los datos provienen de otro lugar (una base de datos por ejemplo) uso el tipo correcto, pero para los literales siempre uso int.
He usado bytes al guardar el estado mientras hago la verificación del modelo. En esa aplicación, el ahorro de espacio vale la pena el trabajo adicional. De lo contrario, nunca los uso.
Quizás sea más interesante ver la semántica de int. ¿Son esos límites arbitrarios y truncamiento silencioso lo que quieres? Para el código de nivel de aplicación realmente quiere enteros de tamaño arbitrario, es solo que Java no tiene forma de expresarlos razonablemente.
Tenga en cuenta que Java también se usa en dispositivos móviles, donde la memoria es mucho más limitada.
Utilicé mucho ''byte'', en código C / C ++ implementando funcionalidad como compresión de imagen (es decir, ejecutando un algoritmo de compresión sobre cada byte de un mapa de bits en blanco y negro) y procesando mensajes de red binarios (interpretando los bytes en el mensaje )
Sin embargo, prácticamente nunca he usado ''flotante'' o ''doble''.
Yo uso mucho byte. Generalmente en forma de conjuntos de bytes o ByteBuffer, para comunicaciones de red de datos binarios.
Raramente utilizo float o double, y no creo que haya usado short.
Apache POI usaba short
algunas veces. Probablemente debido a la limitación del número de fila / columna de Excel.
Hace unos meses cambiaron a reemplazo int
createCell (short columnIndex)
con
El lenguaje Java en sí mismo hace que sea irracionalmente difícil usar el byte
o short
tipos short
. Cada vez que realiza una operación en un byte
o valor short
, Java lo promueve primero a int
, y el resultado de la operación se devuelve como un int
. Además, están firmados, y no hay equivalentes sin firma, que es otra fuente frecuente de frustración.
Así que terminas usando byte
mucho porque sigue siendo el componente básico de todas las cosas cibernéticas, pero el tipo short
podría no existir.
cuando estamos programando para dispositivos electrónicos como el teléfono móvil, usamos byte y short. En este caso, debemos ocuparnos de la administración de la memoria.
En datagrids en memoria, puede ser útil. El concepto de una cuadrícula de datos como Gemfire es tener un enorme mapa distribuido. Cuando no tiene suficiente memoria puede desbordarse al disco con la estrategia LRU, pero las claves de todas las entradas de su mapa permanecen en la memoria (al menos con Gemfire).
Por lo tanto, es muy importante hacer que sus claves ocupen poco espacio, especialmente si está manejando conjuntos de datos muy grandes. Para el valor de entrada, cuando puede, también es mejor usar el tipo apropiado con una huella de memoria pequeña ...
He utilizado cortos y bytes en aplicaciones Java que se comunican con microcontroladores USB o serie personalizados para recibir valores de 10 bits envueltos en 2 bytes como cortos.
Utilizo bytes en muchos lugares diferentes, principalmente con procesamiento de datos de bajo nivel. Desafortunadamente, los diseñadores del lenguaje Java hicieron que los bytes se firmaran. No puedo pensar en ninguna situación en la que haya sido útil tener valores de bytes negativos. Tener un rango de 0-255 hubiera sido mucho más útil.
No creo haber usado shorts en ningún código adecuado. Tampoco utilizo flotadores (si necesito valores de coma flotante, siempre uso doble).
Estoy de acuerdo con Tom Idealmente, en lenguajes de alto nivel, no deberíamos preocuparnos por las representaciones subyacentes de la máquina. Deberíamos ser capaces de definir nuestros propios rangos o usar números de precisión arbitrarios.
byte
y los short
se usan ampliamente en el desarrollo de Java Card. Mire mi respuesta a ¿Hay algún uso en la vida real para el tipo primitivo de bytes de Java? .