Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Post on 21-Jan-2018

230 views 6 download

Transcript of Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Unidad 5VARIABLES Y MÉTODOS ESTÁTICOS

¿Qué es static en Java?

• Una clase, método o campo declarado como estático puede seraccedido o invocado sin la necesidad de tener que instanciar unobjeto de la clase.

• Pertenecen a la clase, en lugar de pertenecer a un objeto enparticular.

¿Qué es static en Java?

• Un ejemplo muy común en donde se puede utilizar variablesestáticas es cuando se necesita definir una configuración global en unproyecto.

Variables Estáticas

• Los campos de una clase declarados como estáticos soninicializados en el momento en que se carga la clase enmemoria, respetando el orden de declaración.

• Los campos estáticos no pueden ser accedidos desde uncontexto no estático; este comportamiento resultará en unerror en tiempo de ejecución.

• En conjunción con la directiva final (que evita lamodificación del campo) se generan las constantes.

• Las variables estáticas son compartidas entre todos losobjetos de una clase. Existe solo una copia que todosalteran.

Variables Estáticas

• Podemos considerarlo como una variable global a la que tienenacceso todos los objetos de la clase.

• Existe y puede utilizarse aunque no existan objetos de la clase.

• Si declaramos variables estáticas privadas, solo se pordrá acceder aellas a través de metódos get y set static.

Variables Estáticas

• Este código declara y utiliza una variable para un contador estático:

Variables estáticas

• En el código anterior, la variable estática 'contador' es inicializada encero cuando MiClase es cargada por primera vez en la JVM, antes deque cualquier instancia sea creada. Cada vez que una nueva instanciade la clase se crea se manda a llamar al constructor de la clase y elcontador aumenta en uno. Cuando el código se ejecuta ya fueroncreadas 3 instancias de la clase y el resultado es el siguiente:

Variables estáticas

• Si en cambio ‘contador’ fuera una variable de instancia no estática:

Variables estáticas

• El código anterior genera el siguiente error:

• La JVM no sabe de qué objeto de MiClase estás tratando de imprimir su variable 'contador’.

Variables estáticas

• Un método estático no puede acceder a ningún componente (métodoo variable) no estático. Pensemos de la siguiente manera:

estático (static) = clase

no-estático = instancia.

Métodos estáticos

• Debido a que los métodos estáticos son enlazados en tiempo decompilación mediante static binding usando la información del tipo,no es posible realizar sobreescritura (override) de métodos.

• Los métodos estáticos no pueden ser declarados como abstract.

• Solo pueden acceder a variables estáticas.

Métodos estáticos

Constantes

• Una constante es una variable del sistema que mantiene un valorinmutable a lo largo de toda la vida del programa. Las constantesen Java se definen mediante el modificador final.

Constantes

• Si queremos utilizar una constante Java, simplemente deberemos de utilizar su nombre.

Clases Wrapper

• Clases “envoltorio”.

• Los tipos de datos primitivos no son objetos. Para que sean tratadosasí se usan wrapper class.

• Proveen un mecanismo de “envolver” valores primitivos en un objetopara que estos primitivos puedan ser incluidos en actividades queestén reservadas para objetos.

Clases Wrapper

• Diferencias entre un tipo de dato primitivo y un objeto de una clase wrapper.

Clases Wrapper

• Proveen un surtido de funciones de utilidad a los primitivos.

• La mayoría de estas funciones están relacionadas con varias conversiones:

• Hay una clase contenedora para cada primitivo en Java.

• Hay que tener en cuenta que las operaciones aritméticas habituales (suma, resta, multiplicación ...) están definidas solo para los datos primitivos por lo que las clases envoltura no sirven para este fin.

Clases Wrapper

Constructores de las clases Wrapper

• Todas las clases wrapper excepto Character proveen de 2 constructores:

• Uno que coge un primitivo del tipo que está siendo construido.

• Otro que recoge un String como representación del tipo que está siendo construido.

Constructores de las clases Wrapper

• Los constructores para las clase Boolean coge o un valor booleano, ya sea true o false, o una String.

• Si la String (sin importar mayusculas o minusculas) es “true” el Boolean será true, y cualquier otro valor será false:

Constructores de las clases Wrapper

• Las conversiones entre los tipos primitivos y sus clases envolventes son automáticas. No es necesario hacer un casting. Para realizarlas se utiliza el Boxing/Unboxing.

• Boxing: Convertir un tipo primitivo en su clase Wrapper.

• Unboxing: Convertir un objeto de una clase Wrapper en su tipo primitivo.

Resumen de métodos de Integer

Los Métodos valueOf()

• métodos estáticos proveídos en la mayoría de las clases wrapper que dan otro enfoque para poder crear objetos wrapper.

Unboxing

• Métodos de instancia para extraer el dato numérico dl envoltorioxxxValue();

• Cuando necesitamos convertir un valor de un contenedor numérico aun primitivo usamos uno delos métodos xxxValue();

Otros métodos

• Para crear números a partir de cadenas de caracteres xxxParsexxx(String);

Otros métodos

• Para construir wrappers a partir de cadenas de caracteres xxx.valueOf(String);

toString()

• todas las clases tienen el método toString();

• Permite que obtengamos una representación significativa de un objetodado.

• Todas las clases wrapper tienen una versión de toString() sin argumentos yno static.

• Este método retorna un String con el valor del primitivo que se encuentradentro del wrapper.