Tenemos un ejemplo en:
\Curso Java\Java\ejemplos\curso0\MiString.java
Float miNumF =
new Float( 18.45 );
Character unCar
= new Character( '?' );
Estas clases tienen operaciones de conversión numérica. Por ejemplo podemos devolver el valor entero (int) correspondiente a un número Float:
int unEntero = miNumF.intValue();
O algunas utilidades más como manejo de valores infinitos y NaN:
double noNumero
= Double.NaN; // atributo de clase (cte)
if (miNumF.isInfinite())
…
E incluso conversiones de string a número:
Double d
= Double.valueOf( "3425234.564356444" );
double d2 = Double.valueOf(
"3425234.564356444" ).doubleValue();
Tenemos unos ejemplos en:
\Curso Java\Java\ejemplos\curso0\VectorEnumeration.java
\Curso Java\Java\ejemplos\curso0\MiHashtable.java
Otra característica importante de los flujos es que se pueden solapar unos encima de otros, así por ejemplo, si yo estoy accediendo a un fichero mediante un determinado flujo yo puedo poner por debajo de este flujo, por ejemplo, otro que encripte, o que comprima a zip, o que optimice el acceso a los datos y seguiré accediendo mediante el flujo superior en la misma forma.
El paquete que se encarga de E/S en Java es java.io.
El ejemplo se encuentra en el archivo:
\Curso Java\Java\Ejemplos\curso2\Flujos.java
BufferedOutputStream bosSalida = new BufferedOutputStream(fosSalida);
Sin que aparentemente haya ninguna diferencia, pero realmente sí que la hay. Este flujo de salida se coloca por debajo del que nosotros accedemos para optimizar el acceso al flujo mediante el empleo de buffers, pero es lo bueno de los filtros, que yo podría añadir este filtro sin cambiar mi código, igual lo podría haber hecho para que mi salida fuese encriptada, zipeada, o cualquier otra cosa que se me ocurra.
El ejemplo se encuentra en el archivo:
\Curso Java\Java\Ejemplos\curso2\Flujos2.java