lunes, 18 de agosto de 2008
Excepciones - Bloque finally
Si se usa return en un bloque try y en un bloque finally se solicita una instrucción, el bloque finally se ejecuta primero y después el return.
POO Uso de referencias
La llamada a changePerson () pasa el objeto Persona como referencia, por lo que el name se ajusta a "GHI". Sin embargo, a continuación, una referencia a un nuevo objeto Persona que se crea con el valor del atributo name "JKL" se ha asignado a p. De ahí la posterior setName () define el atributo name con "MNO" sólo para nuevo objeto Persona y no el objeto original p que todavía se refiere al método principal (que define el atributo name con "GHI").
public class Example1 {
public static void main(String [] args) {
Person p = new Person("ABC");
p.setName("DEF");
changePerson(p);
System.out.println(p.getName());
}
public static void changePerson(Person p) {
p.setName("GHI");
p = new Person("JKL");
p.setName("MNO");
System.out.println(p.getName());
}
}
class Person {
String name;
Person(String name) {
this.name = name;
}
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
}
public class Example1 {
public static void main(String [] args) {
Person p = new Person("ABC");
p.setName("DEF");
changePerson(p);
System.out.println(p.getName());
}
public static void changePerson(Person p) {
p.setName("GHI");
p = new Person("JKL");
p.setName("MNO");
System.out.println(p.getName());
}
}
class Person {
String name;
Person(String name) {
this.name = name;
}
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
}
Excepciones - Bloque finally
Si se pone el return en un bloque try y en un bloque finally se solicita una instrucción, el bloque finally se ejecuta primero y después el return:
public class Animal {
private static String name = "nameless";
public Animal(String nm) {
name = nm;
}
public static void setName(String name) {
Animal.name = name;
}
public String getName() {
try {
return name;
} catch (Exception e) {
return name;
}finally{
System.out.println("Si alcanzo el finally");
}
}
public static void main(String[] args) {
Animal fido = new Animal("Fido");
Animal garfield = new Animal("Garfield");
System.out.println(fido.getName());
}
}
Salida:
Si alcanzo el finally
Garfield
public class Animal {
private static String name = "nameless";
public Animal(String nm) {
name = nm;
}
public static void setName(String name) {
Animal.name = name;
}
public String getName() {
try {
return name;
} catch (Exception e) {
return name;
}finally{
System.out.println("Si alcanzo el finally");
}
}
public static void main(String[] args) {
Animal fido = new Animal("Fido");
Animal garfield = new Animal("Garfield");
System.out.println(fido.getName());
}
}
Salida:
Si alcanzo el finally
Garfield
POO - Variables estaticas y Constructores
Una variable local estática, está compartida por cualquier cantidad de instancias. Si esta se inicializa en el constructor, todas las instancias subsecuentes tendrán el mismo valor.
public class Animal {
public static String name = "Nameless";
public Animal(String iName) {
name = iName;
}
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
Animal fido = new Animal("Fido");
Animal garfield = new Animal("Garfield");
System.out.println(fido.getName() + " and " + garfield.getName());
}
}
Salida: Garfield and Garfield
public class Animal {
public static String name = "Nameless";
public Animal(String iName) {
name = iName;
}
public String getName() {
return name;
}
}
public class Main {
public static void main(String[] args) {
Animal fido = new Animal("Fido");
Animal garfield = new Animal("Garfield");
System.out.println(fido.getName() + " and " + garfield.getName());
}
}
Salida: Garfield and Garfield
Suscribirse a:
Entradas (Atom)