SlideShare una empresa de Scribd logo
Datos: Primitivas y objetos  (resumen) Apoyo SSD3
Tipos Existen muchas formas de información. Los datos que existen en los programas están categorizados. Esta categorización ayuda al programador a identificar el tipo de dato y usarlo apropiadamente Esta categorización se hace usando un sistema de tipos
Tipos de datos primitivos Java ofrece tipos de datos básicos llamados “primitivas”, y también permite los medios para definir nuevos tipos de datos Un nuevo tipo de datos puede definirse mediante la definición de una clase
Clases y objetos Una clase es análoga a un esquema para la construcción de un edificio, donde se especifica el diseño pero no se tiene nada en concreto Un objeto es una instancia de una clase; pueden existir tantas instancias de una clase como edificios basados en un mismo esquema de diseño
Objetos Los objetos (al igual que los edificios) ocupan un espacio específico y están ubicados en un lugar particular Los objetos consumen memoria y se encuentran localizados en una dirección particular de memoria.  Un apuntador a un objeto es llamado referencia
Tipos de datos primitivos Los tipos primitivos disponibles en Java pueden ser numéricos o booleanos. Representan números y resultados lógicos respectivamente Los tipos numéricos pueden ser de tipo entero o de punto flotante.
Tipos de datos enteros byte  – representa a un entero que requiere de un byte de almacenamiento short  – representa a un entero que requiere de dos bytes de almacenamiento int  – representa un número que requiere de cuatro bytes de almacenamiento long  – representa un entero que requiere ocho bytes de almacenamiento char  – representa caracteres unicode y requieren dos bytes de almacenamiento
Un caso especial El tipo “char” destaca en esta lista, pues aunque guarda enteros éstos se interpretan como caracteres basándose en un mapa que asocia los enteros con los caracteres El mapa que usa Java es el  Unicode
Cuidado Aún cuando el tipo “char” internamente representa enteros, no debe usarse como tal pues ocasionaría confusiones El tipo “short” está disponible con la misma cantidad de memoria que “char” por lo que no es necesario usar un tipo “char” en un contexto numérico
Tipos Java de punto flotante float  - representa un número de punto flotante que require exactamente cuatro bytes de almacenamiento double  - representa un número de punto flotante que requiere exactamente de ocho bytes de almacenamiento
Diferencias Todos los tipos representan valores con un almacenamiento finito y por lo tanto solo pueden representar un número finito de valores. Un tipo entero representa a todos los valores en su respectivo rango Esto no se cumple para los tipos de punto flotante
Consideraciones con los tipos de punto flotante Solo un conjunto particular de valores de punto flotante pueden representarse exactamente dentro de cualquier rango Esto tiene ciertos riesgos. Por ejemplo, en un programa la expresión((10.0 / 3.0) * 3.0) puede NO ser igual a 10.0.  Estos riesgos pueden causar que algunos programas se comporten inesperadamente
Tipos de datos (cont.) La otra categoría de tipos primitivos es el booleano.  Recuerda que el tipo booleano representa información lógica boolean  - representa un valor lógico de verdadero o falso
Tipos especiales Además de los tipos numéricos y booleanos hay otros dos tipos primitivos especiales Uno es el tipo ”void” (vacio).  Este tipo especial se usa para representar la ausencia de dato.  Se usa cuando se definen ciertos métodos Datos del tipo void no pueden existir
Tipos especiales El otro tipo especial es el tipo “null” (nulo), el cual no tiene nombre. Más adelante se explicará a detalle el uso de “null”
Literales primitivas Un programador explicitamente crea almacenamiento para los datos primitivos ya sea usando literales o declaraciones Una literal es una entidad que se representa a sí misma literalmente. Por ejemplo 5 es una literal
Categorías de literales de Java entero Punto flotante Boolean caracter string null
Una literal entera se puede expresar… En tres diferentes bases: decimal, hexadecimal, y  octal.  Decimal es el predeterminado Las comas no pueden usarse para agrupar dígitos. Las literales enteras son no negativas Una expresión como -1 hacen uso de la literal 1 y el operador negación ("-").  El ("-") no es parte de la literal
Una literal entera se puede expresar… Como número hexadecimal los dígitos son precedidos por 0x o 0X (cero y x) por ejemplo 0x10 que es 16 en decimal Enteros hexadecimales usan las letras A  hasta F para representar dígitos cuyo valor va del 10 al 15 respectivamente
Una literal entera se puede expresar… Como número octal los dígitos se preceden con cero, como en 017, que  es 15 en decimal.  Literales octales usan solo dígitos de 0 a 7
Declaraciones primitivas Además de las literales, los datos primitivas pueden introducirse mediante decaraciones
Declaraciones primitivas Una declaració para datos primitivos consiste del nombre del tipo, un identficador y opcionalmente se puede inicializar con =, y un punto y coma (";") como se muestra a continuación int  valueX;  // sin inicializador double valueY = 7.1;  // con inicializador
Constantes Se puede hacer uso de la palabra reservada “final”, para indicar que una declaración es de solo lectura Estos son referidos como  datos finales  o  constantes
Ejemplos de constantes final int  MAX = 100; final double  PI = 3.14159; final char  DEFAULT_CHAR = 'z';
Referencias y variables de referencia En Java los objetos se manipulan mediante referencias Las referencias son nombres que Java dá a los objetos Los objetos son manipulados  usando identificadores conocidos como referencias
Referencias a variables Se declaran referencias a variables de la misma manera que se declaran primitivas. Considera o siguiente String  line; Se declara una referencia a una variable tipo String.
Referencias Las referencias deben tener un valor antes de poder usarse En el ejemplo anterior se le debe asignar una cadena de caracteres o un nulo antes de poder usarla o la compilación fallará
Referencias En cualquier caso el programador puede explícitamente asignarle valor nulo String  line = null;   Null es el nombre que Java dá a los objetos que no existen. Es como si dijera que la referencia se refiere a nada
Creación de objetos Para crear un objeto se debe usar el operador “new” junto con otros constructores de objetos A continuación se muestra un ejemplo String  line = new  String("Hello");
Acceso a métodos Para acceder variables de instancias y métodos en un objeto, use el operador punto ("."). El punto es un operador infijo que requiere que el objeto sea el operador izquierdo y el campo o método el operador derecho.
Acceso a métodos Por ejemplo, acceder al método “length”, se usa lo siguiente. String  line = new  String("Hello there"); int  lengthLine = line.length(); // longitud es 11
Comparaciones y equivalencias Considere la siguientes declaraciones de variable escalar. int  valueX = 5; int  valueY = 5;   La siguiente expresión será evaluada verdadera. valueX == valueY 
Comparaciones y equivalencias Ahora considere las siguientes declaraciones de variables de referenca String  lineOne = new  String("Hi"); String  lineTwo = new  String("Hi");   La siguiente expresión resultará falsa lineOne == lineTwo
Comparaciones y equivalencias La función del operador equivalencia ("==") es comparar lo que está  directamente  representado por sus operandos Cuando se compara lineOne y lineTwo, es la referencia-objeto indicada por las entidades comparadas. Ya que lineOne y lineTwo son objetos separados sería imposible para ellos compartir el mismo objeto referencia
Comparaciones y equivalencias Ahora veamos el siguiente ejemplo String  lineOne = new  String("Hola"); String  lineTwo = new  String("Hello"); lineOne = lineTwo;   ¿Cuál será el resultado de la siguiente expresión? lineOne == lineTwo 
Comparaciones y equivalencias El valor será verdadero. La función  del operador asignación ("=") es asignar basado en lo que esta representado por sus operandos Por lo que la asignación causa que el objeto referenciado en lineOne sea copiado en lineTwo Así que ahora lineOne y lineTwo ahora tienen el mismo objeto referencia y por lo tanto son iguales
Algo para tener en cuenta ¿Qué sucedió con el objeto que antes estaba representado por lineTwo? Aun existe pero ahora es imposible usarlo pues no se puede acceder a el.  Cosas como esta causan lo que se llama “goteos de memoria” y hace que los programas consuman memoria que después no pueden usarse.
Recolector de basura Para evitar esto existen programas llamados “recolectores de basura”, para buscar y recuperar esta memoria. Java hace uso automático del recolector de basura.

