viernes, 29 de mayo de 2015

Conversion entre Datos de java

String a int

La manera de poder convertir una cadena de caracteres "String" en un tipo de dato "int" es la siguiente:


/*
   * Convertir una cadena de caracteres "String" en un entero "int"
   */
  String num = "100";
  int numero = Integer.parseInt(num);
  JOptionPane.showMessageDialog(null, "Se convirtio correctamente: "+numero);

Puede que muchas veces se intente convertir una cadena de caracteres que no necesariamente represente un número, esto nos genera un error en nuestro app. Ejemplo.:


String cadena = "Caracteres";
  /*
   * Esto genera un error porque no se puede transformar
   * "Caracteres" en un numero, por eso se ejecuta dentro de
   * un bloque try{} catch{}
   */
  try{
   int numero = Integer.parseInt(cadena);
  }
  catch(Exception e){
   JOptionPane.showMessageDialog(null, "ERROR AL CONVERTIR: "+cadena+" EN UN NUMERO");
  }

int/double a String

Para transformar un dato "int" en una cadena de caracteres y poder tratarlo como tal "String"
Ejemplo:


/*
   * Convertir int/double a String
   */
  double dou = 25.23;
  int numer = 300;
  String cad1 = String.valueOf(numer);
  String cad2 = String.valueOf(dou);
  JOptionPane.showMessageDialog(null, "Se convirtio correctamente: "+cad1+" ,"+cad2);

Estructuras de control en Java

Las estructuras de control determinan la secuencia de ejecución de las sentencias de un programa. 
Las estructuras de control se dividen en tres categorías:
          Secuencial
          Condicional o Selectiva
          Iterativa o Repetitiva.


1.         ESTRUCTURA SECUENCIAL 

El orden en que se ejecutan por defecto las sentencias de un programa es secuencial. Esto significa que las sentencias se ejecutan en secuencia, una después de otra, en el orden en que aparecen escritas dentro del programa.
La estructura secuencial está formada por una sucesión de instrucciones que se ejecutan en orden una a continuación de la otra.
Cada una de las instrucciones están separadas por el carácter punto y coma (;).
Las instrucciones se suelen agrupar en bloques.
El bloque de sentencias se define por el carácter llave de apertura ({) para marcar el inicio del mismo, y el carácter llave de cierre (}) para marcar el final.
Ejemplo:
{
instrucción 1;
instrucción 2;
instrucción 3;
}
En Java si el bloque de sentencias está constituido por una única sentencia no es obligatorio el uso de las llaves de apertura y cierre ({ }), aunque sí recomendable.

Ejemplo de programa Java con estructura secuencial: Programa que lee dos números por teclado y los muestra por pantalla.

/* Programa que lea dos números por teclado y los muestre por pantalla.
 */
import java.util.*;
public class Main {
    public static void main(String[] args){
        //declaración de variables
        int n1, n2;
        Scanner sc = new Scanner(System.in);
        //leer el primer número
        System.out.println("Introduce un número entero: ");
        n1 = sc.nextInt();      //lee un entero por teclado
        //leer el segundo número
        System.out.println("Introduce otro número entero: ");
        n2 = sc.nextInt();      //lee un entero por teclado
       
        //mostrar resultado
        System.out.println("Ha introducido los números: " + n1 + " y " + n2);
    }

2.  ESTRUCTURA CONDICIONAL, ALTERNATIVA O SELECTIVA
La estructura condicional determina si se ejecutan unas instrucciones u otras según se cumpla o no una determinada condición.
En java la estructura condicional se implementa mediante:
-         Instrucción if.
-         Instrucción switch.
-         Operador condicional ? :

2.1 INSTRUCCION if
Puede ser del tipo:
-         Condicional simple: if
-         Condicional doble: if ... else ...
-         Condicional múltiple: if .. else if ..

La condición debe ser una expresion booleana es decir debe dar como resultado un valor booleano (true ó false).
Condicional simple: se evalúa la condición y si ésta se cumple se ejecuta una determinada acción o grupo de acciones. En caso contrario se saltan dicho grupo de acciones.
         if(expresión_booleana){
            instrucción 1
            instrucción 2
            .......
         }
Si el bloque de instrucciones tiene una sola instrucción no es necesario escribir las llaves { } aunque para evitar confusiones se recomienda escribir las llaves siempre.

Ejemplo de programa Java con estructura condicional: Programa que pide por teclado la nota obtenida por un alumno y muestra un mensaje si el alumno ha aprobado.

/*
 * Programa que pide una nota por teclado y muestra un mensaje si la nota es
 * mayor o igual que 5
 */
import java.util.*;
public class Ejemplo0If {
    public static void main( String[] args ){
        Scanner sc = new Scanner( System.in );
        System.out.print("Nota: ");
        int nota = sc.nextInt();
        if (nota >= 5 ){
            System.out.println("Enorabuena!!");
            System.out.println("Has aprobado");
        }
    }
}
Condicional doble: Se evalúa la condición y si ésta se cumple se ejecuta una determinada instrucción o grupo de instrucciones. Si no se cumple se ejecuta otra instrucción o grupo de instrucciones.

