section7 scjp6.0

33
Sun Certified Java Programmer 5.0 Section 7: Fundamentals [email protected] Sun Educación

Upload: daniel-martinez

Post on 14-Jun-2015

115 views

Category:

Education


6 download

DESCRIPTION

Java

TRANSCRIPT

Page 1: Section7 scjp6.0

Sun Certified Java Programmer 5.0Section 7: Fundamentals

[email protected] Educación

Page 2: Section7 scjp6.0

Section 7: Fundamentals

Page 3: Section7 scjp6.0

3

 Section 7: Fundamentals

Given a code example and a scenario, write code that uses the appropriate access modifiers, package declarations, and import statements to interact with (through access or inheritance) the code in the example.

Given an example of a class and a command­line, determine the expected runtime behavior.

Determine the effect upon object references and primitive values when they are passed into methods that perform assignments or other modifying operations on the parameters.

SCJP: Section 7

Page 4: Section7 scjp6.0

4

 Section 7: Fundamentals (Continuación 1)

Given a code example, recognize the point at which an object becomes eligible for garbage collection, and determine what is and is not guaranteed by the garbage collection system. Recognize the behaviors of System.gc and finalization.

Write code that correctly applies the appropriate operators including assignment operators (limited to: =, +=, ­=), arithmetic operators (limited to: +, ­, *, /, %, ++, ­­), relational operators (limited to: <, <=, >, >=, ==, !=), the instanceof operator, logical operators (limited to: &, |, ^, !, &&, ||), and the conditional operator ( ? : ), to produce a desired result. Write code that determines the equality of two objects or two primitives.

SCJP: Section 7

Page 5: Section7 scjp6.0

5

 Section 7: Fundamentals (Continuación 2)

Given the fully­qualified name of a class that is deployed inside and/or outside a JAR file, construct the appropriate directory structure for that class. Given a code example and a classpath, determine whether the classpath will allow the code to compile successfully.

SCJP: Section 7

Page 6: Section7 scjp6.0

6

El método main en Java SEEl método main, en aplicaciones Java SE se apega a las siguientes reglas:

static 

Tipo de retorno void

Recibe como argumento un arreglo de Strings

Puede llevar por nombre cualquier identificador

   Ejemplo

public static void main(String []args){}

Si no se sigue alguna de las anteriores reglas, el resultado es una  excepción de tipo:

java.lang.NoSuchMethodError: main

Page 7: Section7 scjp6.0

7

Ejemplo método main Los parámetros en la línea de comandos son los valores del arreglo de  tipo String del método main

class TestMain {

public static void main (String [] args) {

       for(String s: args){

  System.out.print("/" + s) ;  }

}

}

Cuando invocamos

java TestMain Hi Guys This is a test!

El resultado es:

        /Hi/Guys/This/is/a/Test!

Page 8: Section7 scjp6.0

8

Paso por valor, es un mecanismo de programación en el cual, sólo se copia el contenido (valor) de una variable, por lo tanto si se modifica la copia, el valor original permanecerá intacto

En Java Programming Language, todos los argumentos de métodos, utilizan el paso por valor.

Incluso la referencias a objetos, son tratadas por:  paso por valor

Definición de Conceptos Básicos 

Page 9: Section7 scjp6.0

9

import java.lang.System.out.*;

public class Main{        

    public static void addValue(int a){

        a++;

    }

    public static void main(String args[]){              

         int a = 10;                 out.println("Antes de addValue(a) method");

         out.println("El valor de a = " + a);               addValue(a); 

               println("Despues de addValue(a) method");

         out.println("El valor de a = " + a);            }           

}

Ejemplo Paso por Valor

Page 10: Section7 scjp6.0

10

Resultado del Código anterior:

Antes de  addValue(a) method

El valor de a = 10

Despues de addValue(a) method

El valor de a = 10

Ejemplo Paso por Valor

Page 11: Section7 scjp6.0

11

Recolección de basuraJava Divide la Memoria RAM en 2 partes:

Heap Memory