Más contenido relacionado

PPTX
PDF
Tipos de datos en java
PPTX
A3 identificador palabraclavetipos
PDF
Tema 3: Tipos y clases en Haskell
PPTX
Estructura sintactica de los lenguajes de programacion
PDF
Tipos de datos en pseudocódigo
DOCX
Variables y tipos de datos parcial
PPT
Presentación de c #
Tipos de datos en java
A3 identificador palabraclavetipos
Tema 3: Tipos y clases en Haskell
Estructura sintactica de los lenguajes de programacion
Tipos de datos en pseudocódigo
Variables y tipos de datos parcial
Presentación de c #

La actualidad más candente (20)

PPTX
Estructura sintactica de los lenguajes de programacion y bases de datos
PPT
8 tipos variables constantes
PPTX
Tipos de datos.java
PDF
Unidad i antecedentes
PDF
Tema 2 tipos de datos y expresiones en java por gio
PPT
C# Diferencias
PPT
3. Uso De Variables De Tipo Valor
PPT
Variables y constantes
PPT
Caracteres y Cadenas en C
PPTX
Tipos de datos ok
PPS
Identificadores, variables y constantes
PPSX
Identificadores en Lógia de Programación
PDF
Lenguajes de Programación: Tutorial csharp
ODP
Informatica
PDF
Tipos de datos
DOCX
Ap n° 3 rios,m. fernanda
PPSX
Operadores
PDF
PHP mode on part 2
PDF
DOC
Introduccion c
Estructura sintactica de los lenguajes de programacion y bases de datos
8 tipos variables constantes
Tipos de datos.java
Unidad i antecedentes
Tema 2 tipos de datos y expresiones en java por gio
C# Diferencias
3. Uso De Variables De Tipo Valor
Variables y constantes
Caracteres y Cadenas en C
Tipos de datos ok
Identificadores, variables y constantes
Identificadores en Lógia de Programación
Lenguajes de Programación: Tutorial csharp
Informatica
Tipos de datos
Ap n° 3 rios,m. fernanda
Operadores
PHP mode on part 2
Introduccion c
Publicidad