           if(expresión booleana){
              instrucciones 1
           }
           else{
                  instrucciones 2
           }
2.2 INSTRUCCION switch
Se utiliza para seleccionar una de entre múltiples alternativas.
La forma general de la instrucción switch en Java es la siguiente:
switch (expresión){
case valor 1:
instrucciones;
break;
case valor 2:
instrucciones;
break;
· · ·
default:
instrucciones;
}
La instrucción switch se puede usar con datos de tipo byte, short, char e int. También con tipos enumerados y con las clases envolventes Character, Byte, Short e Integer. A partir de Java 7 también pueden usarse datos de tipo String en un switch.
Funcionamiento de la instrucción switch:
- Primero se evalúa la expresión y salta al case cuya constante coincida con el valor de la expresión.
–  Se ejecutan las instrucciones que siguen al case seleccionado hasta que se encuentra un break o hasta el final del switch. El break produce un salto a la siguiente instrucción a continuación del switch.
–  Si ninguno de estos casos se cumple se ejecuta  el bloque default (si existe). No es obligatorio que exista un bloque default y no tiene porqué ponerse siempre al final, aunque es lo habitual.


3.  ESTRUCTURA ITERATIVA O REPETITIVA
Permiten ejecutar de forma repetida un bloque específico de instrucciones.
Las instrucciones se repiten mientras o hasta que se cumpla una determinada condición. Esta condición se conoce como condición de salida.
Tipos de estructuras repetitivas:
-               ciclo while
-               ciclo do – while
-               ciclo for
3.1 CICLO WHILE
Las instrucciones se repiten mientras la condición sea cierta. La condición se comprueba al principio del bucle por lo que las acciones se pueden ejecutar 0 ó más veces.

Clases y objetos en java
  • Un objeto en Java cumple las funciones que realiza un record en Pascal o una estructura en C. En Java las variables sólo pueden contener referencias a objetos, es decir punteros a objetos.
  • Todos los objetos se crean con new:
·         A a1= new A();
A es el tipo del objeto creado. También se dice que A es la clase del objeto o que el objeto es una instancia de la clase A. La variable a1 también es de tipo A, o análogamente a1 es de la clase A, porque a1 debe contener siempre referencias a objetos que pertenecen a la clase A.
  • Un objeto posee variables de instancia o campos que se pueden consultar o asignar. Los campos que posee un objeto se definen al momento de declarar la clase a la cual pertenece:
·         class A { int x, y; }
·         A a= new A();
·         a.x= 1;
·         a.y= 2;
·         System.out.println(a.x+" "+a.y); // 1 2
  • Un objeto también puede poseer métodos. Un método es un procedimiento cuya invocación siempre va asociada a un objeto. Los métodos se definen en la declaración de la clase:
·         class A {
·           int x, y; // variables de instancia
·           // Métodos
·           void Set(int vx, int vy) { x= vx; y= vy; }
·           void Incx() { x++; }
·           void Print() { System.out.println(x+" "+y); }
·         }
·         A a= new A();
·         a.Set(10, 20);
·         a.Print();      // 10 20
·         a.Incx();
·         a.Print(); // 11 20
·         Incx(); // error, falta indicar el objeto
·         A a2= new A();
·         a2.Set(5, 6);
·         a2.Print();     // 5 6
·         a.Print();      // 11 20
  • La definición de un método tiene las siguiente sintaxis:
·         tipo-retorno nombre-método
·                ( tipo-parámetro nombre, ... )
·         { instrucciones }
Si el procedimiento no retorna nada se coloca void. En las instrucciones las variables que se accesen que no sean parámetros o variables locales del procedimiento deben ser variables de instancia del objeto.
  • Una variable de tipo objeto es una referencia (puntero) a un objeto:
·         A a1= new A();
·         A a2= new A();
·         A a3= a2;
·         a1.Set(1,2);
·         a2.Set(5,6);
·         a3.Set(8,9);
·         a1.Print(); // 1 2
·         a2.Print(); // 8 9
·         a3.Print(); // 8 9
En este caso las variables a2 y a3 referencian el mismo objeto, mientras que a1 y a2 referencian objetos distintos.
  • Una referencia puede ser pasada como argumento y puede ser retornada por un método.
·         class A {
·           ...
·           void CopyFrom(A from) { x= from.x; y= from.y }
·           A MakeCopy()
·           {
·             A acopy= new A();
·             acopy.Set(x, y);
·             return acopy;
·           }
·         }
·          
·         A a1= new A();
·         a1.Set(1,2);
·         A a2= new A();
·         a2.CopyFrom(a1);
·         a2.IncX();
·         a2.Print(); // 2 2
·         a1.Print(); // 1 2
·         A a3=a1.MakeCopy();
·         a3.Print(); // 1 2
  • Dentro de un método, el identificador this contiene una referencia al objeto con que se invocó este método.
·         class A {
·           ...
·           void CopyTo(A to)
·           { to.CopyFrom(this); }
·         }
  • En Java no existe enlace directo entre identificador y objeto como en C o Pascal:
·         En C o C++
·           A a;   // a es el objeto
·           A *pa; // pa es una referencia al objeto
·         En Pascal
·           var a: A;  // a es el record
·               a: A^; // a es una referencia al objeto
  • Las variables se pueden inicializar con la referencia nula:
·         A a;
·         a= null;
·         a.x= 0;    // error, a es la ref. nula
  • Un objeto puede referenciar otros objetos:
·         class Eslabon {
·           Eslabon next;
·           A a;
·           void Encadenar(Eslabon anext) { next= anext; }
·         }
·         ...
·         for(Eslabon e= prim; e!=null; e= e.next)
·           e.a.Print();
  • Los arreglos y strings son objetos predefinidos.
·         String s= null;
·         s.substring(1,2); // error
·         int[] a= null;
·         a[0]=0;           // error
  • Se pueden crear arreglos de referencias a objetos. No se pueden crear arreglos de objetos.
·         A[] aArr= new A[10];
·         aArr[0].x=1; // error, aArr[0] es nulo
·         for (int i=0; i<aArr.length; i++)
·           aArr[i]= new A();
  • Ningún objeto se destruye explícitamente: No hay free ni delete
·         A a= new A();
·         a= new A();  
El objeto que se creó primero ya no es alcanzable y por lo tanto el recolector de basura recuperará el espacio que ocupa.

No hay comentarios:

Publicar un comentario