2008-12-31 9 views
11

He estado programando en Java desde 2004, principalmente aplicaciones empresariales y web. Pero nunca he usado corto o byte, que no sea un programa de juguetes solo para saber cómo funcionan estos tipos. Incluso en un for loop de 100 veces, usualmente vamos con int. Y no recuerdo si alguna vez me he encontrado con algún código que hiciera uso de byte o corto, aparte de algunas API y marcos públicos.¿Alguien que usa tipos primitivos de corto y byte en aplicaciones reales?

Sí, lo sé, se puede utilizar un corto o bytes para ahorrar memoria en grandes series, en situaciones en que el ahorro de memoria realmente importa. ¿Alguien quiere practicar eso? O es solo algo en los libros.

[Editado]

Usando bytes matrices para la programación de la red y la comunicación de socket es un uso bastante común. Gracias, Darren, para señalarlo. Ahora, ¿qué hay de corto? Ryan, dio un excelente ejemplo. Gracias, Ryan.

Respuesta

8

Tenga en cuenta que Java también se usa en dispositivos móviles, donde la memoria es mucho más limitada.

4

I utilizarse 'byte' mucho, en código C/C++ implementar la funcionalidad como la compresión de imágenes (es decir, la ejecución de un algoritmo de compresión sobre cada byte de un mapa de bits en blanco y negro-), y procesar mensajes de red binarios (por interpretando bytes en el mensaje).

Sin embargo, virtualmente nunca he usado 'float' o 'double'.

+1

Ahan .. Puede ser por el dominio en el que está trabajando. Similar podría ser cierto para mí. –

11

Uso byte mucho. 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.

1

He usado los bytes al guardar el estado mientras hago la comprobación del modelo. En esa aplicación, el ahorro de espacio vale la pena el trabajo adicional. De lo contrario, nunca los uso.

4

El uso principal que he visto para ellos es durante el procesamiento de 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.)

1

Encontré 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, me quedo con enteros con signo a menos 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.

4

El lenguaje Java en sí mismo hace que sea irrazonablemente difícil utilizar los tipos byte o short. Siempre que realice una operación en un valor de byte o short, Java lo promociona primero a int y el resultado de la operación se devuelve como 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 todo lo cibernético, pero el tipo short bien podría no existir.

+0

De acuerdo. Los literales int son más fáciles de programar (bucles, contadores, etc.), pero para la funcionalidad específica mencionada por otros esos tipos son muy útiles. – OscarRyz

3

Hasta hoy no he notado la poca frecuencia con 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 proyectos de trabajo, estas cosas son manejadas por frameworks (JSP por ejemplo)

¿Corto? casi nunca.

Long? Ninguno.

Mis literales enteros preferidos son siempre int, para bucles, contadores, etc.

Cuando los datos proviene de otro lugar (una base de datos, por ejemplo) utilizo el tipo adecuado, pero para los literales que utilizo siempre int.

+0

Para las bases de datos, generalmente voy para envoltorios. Sí, debido a null bien conocido. –

+0

mmhh Tengo una sensación mixta sobre los envoltorios. Afortunadamente con Java 1.5 la mayoría de las veces es transparente después de autoboximg – OscarRyz

2

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.

3

Uso 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 que haya usado pantalones cortos en ningún código correcto. 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.

3

cuando estamos programando para dispositivos electrónicos como el teléfono móvil que utilizamos byte y corto. En este caso, debemos tener cuidado en la gestión de la memoria.

1

En las rejillas de datos 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 llaves ocupen poco espacio, especialmente si está manejando conjuntos de datos muy grandes. Para el valor de la entrada, cuando pueda también es mejor utilizar el tipo apropiado con una pequeña huella de memoria ...

1

He usado 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.

Cuestiones relacionadas