SlideShare una empresa de Scribd logo
1 de 14
Descargar para leer sin conexión
holamundo.co
progra_amando
Paso por referencia
Es cuando se envía la dirección en memoria de una variable a
una función por medio de sus parámetros.
Se debe tener cuidado ya que si se modifica el valor de la vari-
able, el cambio se ve reflejado en el contexto desde donde fue
llamada la función.
Valor null
StringBuilder str = null;
Cuando se declara un tipo de dato que puede ser una referencia,
es posible asignarle un valor que representa “nada”, y con este
valor es posible empezar a usar la variable e operaciones.
Recuerde que el valor null es temporal, para realizar otras opera-
ciones es necesario inicializar la variable para evitar una excep-
ción de NullPointerException.
null
str
NullPointerException
StringBuilder str = null;
str = new StringBuilder(”Prueba”);
String str2 =“Prueba 2”;
Se presenta cuando se intenta acceder a una función de un tipo
de dato referencia, cuyo valor es NULL. Para que no se produzca
la excepción se debe garantizar que la variable ha sido inicializa-
da, la mayoría de los casos esto se hace por medio de la palabra
reservada new y/o el operador de asignación“=”.
Arrays
Este tipo de dato puede ser una combinación de dos tipos difer-
entes: datos primitivos para las componentes y el contenedor
en si, es de tipo referencia. Es posible asignar un valor de NULL a
su variable.
Una vez creado el array usando new, cada posición del arreglo
toma un valor por defecto que depende del tipo de dato.
float v[];
v
?
v = new float[3];
v
0 0 0
0 1 2
Componentes de un array
Para inicializar cada componente del array es necesario asignar
un dato del mismo tipo del array, se puede hacer un array de
datos tipo referencia o de un array tipo primitivo.
v[0] = 8;
v
8 0 0
0
0 1 2
v[1] = -2;
v
8 -2
0 1 2
v[2] = 30;
v
8 -2 30
0 1 2
Array de referencias
Se usa el operador new para inicializar el array y luego se usa
nuevamente para inicializar cada componente.
StringBuilder str[] = new StringBuilder[2];
str[0] = new StringBuilder(”Hola”);
str[1] = new StringBuilder(”Mundo”);
Paso por referencia
int v[] = {1,2,3};
cambiarValor(v);
imprimir(v[0]);
imprimir(v[1]);
imprimir(v[2]);
v[0] = 5;
v[2] = 11;
void cambiarValor(int v[])
main(...)
Contexto A
V[0]:5, V[1]:2,V[2]:11 Se cambia
la variable del contexto A, porque
se pasa por referencia
Contexto B
Un cambio en este
contexto, afecta a la
variable del contexto A,
porque hay paso por
referencia
Función void con retorno
Si en la firma de una función se define el valor de retorno void,
quiere decir que no se usa la palabra reservada return y por
tanto no se retorna un dato al exterior de la función.
Sin embargo hay una forma de retornar un valor, de manera im-
plícita en el parámetro de la función. NO SE CONSIDERA UNA
BUENA PRÁCTICA, PERO ES ALGO QUE DEBE SABER ;)
Hay algunas referencias que se pasan como una copia del valor,
por tanto es mejor usar el tipo de retorno explícito, para cambiar
una variable por fuera del contexto de la función.
Declarar explícitamente el retorno de una función es una buena
práctica, pues es más sencillo realizar debug en caso que la
función presente un error, si el retorno es implícito, puede ser
más complicado realizar pruebas.
Recuerde además que el propósito de una función, es hacer
bien solo una cosa, ser especializada.
Función void con retorno
public static void retornarValor(char c[]){
c[0] = -2;
}
public static void main(String[] args) {
char c[] = new char[]{3,5,6};
retornarValor(c);
System.out.println(Arrays.toString(c));
}
Función void con retorno
La función retornarValor por usar un dato que se pasa por refer-
encia, puede afectar el contenido de una función externa, como
se pudo observar en el ejemplo anterior.
Recolección de basura
Java dispone de un mécanismo por defecto encargado de opti-
mizar el uso de la memoría, llamado Garbage Collector (GC). Se
encarga de liberar espacios de memoría que no se usan.
Al asignar a una referencia el valor nulo, hace que el contenido
que hacía referencia la variable, sea“reciclado”por el GC.
boolean v[] = new bolean(){true, false, true};
v = null; //El GC dispone de la memoria usada
v = new bolean(){true, false, true}; //Se reasigna el valor
Errores frecuentes
Errores en tiempo de compilacón al tratar de realizar opera-
ciones con variables inicializadas en NULL, estos errores no son
detectables en tiempo de compilación.
No usar estructuras try-catch-finally, para controlar errores en
tiempo de ejecución.
Utilizar el retorno implícito para más de una variable, ya que si se
excede en esta práctica, puede perder el control del programa.
Usar valores primitivos para realizar un operación por referencia,
el programa compila, pero el resultado no es el esperado.
La mayoría de variables tipo referencia, se pasan por copia.
Ejercicios
Realice una función que:
Lea cada una de las componentes de un array de números en-
teros, que se pasa por referencia.
Cree referencias del tipo StringBuilder a partir de una variable
vacía que le llega como referencia. ¿Qué pasa si se imprime el
valor antes y después de esta operación?
Reciba un StringBuilder y borre las vocales.
Retorne una referencia a un array de n números enteros alea-
torios teniendo en cuenta un parámetro que llega como copia.