Se almacenan Objetos/InstanciasStack Execution Memory

Se almacenan solamente las referencias

Recolector de basura

Thread en segundo plano.

Solamente  la JVM lo controla

Se elimina un Objeto del Heap, cuando no existe ninguna referencia en memoria Stack que apunte éste.

Page 12: Section7 scjp6.0

12

Ejemplo de Manejo de Memoria class Customer{

privte String firstName;

private String lastName;

public Customer(String firstName,String lastName){

this.firstName = firstName;this.lastName = lastName;

}

}

public class TestCustomer{

public static void main(String args[]){

Customer obj = new Customer(“Oriane”,”Rayal”);obj = new Customer(“Joe”,”Doe”);

}

}

Page 13: Section7 scjp6.0

13

Recolección de basura (1)

public class GarbageTruck {  public static void main(String [] args) {

     StringBuffer sb = new StringBuffer("hello");     System.out.println(sb);          // El objeto StringBuffer no es susceptible a ser recolectado.               sb = null;                // Ahora el objeto StringBuffer es susceptible a ser  recolectado   }}

Recolección de Basura por Referencia nula 

Si se iguala la variable de referencia a nulo.

Page 14: Section7 scjp6.0

14

class GarbageTruck {  public static void main(String [] args) {    StringBuffer s1 = new StringBuffer("hello");    StringBuffer s2 = new StringBuffer("goodbye");    System.out.println(s1);    // En este punto el objeto StringBuffer "hello" no es susceptible    s1 = s2; // Modificamos la referencia de s1 al objeto "goodbye"    // Ahora el objeto StringBuffer "hello" es susceptible de recolección  }}

1.2.3.4.5.6.7.8.9.10.

● Modificando la variable de referencia

Recolección de basura (2)

Page 15: Section7 scjp6.0

15

Objetos creados dentro de algún método

Cuando  finaliza  el  método,  los  objetos  creados  son eliminados

import java.util.Date;public class GarbageFactory {         public static void main(String [] args) {                Date d = getDate()                doComplicatedStuff();                System.out.println("d = " + d);         }         public static Date getDate() {                Date d2 = new Date();                String now = d2.toString();                System.out.println(now);                return d2;          }}

1.2.3.4.5.6.7.8.9.10.11.12.13.14.

Recolección de basura (3)

Page 16: Section7 scjp6.0

16

Islas de memoria

Los  objetos  tienen  referencias  entre  si,  pero  que  ya  no existe una referencia externa (stack) a ellos.

public class Island {  Island i;   public static void main(String [] args) {     Island i2 = new Island();

 Island i3 = new Island();      Island i4 = new Island();        i2.i = i3; // i2 refers to i3

