MODULO I
Formas de main
//arreglo
definido, correcto
public
static void main(String []a){
System.out.println("Perro
Ladrando");
}
En los métodos
//arreglo definido, correcto
public static void main(String ... a){
System.out.println("Perro Ladrando");
}
//arreglo definido, correcto
public static void main(String a []){
System.out.println("Perro Ladrando");
}
//arreglo definido, correcto
public static void main(String a []){
System.out.println("Perro Ladrando");
}
//Error de compilación
public static void main(String a ...){
System.out.println("Perro Ladrando");
}
//Error de compilación
public static void main(String.*a){
System.out.println("Perro Ladrando");
}
En los métodos
//Arreglos de muchos valores (Elementos variables, no se
cuanto son)
public
static void main(String...a){
System.out.println("Perro
Ladrando");
}
//Correcto
public
static void a(String[]...a){ //Arreglo de dos dimensiones
System.out.println("Perro
Ladrando");
}
//Correcto
public static void a(String[][] ...a){ //Arreglo de tres dimensiones [0][1]0[]
System.out.println("Perro Ladrando");
}
//Error de compilación
public
static void a(String[] a ...){
System.out.println("Perro
Ladrando");
}
//Error de compilación
public static void a(String a ...){
System.out.println("Perro Ladrando");
}
//Correcto
public static void a(String ... a ){ // Define un arreglo.
System.out.println("Perro Ladrando");
}
//Incorrecto
public static void a(String ... ... a ){ //No se puede definir de esa forma
System.out.println("Perro Ladrando");
}
//Incorrecto
public static void a(String [][]a ){ //incorrecto, no representa el método main
System.out.println("Perro Ladrando");
}
//Incorrecto
public static void a(String [] ... a ){ // incorrecto, no representa el método main
System.out.println("Perro Ladrando");
}
Problema:
Given:
11. class Mud {
12. // insert code here
13. System.out.println("hi");
14. }
15. }
And the following five fragments:
public static void main(String...a) { //1
public static void main(String.* a) { //2
public static void main(String... a) { //3
public static void main(String[]... a) { //4
public static void main(String...[] a) { //5
How many of the code fragments, inserted independently at line 12, compile?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 5
Answer: D
Porque la primera es correcta porque define un arreglo de String y por lo tanto la 3 también es correcta y la 4 también compila por lo tanto es la tercera aunque está última tiene un error de ejecución, compila porque es correcta la definición de un arreglo doble.
Maquina virtual
Convirte .java a .class
La maquina virtual NO garantiza que cuando hay un objeto nulo ejecute el recolector de basura, se le puede sugerir (clase System.gc() y en clase Object) pero no se puede obligar.
La maquina virtual y el SO decide cuando pasa (iunterrupción, llamar a un Hilo para que valla)
Elimina Objetos nulos. Cuando ya fue utilizado y ya no esta referenciado
public static void main(String []a){
Perro p = new Perro();
Perro p1 = new Perro();
Perro p2 = new Perro();
-- output --
144
Se imprime la posición cero de todos los arreglos que se le pase.
} //Recolector de Basura
Objetos candidatos para el recolector de basura
public static void main(String.*a){
// System.out.println("Perro Ladrando");
Perro p0 = new Perro(); //Es Variable (tiene tipo de dato), Objeto (Existe clase),
//Instancia se crea uno nuevo
Perro p1 = new Perro();
Perro p2 = new Perro();
Perro p4 = p0;
p0 = p2;
p2=null;
//cuando voy aqui
}
}
R.- 0. Los objetos se utilzan.
Objetos candidatos en memoria
public static void main(String.*a){
// System.out.println("Perro Ladrando");
Perro p0 = new Perro(); //Es Variable (tiene tipo de dato), Objeto (Existe clase),
//Instancia se crea uno nuevo
Perro p1 = new Perro();
Perro p2 = new Perro();
Perro p4 = p0;
p0 = p2;
p2=null;
} //cuando voy aqui (ya paso)
}
R.- Todos porque ya termino el método y no hay forma de accesarlos
EJERCICIOS DEL RECOLECTOR DE BASURA
Alcanzable -> llega pero todavía no pasa.
Rebazada -> ya se ejecuto esa linea
Long -> Clase
long -> Primitiva
Errorres de compilación y Ejecución
4 Archivos...
La firma significa que todo esta como debe estar, elementos correctos (sintactica)
Compilar con la opcion -d
La opción -d de índica en que directorio guardar el .class de la clase a compilar
Desktop > javac -d
TIP_ tener en cuenta en que directorio estas, donde estan los .java y dónde quieren poner los .class, verificar que existen esos directorios .
Para si estan en diferentes carpetas y te piden compilar un archivo.java pero que el archivo.class se ponga en otro lado, entonces debemos salirnos de los dos y acceder a los otros.
Desktop/UAEMFI/Perro.java
Desktop/MisClass
Desktop> javac -d MisClass UAEMFI/Perro.java
Compila Perro.java que esta en Desktop/UAEMFI/Perro.java y los .class los pone en Desktop/MisClass/Perro.class
Todas las sentencias en java terminana en punto y coma (;).
METODOS QUE PERMITEN sugerir a la JVM que ejecute el recolector de basura
De la clase Object - > finalice
De la clase System -> gc()
QUESTION NO: 1
Given:
3. class Animal { void makeNoise(){} }
4. class Horse extends Animal {
5. Long weight = 1200L;
6. public void makeNoise() { System.out.println("whinny"); }
7. }
8. public class Icelandic extends Horse {
9. public void makeNoise() { System.out.println("vinny"); }
10. public static void main(String[] args) {
11. Icelandic i1 = new Icelandic();
12. Icelandic i2 = new Icelandic();
12. Icelandic i3 = new Icelandic();
13. i3 = i1; i1 = i2; i2 = null; i3 = i1;
14. }
15. }
When line 14 is reached, how many objects are eligible for the garbage collector?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
R.- E
Por que cada uno de las instancias tiene un objeto Long y ese tiene un objeto 1200L, por lo tanto cada uno de los objetos que se pierden i3 e i1 tenian dentro 2, por lo tanto no son alcanzables
3. class Animal { void makeNoise(){} }
4. class Horse extends Animal {
5. Long weight = 1200L;
6. public void makeNoise() { System.out.println("whinny"); }
7. }
8. public class Icelandic extends Horse {
9. public void makeNoise() { System.out.println("vinny"); }
10. public static void main(String[] args) {
11. Icelandic i1 = new Icelandic();
12. Icelandic i2 = new Icelandic();
12. Icelandic i3 = new Icelandic();
13. i3 = i1; i1 = i2; i2 = null; i3 = i1;
14. }
15. }
When line 14 is reached, how many objects are eligible for the garbage collector?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
R.- E
Por que cada uno de las instancias tiene un objeto Long y ese tiene un objeto 1200L, por lo tanto cada uno de los objetos que se pierden i3 e i1 tenian dentro 2, por lo tanto no son alcanzables
Alcanzable -> llega pero todavía no pasa.
Rebazada -> ya se ejecuto esa linea
Long -> Clase
long -> Primitiva
Errorres de compilación y Ejecución
4 Archivos...
La firma significa que todo esta como debe estar, elementos correctos (sintactica)
Compilar con la opcion -d
La opción -d de índica en que directorio guardar el .class de la clase a compilar
Desktop > javac -d
TIP_ tener en cuenta en que directorio estas, donde estan los .java y dónde quieren poner los .class, verificar que existen esos directorios .
Para si estan en diferentes carpetas y te piden compilar un archivo.java pero que el archivo.class se ponga en otro lado, entonces debemos salirnos de los dos y acceder a los otros.
Desktop/UAEMFI/Perro.java
Desktop/MisClass
Desktop> javac -d MisClass UAEMFI/Perro.java
Compila Perro.java que esta en Desktop/UAEMFI/Perro.java y los .class los pone en Desktop/MisClass/Perro.class
Todas las sentencias en java terminana en punto y coma (;).
METODOS QUE PERMITEN sugerir a la JVM que ejecute el recolector de basura
De la clase Object - > finalice
De la clase System -> gc()
Ejemplo de métodos con argumentos variables
public class BN{
public static void main(String[] args) {
int [] x = {1,2,3};
int [] y = {4,5,6};
int [] w = {4,5,6};
new BN().go(x, y, w);
}
void go(int [] ... z){
for (int[] a : z) {
System.out.print(""+a[0]);
}
}
}
public class BN{
public static void main(String[] args) {
int [] x = {1,2,3};
int [] y = {4,5,6};
int [] w = {4,5,6};
new BN().go(x, y, w);
}
void go(int [] ... z){
for (int[] a : z) {
System.out.print(""+a[0]);
}
}
}
-- output --
144
Se imprime la posición cero de todos los arreglos que se le pase.
No hay comentarios:
Publicar un comentario