Más contenido relacionado

Similar a Presentación 13 Paso por referencia

Similar a Presentación 13 Paso por referencia (20)

Angular Conceptos Practicos 2
Angular Conceptos Practicos 2Angular Conceptos Practicos 2
Angular Conceptos Practicos 2
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
 
Java básico
Java  básicoJava  básico
Java básico
 
Constructores en java(grupo 8)
Constructores en java(grupo 8)Constructores en java(grupo 8)
Constructores en java(grupo 8)
 
PHP MySql - FIEI - UNFV Clase03
PHP MySql - FIEI - UNFV Clase03PHP MySql - FIEI - UNFV Clase03
PHP MySql - FIEI - UNFV Clase03
 
SCJP, Clase 3: Asignaciones
SCJP, Clase 3: AsignacionesSCJP, Clase 3: Asignaciones
SCJP, Clase 3: Asignaciones
 
Implementando Funciones Undo
Implementando Funciones UndoImplementando Funciones Undo
Implementando Funciones Undo
 
As3 unidad 7 arrelos y ciclos
As3 unidad 7 arrelos y ciclosAs3 unidad 7 arrelos y ciclos
As3 unidad 7 arrelos y ciclos
 
Arreglos Expresiones y Control de Flujo
Arreglos Expresiones y Control de FlujoArreglos Expresiones y Control de Flujo
Arreglos Expresiones y Control de Flujo
 
Pl
PlPl
Pl
 
4 Administracion De Memoria
4 Administracion De Memoria4 Administracion De Memoria
4 Administracion De Memoria
 
Clase3 asignaciones
Clase3 asignacionesClase3 asignaciones
Clase3 asignaciones
 
C++
C++C++
C++
 
Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)
 
Jf 3 9_sg_esp(2)(3) 9
Jf 3 9_sg_esp(2)(3) 9Jf 3 9_sg_esp(2)(3) 9
Jf 3 9_sg_esp(2)(3) 9
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 
Pra9
Pra9Pra9
Pra9
 
Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)Jf 3 9_sg_esp(2)(3)
Jf 3 9_sg_esp(2)(3)
 
CAPITULO 9 DE GREENFOOT
CAPITULO 9 DE GREENFOOTCAPITULO 9 DE GREENFOOT
CAPITULO 9 DE GREENFOOT
 
Greenfoot 9
Greenfoot 9Greenfoot 9
Greenfoot 9
 

Más de Andres Bedoya Tobon

Enums, constantes, listas e interfaces
Enums, constantes, listas e interfacesEnums, constantes, listas e interfaces
Enums, constantes, listas e interfacesAndres Bedoya Tobon
 
Taller estudio - Estructuras de control VBA - Excel
Taller estudio - Estructuras de control VBA - ExcelTaller estudio - Estructuras de control VBA - Excel
Taller estudio - Estructuras de control VBA - ExcelAndres Bedoya Tobon
 
Entrada y salida, manejo de cadenas de texto
Entrada y salida, manejo de cadenas de textoEntrada y salida, manejo de cadenas de texto
Entrada y salida, manejo de cadenas de textoAndres Bedoya Tobon
 
Progra-Amando Medellin Tech Fest
Progra-Amando Medellin Tech FestProgra-Amando Medellin Tech Fest
Progra-Amando Medellin Tech FestAndres Bedoya Tobon
 
03 curso poo Valores por defecto - constructores
03 curso poo Valores por defecto - constructores03 curso poo Valores por defecto - constructores
03 curso poo Valores por defecto - constructoresAndres Bedoya Tobon
 
Excel - Variables y condicionales
Excel - Variables y condicionalesExcel - Variables y condicionales
Excel - Variables y condicionalesAndres Bedoya Tobon
 
Elementos de programacion - Excel
Elementos de programacion - ExcelElementos de programacion - Excel
Elementos de programacion - ExcelAndres Bedoya Tobon
 
Programación y diseño orientado a objetos
Programación y diseño orientado a objetosProgramación y diseño orientado a objetos
Programación y diseño orientado a objetosAndres Bedoya Tobon
 

Más de Andres Bedoya Tobon (20)

