1 1 2 Datos Primitivas Y Objetos
-
Upload
uvm -
Category
Technology
-
view
3.801 -
download
1
Transcript of 1 1 2 Datos Primitivas Y Objetos
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 22
TiposTipos
Existen muchas formas de información.Existen muchas formas de información. Los datos que existen en los programas Los datos que existen en los programas
están categorizados.están categorizados. Esta categorización ayuda al programador Esta categorización ayuda al programador
a identificar el tipo de dato y usarlo a identificar el tipo de dato y usarlo apropiadamenteapropiadamente
Esta categorización se hace usando un Esta categorización se hace usando un sistema de tipossistema de tipos
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 33
Tipos de datos primitivosTipos de datos primitivos
Java ofrece tipos de datos básicos Java ofrece tipos de datos básicos llamados “primitivas”, y también permite llamados “primitivas”, y también permite los medios para definir nuevos tipos de los medios para definir nuevos tipos de datosdatos
Un nuevo tipo de datos puede definirse Un nuevo tipo de datos puede definirse mediante la definición de una clasemediante la definición de una clase
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 44
Clases y objetosClases y objetos
Una clase es análoga a un esquema para Una clase es análoga a un esquema para la construcción de un edificio, donde se la construcción de un edificio, donde se especifica el diseño pero no se tiene nada especifica el diseño pero no se tiene nada en concretoen concreto
Un objeto es una instancia de una clase; Un objeto es una instancia de una clase; pueden existir tantas instancias de una pueden existir tantas instancias de una clase como edificios basados en un clase como edificios basados en un mismo esquema de diseñomismo esquema de diseño
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 55
ObjetosObjetos
Los objetos (al igual que los edificios) Los objetos (al igual que los edificios) ocupan un espacio específico y están ocupan un espacio específico y están ubicados en un lugar particularubicados en un lugar particular
Los objetos consumen memoria y se Los objetos consumen memoria y se encuentran localizados en una dirección encuentran localizados en una dirección particular de memoria. particular de memoria.
Un apuntador a un objeto es llamado Un apuntador a un objeto es llamado referenciareferencia
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 66
Tipos de datos primitivosTipos de datos primitivos
Los tipos primitivos disponibles en Java Los tipos primitivos disponibles en Java pueden ser numéricos o booleanos. pueden ser numéricos o booleanos. Representan números y resultados Representan números y resultados lógicos respectivamentelógicos respectivamente
Los tipos numéricos pueden ser de tipo Los tipos numéricos pueden ser de tipo entero o de punto flotante.entero o de punto flotante.
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 77
Tipos de datos enterosTipos de datos enteros
bytebyte – representa a un entero que requiere de – representa a un entero que requiere de un byte de almacenamientoun byte de almacenamiento
shortshort – representa a un entero que requiere de – representa a un entero que requiere de dos bytes de almacenamientodos bytes de almacenamiento
intint – representa un número que requiere de – representa un número que requiere de cuatro bytes de almacenamientocuatro bytes de almacenamiento
longlong – representa un entero que requiere ocho – representa un entero que requiere ocho bytes de almacenamientobytes de almacenamiento
charchar – representa caracteres unicode y – representa caracteres unicode y requieren dos bytes de almacenamientorequieren dos bytes de almacenamiento
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 88
Un caso especialUn caso especial
El tipo “char” destaca en esta lista, pues El tipo “char” destaca en esta lista, pues aunque guarda enteros éstos se aunque guarda enteros éstos se interpretan como caracteres basándose interpretan como caracteres basándose en un mapa que asocia los enteros con en un mapa que asocia los enteros con los caractereslos caracteres
El mapa que usa Java es el El mapa que usa Java es el UnicodeUnicode
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 99
CuidadoCuidado
Aún cuando el tipo “char” internamente Aún cuando el tipo “char” internamente representa enteros, no debe usarse como representa enteros, no debe usarse como tal pues ocasionaría confusionestal pues ocasionaría confusiones
El tipo “short” está disponible con la El tipo “short” está disponible con la misma cantidad de memoria que “char” misma cantidad de memoria que “char” por lo que no es necesario usar un tipo por lo que no es necesario usar un tipo “char” en un contexto numérico“char” en un contexto numérico
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1010
Tipos Java de punto flotanteTipos Java de punto flotante
floatfloat - representa un número de punto - representa un número de punto flotante que require exactamente cuatro flotante que require exactamente cuatro bytes de almacenamientobytes de almacenamiento
double double - representa un número de punto - representa un número de punto flotante que requiere exactamente de flotante que requiere exactamente de ocho bytes de almacenamientoocho bytes de almacenamiento
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1111
DiferenciasDiferencias
Todos los tipos representan valores con Todos los tipos representan valores con un almacenamiento finito y por lo tanto un almacenamiento finito y por lo tanto solo pueden representar un número finito solo pueden representar un número finito de valores.de valores.
Un tipo entero representa a todos los Un tipo entero representa a todos los valores en su respectivo rangovalores en su respectivo rango
Esto no se cumple para los tipos de punto Esto no se cumple para los tipos de punto flotante flotante
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1212
Consideraciones con los tipos de Consideraciones con los tipos de punto flotantepunto flotante
Solo un conjunto particular de valores de Solo un conjunto particular de valores de punto flotante pueden representarse punto flotante pueden representarse exactamente dentro de cualquier rangoexactamente dentro de cualquier rango
Esto tiene ciertos riesgos. Por ejemplo, en Esto tiene ciertos riesgos. Por ejemplo, en un programa la expresión((10.0 / 3.0) * un programa la expresión((10.0 / 3.0) * 3.0) puede NO ser igual a 10.0. 3.0) puede NO ser igual a 10.0.
Estos riesgos pueden causar que algunos Estos riesgos pueden causar que algunos programas se comporten inesperadamenteprogramas se comporten inesperadamente
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1313
Tipos de datos (cont.)Tipos de datos (cont.)
La otra categoría de tipos primitivos es el La otra categoría de tipos primitivos es el booleano. booleano.
Recuerda que el tipo booleano representa Recuerda que el tipo booleano representa información lógicainformación lógica
• booleanboolean - representa un valor lógico de - representa un valor lógico de verdadero o falsoverdadero o falso
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1414
Tipos especialesTipos especiales
Además de los tipos numéricos y Además de los tipos numéricos y booleanos hay otros dos tipos primitivos booleanos hay otros dos tipos primitivos especialesespeciales Uno es el tipo ”void” (vacio). Uno es el tipo ”void” (vacio).
• Este tipo especial se usa para representar la Este tipo especial se usa para representar la ausencia de dato. ausencia de dato.
• Se usa cuando se definen ciertos métodosSe usa cuando se definen ciertos métodos• Datos del tipo void no pueden existirDatos del tipo void no pueden existir
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1515
Tipos especialesTipos especiales
El otro tipo especial es el tipo “null” (nulo), El otro tipo especial es el tipo “null” (nulo), el cual no tiene nombre. Más adelante se el cual no tiene nombre. Más adelante se explicará a detalle el uso de “null”explicará a detalle el uso de “null”
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1616
Literales primitivasLiterales primitivas
Un programador explicitamente crea Un programador explicitamente crea almacenamiento para los datos primitivos almacenamiento para los datos primitivos ya sea usando literales o declaracionesya sea usando literales o declaraciones
Una literal es una entidad que se Una literal es una entidad que se representa a sí misma literalmente. Por representa a sí misma literalmente. Por ejemplo 5 es una literalejemplo 5 es una literal
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1717
Categorías de literales de JavaCategorías de literales de Java
enteroentero Punto flotantePunto flotante BooleanBoolean caractercaracter stringstring nullnull
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1818
Una literal entera se puede Una literal entera se puede expresar…expresar…
En tres diferentes bases: decimal, En tres diferentes bases: decimal, hexadecimal, y octal. hexadecimal, y octal. Decimal es el predeterminadoDecimal es el predeterminado
• Las comas no pueden usarse para agrupar dígitos. Las comas no pueden usarse para agrupar dígitos. Las literales enteras son no negativasLas literales enteras son no negativas
• Una expresión como -1 hacen uso de la literal 1 y Una expresión como -1 hacen uso de la literal 1 y el operador negación ("-"). el operador negación ("-").
• El ("-") no es parte de la literalEl ("-") no es parte de la literal
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 1919
Una literal entera se puede Una literal entera se puede expresar…expresar…
Como número hexadecimal los dígitos son Como número hexadecimal los dígitos son precedidos por 0x o 0X (cero y x) por ejemplo precedidos por 0x o 0X (cero y x) por ejemplo 0x10 que es 16 en decimal0x10 que es 16 en decimal• Enteros hexadecimales usan las letras A hasta F Enteros hexadecimales usan las letras A hasta F
para representar dígitos cuyo valor va del 10 al 15 para representar dígitos cuyo valor va del 10 al 15 respectivamenterespectivamente
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2020
Una literal entera se puede Una literal entera se puede expresar…expresar…
Como número octal los dígitos se preceden Como número octal los dígitos se preceden con cero, como en 017, que es 15 en con cero, como en 017, que es 15 en decimal. decimal. • Literales octales usan solo dígitos de 0 a 7Literales octales usan solo dígitos de 0 a 7
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2121
Declaraciones primitivasDeclaraciones primitivas
Además de las literales, los datos Además de las literales, los datos primitivas pueden introducirse mediante primitivas pueden introducirse mediante decaracionesdecaraciones
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2222
Declaraciones primitivasDeclaraciones primitivas
Una declaració para datos primitivos Una declaració para datos primitivos consiste del nombre del tipo, un consiste del nombre del tipo, un identficador y opcionalmente se puede identficador y opcionalmente se puede inicializar con =, y un punto y coma (";") inicializar con =, y un punto y coma (";") como se muestra a continuacióncomo se muestra a continuación
int valueX; // sin inicializadorint valueX; // sin inicializador
double valueY = 7.1; // con inicializadordouble valueY = 7.1; // con inicializador
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2323
ConstantesConstantes
Se puede hacer uso de la palabra Se puede hacer uso de la palabra reservada “final”, para indicar que una reservada “final”, para indicar que una declaración es de solo lecturadeclaración es de solo lectura
Estos son referidos como Estos son referidos como datos finalesdatos finales o o constantesconstantes
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2424
Ejemplos de constantesEjemplos de constantes
final int MAX = 100;final int MAX = 100;
final double PI = 3.14159;final double PI = 3.14159;
final char DEFAULT_CHAR = 'z';final char DEFAULT_CHAR = 'z';
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2525
Referencias y variables de Referencias y variables de referenciareferencia
En Java los objetos se manipulan En Java los objetos se manipulan mediante referenciasmediante referencias
Las referencias son nombres que Java dá Las referencias son nombres que Java dá a los objetosa los objetos
Los objetos son manipuladosLos objetos son manipulados usando usando identificadores conocidos como identificadores conocidos como referenciasreferencias
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2626
Referencias a variablesReferencias a variables
Se declaran referencias a variables de la Se declaran referencias a variables de la misma manera que se declaran primitivas. misma manera que se declaran primitivas. Considera o siguienteConsidera o siguiente
String line;String line; Se declara una referencia a una variable Se declara una referencia a una variable
tipo String.tipo String.
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2727
ReferenciasReferencias
Las referencias deben tener un valor Las referencias deben tener un valor antes de poder usarseantes de poder usarse
En el ejemplo anterior se le debe asignar En el ejemplo anterior se le debe asignar una cadena de caracteres o un nulo antes una cadena de caracteres o un nulo antes de poder usarla o la compilación fallaráde poder usarla o la compilación fallará
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2828
ReferenciasReferencias
En cualquier caso el programador puede En cualquier caso el programador puede explícitamente asignarle valor nuloexplícitamente asignarle valor nuloString line = null;String line = null;
Null es el nombre que Java dá a los Null es el nombre que Java dá a los objetos que no existen. Es como si dijera objetos que no existen. Es como si dijera que la referencia se refiere a nadaque la referencia se refiere a nada
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 2929
Creación de objetosCreación de objetos
Para crear un objeto se debe usar el Para crear un objeto se debe usar el operador “new” junto con otros operador “new” junto con otros constructores de objetosconstructores de objetos
A continuación se muestra un ejemploA continuación se muestra un ejemploString line = new String("Hello");String line = new String("Hello");
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3030
Acceso a métodosAcceso a métodos
Para acceder variables de instancias y Para acceder variables de instancias y métodos en un objeto, use el operador métodos en un objeto, use el operador punto (".").punto (".").
El punto es un operador infijo que requiere El punto es un operador infijo que requiere que el objeto sea el operador izquierdo y que el objeto sea el operador izquierdo y el campo o método el operador derecho. el campo o método el operador derecho.
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3131
Acceso a métodosAcceso a métodos
Por ejemplo, acceder al método “length”, se Por ejemplo, acceder al método “length”, se usa lo siguiente.usa lo siguiente.String line = new String("Hello there");String line = new String("Hello there");
int lengthLine = line.length();int lengthLine = line.length();
// longitud es 11// longitud es 11
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3232
Comparaciones y equivalenciasComparaciones y equivalencias
Considere la siguientes declaraciones de Considere la siguientes declaraciones de variable escalar.variable escalar.int valueX = 5;int valueX = 5;
int valueY = 5;int valueY = 5;
La siguiente expresión será evaluada La siguiente expresión será evaluada verdadera.verdadera.valueX == valueY valueX == valueY
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3333
Comparaciones y equivalenciasComparaciones y equivalencias
Ahora considere las siguientes Ahora considere las siguientes declaraciones de variables de referencadeclaraciones de variables de referenca
String lineOne = new String("Hi");String lineOne = new String("Hi");
String lineTwo = new String("Hi");String lineTwo = new String("Hi");
La siguiente expresión resultará falsaLa siguiente expresión resultará falsalineOne == lineTwolineOne == lineTwo
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3434
Comparaciones y equivalenciasComparaciones y equivalencias
La función del operador equivalencia ("==") es La función del operador equivalencia ("==") es comparar lo que está comparar lo que está directamentedirectamente representado representado por sus operandospor sus operandos
Cuando se compara lineOne y lineTwo, es la Cuando se compara lineOne y lineTwo, es la referencia-objeto indicada por las entidades referencia-objeto indicada por las entidades comparadas.comparadas.
Ya que lineOne y lineTwo son objetos Ya que lineOne y lineTwo son objetos separados sería imposible para ellos compartir separados sería imposible para ellos compartir el mismo objeto referenciael mismo objeto referencia
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3535
Comparaciones y equivalenciasComparaciones y equivalencias
Ahora veamos el siguiente ejemploAhora veamos el siguiente ejemploString lineOne = new String("Hola");String lineOne = new String("Hola");
String lineTwo = new String("Hello");String lineTwo = new String("Hello");
lineOne = lineTwo;lineOne = lineTwo;
¿Cuál será el resultado de la siguiente ¿Cuál será el resultado de la siguiente expresión?expresión?lineOne == lineTwo lineOne == lineTwo
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3636
Comparaciones y equivalenciasComparaciones y equivalencias
El valor será verdadero.El valor será verdadero. La función del operador asignación ("=") es La función del operador asignación ("=") es
asignar basado en lo que esta representado por asignar basado en lo que esta representado por sus operandossus operandos
Por lo que la asignación causa que el objeto Por lo que la asignación causa que el objeto referenciado en lineOne sea copiado en lineTworeferenciado en lineOne sea copiado en lineTwo
Así que ahora lineOne y lineTwo ahora tienen el Así que ahora lineOne y lineTwo ahora tienen el mismo objeto referencia y por lo tanto son mismo objeto referencia y por lo tanto son igualesiguales
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3737
Algo para tener en cuentaAlgo para tener en cuenta
¿Qué sucedió con el objeto que antes ¿Qué sucedió con el objeto que antes estaba representado por lineTwo? Aun estaba representado por lineTwo? Aun existe pero ahora es imposible usarlo existe pero ahora es imposible usarlo pues no se puede acceder a el. pues no se puede acceder a el.
Cosas como esta causan lo que se llama Cosas como esta causan lo que se llama “goteos de memoria” y hace que los “goteos de memoria” y hace que los programas consuman memoria que programas consuman memoria que después no pueden usarse.después no pueden usarse.
Mtl. Lourdes CahuichMtl. Lourdes Cahuich 3838
Recolector de basuraRecolector de basura
Para evitar esto existen programas Para evitar esto existen programas llamados “recolectores de basura”, para llamados “recolectores de basura”, para buscar y recuperar esta memoria.buscar y recuperar esta memoria.
Java hace uso automático del recolector Java hace uso automático del recolector de basura.de basura.