Destacado (20)

PDF
SCJP, Clase 3: Asignaciones
PDF
SCJP, Clase 8: Inner Classes
PDF
SCJP, Clase 4: Operadores
PDF
SCJP, Clase 6: Collections
PDF
SCJP, Clase 5: Control de Flujo
PPTX
PDF
Programación orientada a objetos para php5
PDF
SCJP, Clase 7: Generics
PDF
SCJP, Clase 10: Strings, I/O
PDF
SCJP, Clase 9: Threads
PDF
Poo y mvc en php
PDF
Introducción a la Programación Orientada a Objetos
PDF
SCJP, Clase 2: Ejemplos De Enum, Poo
PPTX
Tipos de variables que Java maneja
ODP
Iniciación PHP 5. Programación Orientada a Objetos
PDF
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
PPT
Curso Java Inicial 7 Excepciones
PPT
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
PPT
Curso Java Inicial 1 POO
PPTX
programacion orientada a objetos
SCJP, Clase 3: Asignaciones
SCJP, Clase 8: Inner Classes
SCJP, Clase 4: Operadores
SCJP, Clase 6: Collections
SCJP, Clase 5: Control de Flujo
Programación orientada a objetos para php5
SCJP, Clase 7: Generics
SCJP, Clase 10: Strings, I/O
SCJP, Clase 9: Threads
Poo y mvc en php
Introducción a la Programación Orientada a Objetos
SCJP, Clase 2: Ejemplos De Enum, Poo
Tipos de variables que Java maneja
Iniciación PHP 5. Programación Orientada a Objetos
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
Curso Java Inicial 7 Excepciones
Curso Java Inicial 6 Polimorfismo, AbstraccióN E Interfaces
Curso Java Inicial 1 POO
programacion orientada a objetos
Publicidad

Similar a 1 1 2 Datos Primitivas Y Objetos (20)