      i3.i = i4; // i3 refers to i4       i4.i = i2; // i4 refers to i2        i2 = null;      i3 = null;      i4 = null;       }}

Recolección de basura (4)

Page 17: Section7 scjp6.0

17

Método finalize()Método definido en la clase Object

Invocado automáticamente por la JVM, cuando el Objeto es candidato a remover a través del gc

Generalmente se sobre escribe en las clases de usuario, para indicar los recursos a liberar previamente a la destrucción del objeto

Page 18: Section7 scjp6.0

18

Operadores en Java

Operadores de comparación.

Siempre regresa un valor boolean.Existen 4 operadores para comparaciones numéricas (<, >, <=, >=).En caso de comparación de caracteres, evalúa el valor del código ASCII

Page 19: Section7 scjp6.0

19

Operadores en JavaInstanceof

Útil  para  verificar  de  que  clase  fue  creado  algún objeto,  de  que  clase  hereda  ó  que  clases implementa.

class A { }class B extends A { }....public static void main (String [] args) {         B b = new B();        if (b instanceof A) {           System.out.print("b is an A");        }}

Page 20: Section7 scjp6.0

20

Operadores en Java

Operadores de igualdad.

Solo hay dos: Igual (==) y no igualdad (!=).

Se utilizan para comparaciones de números, valores boolean y referencias a objetos.

Comparaciones entre objetos siempre resultara false.

Page 21: Section7 scjp6.0

21

Operadores en Java

Operadores aritméticos.

Estos son +, ­, *, /, %

División o modulo de un entero entre cero causara ArithmeticException.

División o modulo de un número de punto flotante entre cero no causara ArithmeticException.

Page 22: Section7 scjp6.0

22

Operadores en Java

Operadores de concatenación.

Se utiliza el símbolo ‘+’

Si se usan objetos Strings todo se concatena, 

Si se usan tipos primitivos el símbolo ‘+’ se usara como símbolo aritmético

Page 23: Section7 scjp6.0

23

Operadores en Java

Incrementos y decrementos.

class MathTest {  static int players = 0;  public static void main (String [] args) {      System.out.println("players online: " + players++);      System.out.println("The value of players is " +                         

                                                                     players);          System.out.println("The value of players is now " +                 

                                                                 ++players);  }

}

Page 24: Section7 scjp6.0

24

Operadores en Java

Operadores de desplazamiento.

Existen tres operadores <<, >>, >>>.

Las operaciones realizadas son en sistema binario.

En los corrimientos se rellenan los espacios con ceros exceptuando cuando se tiene signo negativo.

Page 25: Section7 scjp6.0

25

Operadores en JavaOperadores a nivel de bit.

Estos son &, |, ^.

Trabajan a nivel de bit.

Complemento a nivel de bit. (~)

class Bitwise {     public static void main(String [] args) {         int x = 5;         System.out.println("x is initially " + x);         x = ~x;         System.out.println("~x is equal to " + x);    }}

Page 26: Section7 scjp6.0

26

Operador condicional.

Es un operador ternarioSu estructura es:

Valor = (expresión booleana)? Valor 1:Valor 2Val 1 se asigna cuando el resultado es trueVal 2 se asigna cuando el resultado es false

class Salary {    public static void main(String [] args) {        int numOfPets = 3;        String status = (numOfPets<4)?"Pet limit not exceeded":"too many pets";        System.out.println("This pet status is " + status);    }}

Page 27: Section7 scjp6.0

27

Método equals()El operador == de igualdad, compara referencias, pero NO el contenido de un objeto

Para comparar el contenido de un objeto se utiliza el método equals

Método equals es definido en la clase Object

public boolean equals(Object obj)

Ejemplo de equals()

Page 28: Section7 scjp6.0

28

Método equals()

Para comparación de valores numéricos o de valores de referencia ocupamos ==.

Para comparar el contenido de objetos como tal, ocupamos el método equals().

Page 29: Section7 scjp6.0

29

Método equals()

Double d1 = new Double("3.0");Integer i1 = new Integer(3);

if ( d1.equals(i1) ) {     System.out.println("wraps are equal");}

Double d2 = d1.valueOf("3.0d"); 

if (d1.equals(d2) ) {     System.out.println("Doubles are equal"); }

123456789101112

Page 30: Section7 scjp6.0

30

Operadores lógicos

Operadores lógicos inteligentes

&& no evalúa al segundo operando si el primero es false.

|| no evalúa al segundo operando si el primero es true.

class Logical {      public static void main(String [] args) {

     boolean b = true && false;            System.out.println("boolean b = " + b);      }}

Page 31: Section7 scjp6.0

31

Operadores lógicos

Operadores lógicos no inteligentes

|, & evalúan ambos operandos por eso resulta ineficiente en expresiones lógicas.

Son ocupadas para operaciones a nivel de bit.

Page 32: Section7 scjp6.0

32

Archivos JARDefinición Java Archive Resource , JAR

Archivos que comprimen un conjunto de clases y paquetes Java.

Generalmente se utilizan para generar  archivos “ejecutables” de una aplicación Java

Se crean con el comando:

«Java_HOME»/bin/jarPueden contener un archivo de Manifiesto el cual describe cual es la clase  a ejecutar (main)

Page 33: Section7 scjp6.0

33

Fin de Sección 7:                  Fundamentals

● Notas