Académique Documents
Professionnel Documents
Culture Documents
Sesin 2: Referencias
[14 de Marzo del 2013]
Referencias
Todos los tipos que no sean primitivos sern
de tipo referencia, incluyendo las cadenas
de caracteres, vectores de objetos y canales
de E/S.
En este captulo veremos:
Qu es un tipo referencia.
En qu se distinguen los tipos referencia de los
tipos primitivos.
Ejemplos de tipo referencia.
Referencia
Definicin: variable que guarda la direccin de
memoria donde se almacena un objeto.
Diferencia con punteros C: Java no permite
acceder al espacio de direcciones, slo a la
informacin del objeto que se est referenciando.
En Java la gestin de la memoria es automtica
(mediante Hilos recolectores de basura).
Ventaja: libera al programador de la gestin de
memoria. Muchas veces causa de errores.
Desventaja: el programador pierde control sobre la
gestin de memoria.
Ejemplo
Clase Punto.java
clase Punto {
private double x;
private double y;
public Punto(double x,double y) {
this.x=x;
this.y=y;
}
}
clase Punto {
private double x;
private double y;
public Punto(double x,double y) {
1000
(0.0,0.0)
1024
(5.0,12.0)
this.x=x;
this.y=y;
}
}
Punto punto1=new Punto(0.0,0.0);
Punto punto2=new Punto(5.0,12.0);
3200
punto2 = 1024
3600
punto1 = 1000
clase Punto {
private double x;
private double y;
public Punto(double x,double y) {
1000
(0.0,0.0)
1024
(5.0,12.0)
this.x=x;
this.y=y;
}
}
Punto punto1=new Punto(0.0,0.0);
Punto punto2=new Punto(5.0,12.0);
3200
punto2 = 1024
3600
punto1 = 1000
clase Punto {
private double x;
private double y;
public Punto(double x,double y) {
1000
(0.0,0.0)
1024
(5.0,12.0)
this.x=x;
this.y=y;
}
3200
punto2 = 1024
3600
punto1 = 1000
5124
punto3 = 1000
}
Punto punto1=new Punto(0.0,0.0);
Punto punto2=new Punto(5.0,12.0);
Punto punto3=punto1;
1000
(0.0,0.0)
1024
(5.0,12.0)
this.x=x;
this.y=y;
}
3200
punto2 = 1024
3600
punto1 = 1000
5124
punto3 = 1000
}
Punto punto1=new Punto(0.0,0.0);
Punto punto2=new Punto(5.0,12.0);
Punto punto3=punto1;
punto1
(0.0,0.0)
punto2
punto3
(5.0,12.0)
Referencias
En Java no esta permitido la suma de
referencias, incrementar referencias, etc.
Los nicos operadores permitidos para
manipular los tipos referencia (con la nica
excepcin de la clase String) son las
asignaciones va signo de igual (=) y las
comparaciones de igualdad (==, !=).
punto1
punto2
(0.0,0.0)
punto3
punto1
(5.0,12.0)
punto2
(0.0,0.0)
antes
despus
punto3=punto2
punto3 == punto2 s
punto3 != punto2 no
//Declaracin sin referencia
Punto punto4; punto4=null;
punto4 == null s
punto4 != null no
punto3
(5.0,12.0)
Operador punto
clase Punto {
private double x;
public double y;
public Punto(double x,double y) {
this.x=x;
this.y=y;
}
public double getX() { return x; }
public double getY() { return y; }
}
Declaracin de Objetos
La forma de declarar un objeto es emplear
la palabra reservada new.
new se utiliza para construir un nuevo
objeto:
Punto punto1=new Punto(5.0,2.0);
punto1.getX();
Cadenas de caracteres
Clase String
Clase String
Las cadenas de caracteres se manejan en
Java con la clase String.
Un excepcin curiosa en Java es que el
operador + esta sobre cargado en esta clase.
Por ejemplo:
String cadena=a, cadena2=b;
cadena3 = cadena+cadena2; //cadena3=ab)
cadena3+=c; //cadena3=abc
Clase String
Por lo dems se comporta como un tipo no
primitivo.
String cadena=a,
memoria
a
cadena
Clase String
Qu podemos hacer con las cadenas?
Crearlas:
String c1=a;
String c2=new String(b);
Concatenarlas:
String c3=c1+c2;
Compararlas:
c1.equals(c2) false
c1.equals(c1) true
Convertirlas:
Integer.parseInt(cadena); //pasa cadena a entero
Double.valueOf(cadena).doubleValue(); //pasa cadena a double
Vectores
[ ] ; [ ][ ]
Vectores
Un vector es un artefacto que poseen los lenguajes
de programacin para almacenar una coleccin de
entidades del mismo tipo.
En Java los vectores se comportan igual a un
objeto.
A cada entidad del vector se accede mediante el
operador de indexacin de vectores [ ].
Decimos que el operador [ ] indexa el vector en el
sentido de que especifica qu objeto debe ser
accedido.
Vectores
Declaracin:
int [ ] vector1 = new int [100];
int [ ] vector2 = { 1, 2, 3 };
Asignacin:
vector1[0]=1; vector[1]=2; vector1[2]=3;
El ndice va desde i=0 hasta i=n-1, siendo n la
longitud del vector a la que puede accederse
mediante vector1.length (por ejemplo)
Vectores
int[ ]vector=new int[5];
int nVector=vector1.length;
for ( int i=0 ; i < nVector ; i++ ) {
vector[i]=i;
System.out.println(vector[i]);
}
Salida: 0, 1, 2, 3, 4
Vectores Multidimensionales
En algunas ocasiones es necesario acceder a
un vector a travs de varios ndices.
Un ejemplo tpico son las matrices.
Una matriz es un vector donde el acceso se
realiza por ms de un ndice.
int [ ] [ ] matriz = new int [ 2 ] [ 3 ];
}
Salida: este aquel
Bibliografa
Lesson: Language Basics en
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/index.html