PDF
Unidad i antecedentes1
PPTX
Tipos de datos
PPTX
tipos de datos
PPTX
Tipos de datos Java
PPT
Tipos Primitivos y Elementos Léxicos de Java
PPT
LibreríAs De Java
ODP
Seccion Fundamentos SCJP
PDF
Clase No.03 GENERALIDADES DEL LENGUAJE JAVA.pdf
PDF
Tipos de Datos en Java para programación Orientada a Objetos
PPT
Mule Librerias en Java
PDF
generalidades java
PPTX
Tipos de datos
PPTX
Tipos de datos
PPTX
Tipos de datos y variables
PDF
Java - Sintaxis Básica 2015
PPTX
Elementos de programacion t1
PPT
Introduccions a java
Unidad i antecedentes1
Tipos de datos
tipos de datos
Tipos de datos Java
Tipos Primitivos y Elementos Léxicos de Java
LibreríAs De Java
Seccion Fundamentos SCJP
Clase No.03 GENERALIDADES DEL LENGUAJE JAVA.pdf
Tipos de Datos en Java para programación Orientada a Objetos
Mule Librerias en Java
generalidades java
Tipos de datos
Tipos de datos
Tipos de datos y variables
Java - Sintaxis Básica 2015
Elementos de programacion t1
Introduccions a java

Más de UVM (20)

PPTX
Tiempo compartido en programación
 
PPTX
Portafolio de evidencias del curso Programación Avanzada
 
PPTX
Eficiencia en uso tiempo
 
PPTX
Administración de memoria arreglos dinamicos
 
PPTX
Practica de arreglos
 
PPTX
Otra introducción a apuntadores
 
PPTX
Ejemplo de solución de práctica funciones stl
 
PPTX
Breve repaso de apuntadores
 
PPTX
Arreglos conceptos básicos
 
PPTX
Resolución práctica de tipos de datos
 
PPTX
Resumen de funciones
 
PPTX
Biblioteca estándar de funciones
 
PPTX
Manejo de bits
 
PPTX
Aclaración de dudas 4 de septiembre
 
PPTX
Aclaraciones varias a códigos entregados en sesión 3
 
PPTX
Funciones definidas por el usuario
 
PPTX
Función main()
 
PPTX
Depuración de un programa en c++
 
PPTX
Algunas dudas de la sesión 28 agosto
 
PPTX
Estructura programa c++
 
Tiempo compartido en programación
 
Portafolio de evidencias del curso Programación Avanzada
 
Eficiencia en uso tiempo
 
Administración de memoria arreglos dinamicos
 
Practica de arreglos
 
Otra introducción a apuntadores
 
Ejemplo de solución de práctica funciones stl
 
Breve repaso de apuntadores
 
Arreglos conceptos básicos
 
Resolución práctica de tipos de datos
 
Resumen de funciones
 
Biblioteca estándar de funciones
 
Manejo de bits
 
Aclaración de dudas 4 de septiembre
 
Aclaraciones varias a códigos entregados en sesión 3
 
Funciones definidas por el usuario
 
Función main()
 
Depuración de un programa en c++
 
Algunas dudas de la sesión 28 agosto
 
Estructura programa c++
 

Último (20)

PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Maste clas de estructura metálica y arquitectura
PDF
CyberOps Associate - Cisco Networking Academy
PDF
Estrategia de apoyo tecnología grado 9-3
PDF
taller de informática - LEY DE OHM
PDF
Diapositiva proyecto de vida, materia catedra
PDF
Estrategia de apoyo tecnología miguel angel solis
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
Influencia-del-uso-de-redes-sociales.pdf
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Presentación de Redes de Datos modelo osi
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPT
Que son las redes de computadores y sus partes
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Propuesta BKP servidores con Acronis1.pptx
introduccion a las_web en el 2025_mejoras.ppt
Maste clas de estructura metálica y arquitectura
CyberOps Associate - Cisco Networking Academy
Estrategia de apoyo tecnología grado 9-3
taller de informática - LEY DE OHM
Diapositiva proyecto de vida, materia catedra
Estrategia de apoyo tecnología miguel angel solis
historia_web de la creacion de un navegador_presentacion.pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
Influencia-del-uso-de-redes-sociales.pdf
Sesion 1 de microsoft power point - Clase 1
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Presentación de Redes de Datos modelo osi
Calidad desde el Docente y la mejora continua .pdf
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
REDES INFORMATICAS REDES INFORMATICAS.pptx
Que son las redes de computadores y sus partes
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Propuesta BKP servidores con Acronis1.pptx