Enums, constantes, listas e interfaces
Enums, constantes, listas e interfacesEnums, constantes, listas e interfaces
Enums, constantes, listas e interfaces
 
VBA Interfaz de usuario
VBA Interfaz de usuarioVBA Interfaz de usuario
VBA Interfaz de usuario
 
VBA Interfaz de usuario
VBA Interfaz de usuarioVBA Interfaz de usuario
VBA Interfaz de usuario
 
Taller estudio - Estructuras de control VBA - Excel
Taller estudio - Estructuras de control VBA - ExcelTaller estudio - Estructuras de control VBA - Excel
Taller estudio - Estructuras de control VBA - Excel
 
Entrada y salida, manejo de cadenas de texto
Entrada y salida, manejo de cadenas de textoEntrada y salida, manejo de cadenas de texto
Entrada y salida, manejo de cadenas de texto
 
Progra-Amando Medellin Tech Fest
Progra-Amando Medellin Tech FestProgra-Amando Medellin Tech Fest
Progra-Amando Medellin Tech Fest
 
04 curso poo Herencia
04 curso poo Herencia04 curso poo Herencia
04 curso poo Herencia
 
03 curso poo Valores por defecto - constructores
03 curso poo Valores por defecto - constructores03 curso poo Valores por defecto - constructores
03 curso poo Valores por defecto - constructores
 
02 curso poo Clase - Objeto
02 curso poo Clase - Objeto02 curso poo Clase - Objeto
02 curso poo Clase - Objeto
 
01 curso poo Funciones
01 curso poo Funciones01 curso poo Funciones
01 curso poo Funciones
 
Excel - Variables y condicionales
Excel - Variables y condicionalesExcel - Variables y condicionales
Excel - Variables y condicionales
 
Excel - Macros
Excel - MacrosExcel - Macros
Excel - Macros
 
Elementos de programacion 02
Elementos de programacion 02Elementos de programacion 02
Elementos de programacion 02
 
Taller de estudio - Excel
Taller de estudio - ExcelTaller de estudio - Excel
Taller de estudio - Excel
 
Elementos de programacion - Excel
Elementos de programacion - ExcelElementos de programacion - Excel
Elementos de programacion - Excel
 
Automatizar tareas usando GAP
Automatizar tareas usando GAPAutomatizar tareas usando GAP
Automatizar tareas usando GAP
 
Pull request - Hacktoberfest
Pull request - Hacktoberfest Pull request - Hacktoberfest
Pull request - Hacktoberfest
 
Abc tipografico Medellin CSS
Abc tipografico Medellin CSSAbc tipografico Medellin CSS
Abc tipografico Medellin CSS
 
Programación y diseño orientado a objetos
Programación y diseño orientado a objetosProgramación y diseño orientado a objetos
Programación y diseño orientado a objetos
 
Clean code
Clean codeClean code
Clean code
 

Último

2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdfBaker Publishing Company
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFlor Idalia Espinoza Ortega
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFAROJosé Luis Palma
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteJuan Hernandez
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxlclcarmen
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptELENA GALLARDO PAÚLS
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadAlejandrino Halire Ccahuana
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMarjorie Burga
 

Último (20)

2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf2024 - Expo Visibles - Visibilidad Lesbica.pdf
2024 - Expo Visibles - Visibilidad Lesbica.pdf
 
Factores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamicaFactores ecosistemas: interacciones, energia y dinamica
Factores ecosistemas: interacciones, energia y dinamica
 
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARONARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
NARRACIONES SOBRE LA VIDA DEL GENERAL ELOY ALFARO
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Unidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parteUnidad II Doctrina de la Iglesia 1 parte
Unidad II Doctrina de la Iglesia 1 parte
 
La Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdfLa Trampa De La Felicidad. Russ-Harris.pdf
La Trampa De La Felicidad. Russ-Harris.pdf
 
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptxSINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
SINTAXIS DE LA ORACIÓN SIMPLE 2023-2024.pptx
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.pptDE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
DE LAS OLIMPIADAS GRIEGAS A LAS DEL MUNDO MODERNO.ppt
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Lecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdadLecciones 04 Esc. Sabática. Defendamos la verdad
Lecciones 04 Esc. Sabática. Defendamos la verdad
 
MAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grandeMAYO 1 PROYECTO día de la madre el amor más grande
MAYO 1 PROYECTO día de la madre el amor más grande
 
Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020
 

