Section7 scjp6.0

Preview:

DESCRIPTION

Java

Citation preview

Sun Certified Java Programmer 5.0Section 7: Fundamentals

manuel.contreras@sun.comSun Educación

Section 7: Fundamentals

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

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

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

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

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!

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 

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

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

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.

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”);

}

}

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.

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)

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)

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)

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

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

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");        }}

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.

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.

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

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);  }

}

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.

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);    }}

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);    }}

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()

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().

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

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);      }}

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.

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)

33

Fin de Sección 7:                  Fundamentals

● Notas

Recommended