Sie sind auf Seite 1von 8

Qu es un PUNTERO?

Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la direccin de memoria de otra variable. No hay que confundir una direccin de memoria con el contenido de esa direccin de memoria. int x = 25; Direccin 1502 1504 1506 1508

...

...

25

...

...

...

...

La direccin de la variable x (&x) es 1502 El contenido de la variable x es 25

Definicin de un Puntero
Un puntero es un tipo de dato que se usa para almacenar direcciones. Un puntero es una variable que contiene la direccin de otra variable. Tambin podramos decir que un puntero es una variable que representa la posicin (ms que el valor) de otro dato, tal como una variable o un elemento de un array. Cuando una variable puntero es definida, el nombre de la variable debe ir precedido de un asterisco (*). Este identifica que la variable es un puntero. Por tanto, una declaracin de puntero puede ser escrita en trminos generales como:

NOTA IMPORTANTE: Es importante que los punteros siempre apunten a variables del mismo tipo. Si se mezclan los tipos, los resultados son errneos. Tambin es importante inicializar los punteros antes de utilizarlos. Si no se inicializan, es decir, si no apuntan a algn sitio vlido, se pueden alterar otras zonas de memoria, ya se a del propio programa .

Los punteros se pueden comparar entre ellos y se pueden asignar direcciones de memoria. Adems, se pueden decrementar o incrementar. El incremento o el decremento vara segn el tipo de dato al que apunten. A los punteros tambin se les puede sumar o restar nmeros enteros. NO SE PUEDE REALIZAR NINGUNA OTRA OPERACIN ARITMTICA CON LOS PUNTEROS.

Los Puntero en JAVA


Hay un par de ideas sobre java muy extendidas: java no tiene punteros y en java todo se pasa por referencia. La realidad, es que java se entiende mucho mejor si lo pensamos exactamente al revs. En java slo hay punteros (con excepcin de los tipos primitivos) y en java todo se pasa por valor (por copia).

Por ejemplo, en C++ hacemos esto MiClase a; y ya est todo correcto. La variable a est perfectamente inicializada. Si en java hacemos eso, tenemos una variable a sin inicializar. Es necesario hacerle un new, exactamente igual que un puntero en C++ MiClase a = new MiClase(); // Esto en Java MiClase *a = new MiClase(); // Esto en C++ // o este otro tipo de inicializacin extraamente parecida ... MiClase a = null; // en java MiClase *a=NULL; // en C++ La nica diferencia es la notacin con el asterisco. Si pensamos que en java TODO son punteros, no es necesario poner el asterisco para distinguir lo que es puntero de lo que no lo es, por lo que simplemente lo han quitado.

Los Puntero this

En el cuerpo de mtodo se puede referir al objeto actual, desde donde fue llamado el mtodo, utilizando el this. En Java, slo se puede usar this dentro del cuerpo de la definicin de un mtodo de instancia, nunca en el cuerpo de un mtodo de clase.

public class Circulo { static int numCirculos = 0; public static final double PI=3.14159265358979323846; public double x, y, r; public Circulo(double x, double y, double r) { this.x = x; this.y = y; this.r = r; numCirculos++; } public Circulo(double r) { this(0.0, 0.0, r); } public Circulo(Circulo c) { this(c.x, c.y, c.r); } public Circulo() { this(0.0, 0.0, 1.0); } public double Perimetro() {return 2.0 * PI * r;} public double Area() {return PI * r * r;} }

Das könnte Ihnen auch gefallen