Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

27
Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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

Page 1: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Unidad 5VARIABLES Y MÉTODOS ESTÁTICOS

Page 2: Unidad 5 VARIABLES 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.

Page 3: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

¿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.

Page 4: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 5: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 6: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Variables Estáticas

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

Page 7: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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:

Page 8: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Variables estáticas

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

Page 9: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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’.

Page 10: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 11: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 12: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Métodos estáticos

Page 13: Unidad 5 VARIABLES Y 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.

Page 14: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Constantes

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

Page 15: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 16: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Clases Wrapper

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

Page 17: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 18: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Clases Wrapper

Page 19: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 20: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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:

Page 21: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 22: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Resumen de métodos de Integer

Page 23: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.

Page 24: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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();

Page 25: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Otros métodos

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

Page 26: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

Otros métodos

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

Page 27: Unidad 5 VARIABLES Y MÉTODOS ESTÁTICOS

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.