1 1 2 Datos Primitivas Y Objetos

  • 1. Datos: Primitivas y objetos (resumen) Apoyo SSD3
  • 2. Tipos Existen muchas formas de información. Los datos que existen en los programas están categorizados. Esta categorización ayuda al programador a identificar el tipo de dato y usarlo apropiadamente Esta categorización se hace usando un sistema de tipos
  • 3. Tipos de datos primitivos Java ofrece tipos de datos básicos llamados “primitivas”, y también permite los medios para definir nuevos tipos de datos Un nuevo tipo de datos puede definirse mediante la definición de una clase
  • 4. Clases y objetos Una clase es análoga a un esquema para la construcción de un edificio, donde se especifica el diseño pero no se tiene nada en concreto Un objeto es una instancia de una clase; pueden existir tantas instancias de una clase como edificios basados en un mismo esquema de diseño
  • 5. Objetos Los objetos (al igual que los edificios) ocupan un espacio específico y están ubicados en un lugar particular Los objetos consumen memoria y se encuentran localizados en una dirección particular de memoria. Un apuntador a un objeto es llamado referencia
  • 6. Tipos de datos primitivos Los tipos primitivos disponibles en Java pueden ser numéricos o booleanos. Representan números y resultados lógicos respectivamente Los tipos numéricos pueden ser de tipo entero o de punto flotante.
  • 7. Tipos de datos enteros byte – representa a un entero que requiere de un byte de almacenamiento short – representa a un entero que requiere de dos bytes de almacenamiento int – representa un número que requiere de cuatro bytes de almacenamiento long – representa un entero que requiere ocho bytes de almacenamiento char – representa caracteres unicode y requieren dos bytes de almacenamiento
  • 8. Un caso especial El tipo “char” destaca en esta lista, pues aunque guarda enteros éstos se interpretan como caracteres basándose en un mapa que asocia los enteros con los caracteres El mapa que usa Java es el Unicode
  • 9. Cuidado Aún cuando el tipo “char” internamente representa enteros, no debe usarse como tal pues ocasionaría confusiones El tipo “short” está disponible con la misma cantidad de memoria que “char” por lo que no es necesario usar un tipo “char” en un contexto numérico
  • 10. Tipos Java de punto flotante float  - representa un número de punto flotante que require exactamente cuatro bytes de almacenamiento double  - representa un número de punto flotante que requiere exactamente de ocho bytes de almacenamiento
  • 11. Diferencias Todos los tipos representan valores con un almacenamiento finito y por lo tanto solo pueden representar un número finito de valores. Un tipo entero representa a todos los valores en su respectivo rango Esto no se cumple para los tipos de punto flotante
  • 12. Consideraciones con los tipos de punto flotante Solo un conjunto particular de valores de punto flotante pueden representarse exactamente dentro de cualquier rango Esto tiene ciertos riesgos. Por ejemplo, en un programa la expresión((10.0 / 3.0) * 3.0) puede NO ser igual a 10.0. Estos riesgos pueden causar que algunos programas se comporten inesperadamente
  • 13. Tipos de datos (cont.) La otra categoría de tipos primitivos es el booleano. Recuerda que el tipo booleano representa información lógica boolean  - representa un valor lógico de verdadero o falso
  • 14. Tipos especiales Además de los tipos numéricos y booleanos hay otros dos tipos primitivos especiales Uno es el tipo ”void” (vacio). Este tipo especial se usa para representar la ausencia de dato. Se usa cuando se definen ciertos métodos Datos del tipo void no pueden existir
  • 15. Tipos especiales El otro tipo especial es el tipo “null” (nulo), el cual no tiene nombre. Más adelante se explicará a detalle el uso de “null”
  • 16. Literales primitivas Un programador explicitamente crea almacenamiento para los datos primitivos ya sea usando literales o declaraciones Una literal es una entidad que se representa a sí misma literalmente. Por ejemplo 5 es una literal
  • 17. Categorías de literales de Java entero Punto flotante Boolean caracter string null
  • 18. Una literal entera se puede expresar… En tres diferentes bases: decimal, hexadecimal, y octal. Decimal es el predeterminado Las comas no pueden usarse para agrupar dígitos. Las literales enteras son no negativas Una expresión como -1 hacen uso de la literal 1 y el operador negación ("-"). El ("-") no es parte de la literal
  • 19. Una literal entera se puede expresar… Como número hexadecimal los dígitos son precedidos por 0x o 0X (cero y x) por ejemplo 0x10 que es 16 en decimal Enteros hexadecimales usan las letras A hasta F para representar dígitos cuyo valor va del 10 al 15 respectivamente
  • 20. Una literal entera se puede expresar… Como número octal los dígitos se preceden con cero, como en 017, que es 15 en decimal. Literales octales usan solo dígitos de 0 a 7
  • 21. Declaraciones primitivas Además de las literales, los datos primitivas pueden introducirse mediante decaraciones
  • 22. Declaraciones primitivas Una declaració para datos primitivos consiste del nombre del tipo, un identficador y opcionalmente se puede inicializar con =, y un punto y coma (";") como se muestra a continuación int  valueX;  // sin inicializador double valueY = 7.1;  // con inicializador
  • 23. Constantes Se puede hacer uso de la palabra reservada “final”, para indicar que una declaración es de solo lectura Estos son referidos como datos finales o constantes
  • 24. Ejemplos de constantes final int  MAX = 100; final double  PI = 3.14159; final char  DEFAULT_CHAR = 'z';
  • 25. Referencias y variables de referencia En Java los objetos se manipulan mediante referencias Las referencias son nombres que Java dá a los objetos Los objetos son manipulados usando identificadores conocidos como referencias
  • 26. Referencias a variables Se declaran referencias a variables de la misma manera que se declaran primitivas. Considera o siguiente String  line; Se declara una referencia a una variable tipo String.
  • 27. Referencias Las referencias deben tener un valor antes de poder usarse En el ejemplo anterior se le debe asignar una cadena de caracteres o un nulo antes de poder usarla o la compilación fallará
  • 28. Referencias En cualquier caso el programador puede explícitamente asignarle valor nulo String  line = null; Null es el nombre que Java dá a los objetos que no existen. Es como si dijera que la referencia se refiere a nada
  • 29. Creación de objetos Para crear un objeto se debe usar el operador “new” junto con otros constructores de objetos A continuación se muestra un ejemplo String  line = new  String("Hello");
  • 30. Acceso a métodos Para acceder variables de instancias y métodos en un objeto, use el operador punto ("."). El punto es un operador infijo que requiere que el objeto sea el operador izquierdo y el campo o método el operador derecho.
  • 31. Acceso a métodos Por ejemplo, acceder al método “length”, se usa lo siguiente. String  line = new  String("Hello there"); int  lengthLine = line.length(); // longitud es 11
  • 32. Comparaciones y equivalencias Considere la siguientes declaraciones de variable escalar. int  valueX = 5; int  valueY = 5; La siguiente expresión será evaluada verdadera. valueX == valueY 
  • 33. Comparaciones y equivalencias Ahora considere las siguientes declaraciones de variables de referenca String  lineOne = new  String("Hi"); String  lineTwo = new  String("Hi"); La siguiente expresión resultará falsa lineOne == lineTwo
  • 34. Comparaciones y equivalencias La función del operador equivalencia ("==") es comparar lo que está directamente representado por sus operandos Cuando se compara lineOne y lineTwo, es la referencia-objeto indicada por las entidades comparadas. Ya que lineOne y lineTwo son objetos separados sería imposible para ellos compartir el mismo objeto referencia
  • 35. Comparaciones y equivalencias Ahora veamos el siguiente ejemplo String  lineOne = new  String("Hola"); String  lineTwo = new  String("Hello"); lineOne = lineTwo; ¿Cuál será el resultado de la siguiente expresión? lineOne == lineTwo 
  • 36. Comparaciones y equivalencias El valor será verdadero. La función del operador asignación ("=") es asignar basado en lo que esta representado por sus operandos Por lo que la asignación causa que el objeto referenciado en lineOne sea copiado en lineTwo Así que ahora lineOne y lineTwo ahora tienen el mismo objeto referencia y por lo tanto son iguales
  • 37. Algo para tener en cuenta ¿Qué sucedió con el objeto que antes estaba representado por lineTwo? Aun existe pero ahora es imposible usarlo pues no se puede acceder a el. Cosas como esta causan lo que se llama “goteos de memoria” y hace que los programas consuman memoria que después no pueden usarse.
  • 38. Recolector de basura Para evitar esto existen programas llamados “recolectores de basura”, para buscar y recuperar esta memoria. Java hace uso automático del recolector de basura.