Presentación 13 Paso por referencia

  • 2. Paso por referencia Es cuando se envía la dirección en memoria de una variable a una función por medio de sus parámetros. Se debe tener cuidado ya que si se modifica el valor de la vari- able, el cambio se ve reflejado en el contexto desde donde fue llamada la función.
  • 3. Valor null StringBuilder str = null; Cuando se declara un tipo de dato que puede ser una referencia, es posible asignarle un valor que representa “nada”, y con este valor es posible empezar a usar la variable e operaciones. Recuerde que el valor null es temporal, para realizar otras opera- ciones es necesario inicializar la variable para evitar una excep- ción de NullPointerException. null str
  • 4. NullPointerException StringBuilder str = null; str = new StringBuilder(”Prueba”); String str2 =“Prueba 2”; Se presenta cuando se intenta acceder a una función de un tipo de dato referencia, cuyo valor es NULL. Para que no se produzca la excepción se debe garantizar que la variable ha sido inicializa- da, la mayoría de los casos esto se hace por medio de la palabra reservada new y/o el operador de asignación“=”.
  • 5. Arrays Este tipo de dato puede ser una combinación de dos tipos difer- entes: datos primitivos para las componentes y el contenedor en si, es de tipo referencia. Es posible asignar un valor de NULL a su variable. Una vez creado el array usando new, cada posición del arreglo toma un valor por defecto que depende del tipo de dato. float v[]; v ? v = new float[3]; v 0 0 0 0 1 2
  • 6. Componentes de un array Para inicializar cada componente del array es necesario asignar un dato del mismo tipo del array, se puede hacer un array de datos tipo referencia o de un array tipo primitivo. v[0] = 8; v 8 0 0 0 0 1 2 v[1] = -2; v 8 -2 0 1 2 v[2] = 30; v 8 -2 30 0 1 2
  • 7. Array de referencias Se usa el operador new para inicializar el array y luego se usa nuevamente para inicializar cada componente. StringBuilder str[] = new StringBuilder[2]; str[0] = new StringBuilder(”Hola”); str[1] = new StringBuilder(”Mundo”);
  • 8. Paso por referencia int v[] = {1,2,3}; cambiarValor(v); imprimir(v[0]); imprimir(v[1]); imprimir(v[2]); v[0] = 5; v[2] = 11; void cambiarValor(int v[]) main(...) Contexto A V[0]:5, V[1]:2,V[2]:11 Se cambia la variable del contexto A, porque se pasa por referencia Contexto B Un cambio en este contexto, afecta a la variable del contexto A, porque hay paso por referencia
  • 9. Función void con retorno Si en la firma de una función se define el valor de retorno void, quiere decir que no se usa la palabra reservada return y por tanto no se retorna un dato al exterior de la función. Sin embargo hay una forma de retornar un valor, de manera im- plícita en el parámetro de la función. NO SE CONSIDERA UNA BUENA PRÁCTICA, PERO ES ALGO QUE DEBE SABER ;) Hay algunas referencias que se pasan como una copia del valor, por tanto es mejor usar el tipo de retorno explícito, para cambiar una variable por fuera del contexto de la función.
  • 10. Declarar explícitamente el retorno de una función es una buena práctica, pues es más sencillo realizar debug en caso que la función presente un error, si el retorno es implícito, puede ser más complicado realizar pruebas. Recuerde además que el propósito de una función, es hacer bien solo una cosa, ser especializada. Función void con retorno
  • 11. public static void retornarValor(char c[]){ c[0] = -2; } public static void main(String[] args) { char c[] = new char[]{3,5,6}; retornarValor(c); System.out.println(Arrays.toString(c)); } Función void con retorno La función retornarValor por usar un dato que se pasa por refer- encia, puede afectar el contenido de una función externa, como se pudo observar en el ejemplo anterior.
  • 12. Recolección de basura Java dispone de un mécanismo por defecto encargado de opti- mizar el uso de la memoría, llamado Garbage Collector (GC). Se encarga de liberar espacios de memoría que no se usan. Al asignar a una referencia el valor nulo, hace que el contenido que hacía referencia la variable, sea“reciclado”por el GC. boolean v[] = new bolean(){true, false, true}; v = null; //El GC dispone de la memoria usada v = new bolean(){true, false, true}; //Se reasigna el valor
  • 13. Errores frecuentes Errores en tiempo de compilacón al tratar de realizar opera- ciones con variables inicializadas en NULL, estos errores no son detectables en tiempo de compilación. No usar estructuras try-catch-finally, para controlar errores en tiempo de ejecución. Utilizar el retorno implícito para más de una variable, ya que si se excede en esta práctica, puede perder el control del programa. Usar valores primitivos para realizar un operación por referencia, el programa compila, pero el resultado no es el esperado. La mayoría de variables tipo referencia, se pasan por copia.
  • 14. Ejercicios Realice una función que: Lea cada una de las componentes de un array de números en- teros, que se pasa por referencia. Cree referencias del tipo StringBuilder a partir de una variable vacía que le llega como referencia. ¿Qué pasa si se imprime el valor antes y después de esta operación? Reciba un StringBuilder y borre las vocales. Retorne una referencia a un array de n números enteros alea- torios teniendo en cuenta un parámetro que llega como copia.