Entrada destacada

Ventajas y desventajas de .net , java y c++

.net VENTAJAS: * Posee una curva de aprendizaje muy rápida. * Integra el diseño e implementación de formularios de Windows. ...

miércoles, 3 de junio de 2015

Estructura de lenguaje en java

Comentarios



Java ofrece tres tipos de comentarios: dos para comentarios regulares en el código fuente y uno para la documentación especial del sistema javadoc.
  • Comentarios de varias líneas.
Los comentarios de varias líneas se incluyen entre los símbolos /* y */, como en C y C++.
/*
Este es un ejemplo de
un comentario de varias
líneas.
*/
  • Comentarios de una sola línea.
Para comentariar una sola línea se utiliza la doble diagonal //. El comentario se inicia cuando se encuentra la doble diagonal y continua hasta el final de la línea.
// Este es un comentario de una sola linea
                               //Este es otro comentario
  • Comentarios para documentación.
Realmente este tipo de comentario es el mismo que el de varias líneas con la diferencia de que la información que contenga será usada para un procesamiento especial que lleva a cabo la herramienta javadoc.

Se distingue del comentario de varias líneas porque se agrega un asterisco adicional al inicio del comentario.
/**
Este tipo de comentarios
los utiliza la
herramienta javadoc
*/
Identificadores

Un identificador es una secuencia de caracteres comenzando por una letra y conteniendo letras y números. Los identificadores no se limitan a los caracteres ASCII, si el editor de texto lo soporta, se pueden escribir identificadores utilizando caracteres Unicode.

Las letras Java incluyen los caracteres ASCII A-Z y a-z. Los digitos Java incluyen los digitos ASCII 0-9. Para propósitos de construir identificadores, los caracteres ASCII $ y _ son también considerados letras Java.

No hay un límite en lo concerniente al número de caracteres que pueden tener los identificadores.

Estos son algunos ejemplos de identificadores válidos:
_varx      $var1      MAX_NUM     var2                 
    
Palabras clave

La siguiente tabla muestra las palabras claves de Java, éstas son reservadas y no pueden ser utilizadas como identificadores.
abstract
default
if
private
this
boolean
do
implements
protected
throw
break
double
import
public
throws
byte
else
instanceof
return
transient
case
extends
int
short
try
catch
final
interface
static
void
char
finally
long
strictfp**
volatile
class
float
native
super
while
const*
for
new
switch

continue
goto*
package
synchronized


* Son palabras claves de Java que no son usadas actualmente.
** Palabra clave agregada en Java 2

true, false, and null no son palabras claves pero son palabras reservadas, así que tampoco pueden ser utilizadas como identificadores.
Literales

Una literal es un valor constante formado por una secuencia de caracteres. Cualquier declaración en Java que defina un valor constante -un valor que no pueda ser cambiado durante la ejecución del programa- es una literal.

Son ejemplos de literales los números, los caracteres y las cadenas de caracteres.
  • Literales numéricas
    Se pueden crear literales numéricas a partir de cualquier tipo de dato primitivo.
  • Ej.
  • 123                        //literal int
  • 123.456                               //literal double
  • 123L                      //literal long
  • 123.456F             //literal float
  • Literales booleanas
    Las literales boolenas consisten de las palabras reservadas true y false.
  • Literales de caracteres
    Las literales de caracteres se expresan por un solo caracter entre comillas sencillas
Ej.           'a',          '%',         '7'
  • Literales de cadena
    Una cadena es una combinación de caracteres. Las cadenas en Java son instancias de la clase String, por ello cuentan con métodos que permiten combinar, probar y modificar cadenas con facilidad.
    Las literales de cadena se representan por una secuencia de caracteres entre comillas dobles.
Ej.   "hola",   "cadena123",   "12345"
Expresiones y Operadores.
 
  • Expresión
Una expresión es una combinación de variables, operadores y llamadas de métodos construida de acuerdo a la sintaxis del lenguaje que devuelve un valor.

El tipo de dato del valor regresado por una expresión depende de los elementos usados en la expresión.
  • Operadores
Los operadores son símbolos especiales que por lo común se utilizan en expresiones.
La tabla siguiente muestra los distintos tipos de operadores que utiliza Java.
Operador
Significado
Ejemplo
Operadores aritméticos

+
Suma
a + b
-
Resta
a - b
*
Multiplicación
a * b
/
División
a / b
%
Módulo
a % b
Operadores de asignación

=
Asignación
a = b
+=
Suma y asignación
a += b (a=a + b)
-=
Resta y asignación
a -= b (a=a - b)
*=
Multiplicación y asignación
a *= b (a=a * b)
/=
División y asignación
a / b (a=a / b)
%=
Módulo y asignación
a % b (a=a % b)
Operadores relacionales

==
Igualdad
a == b
!=
Distinto
a != b
Menor que
a < b
>
Mayor que
a > b
<=
Menor o igual que
a <= b
>=
Mayor o igual que
a >= b
Operadores especiales

++
Incremento
a++ (postincremento)
++a   (preincremento)
--
Decremento
a-- (postdecremento)
--a  (predecremento)
(tipo)expr
Cast
a = (int) b
+
Concatenación de cadenas
a = "cad1" + "cad2"
.
Acceso a variables y métodos
a = obj.var1
( )
Agrupación de expresiones
a = (a + b) * c

Bloques y sentencias 
 
  • Sentencia

    Una instrucción o sentencia representa la tarea más sencilla que se puede realizar en un programa.
  • Sentencias de expresión
Los siguientes tipos de expresiones pueden ser hechas dentro de una sentencia terminando la expresión con punto y coma (;):

* Expresiones de asignación
* Cualquier uso de los operadores ++ y --
* Llamada de métodos
* Expresiones de creación de objetos

Esta clase de sentencias son llamadas sentencias de expresión.
Ej.

valorA = 8933.234;           // asignación
valorA++;                    // incremento
System.out.println(valorA);  // llamada a un método
Integer objInt = new Integer(4); // creación de objetos
  • Sentencias de declaración de variables
Las sentencias de declaración de variables se utilizan para declarar variables.
Ej.

int  bValue;
double  aValue = 8933.234; 
String varCad;
  • Sentencias de control de flujo
Las sentencias de control de flujo determinan el orden en el cual serán ejecutadas otro grupo de sentencias. Las sentencias if y for son ejemplos de sentencias de control de flujo.
  • Bloque de sentencias
Un bloque es un grupo de cero o más sentencias encerradas entre llaves ( { y } ). Se puede poner un bloque de sentencias en cualquier lugar en donde se pueda poner una sentencia individual.
Las sentencias de control de flujo se pueden utilizar para ejecutar sentencias condicionalmente, para ejecutar de manera repetida un bloque de sentencias y en general para cambiar la secuencia normal de un programa.
  • La sentencia if

    La sentencia if permite llevar a cabo la ejecución condicional de sentencias.
  • if ( Expresion ){
  •    sentencias;
  • }
Se ejecutan las sentencias si al evaluar la expresión se obtiene un valor booleano true.
if ( Expresion ){
   sentenciasA;
}
else{
   sentenciasB;
}
Si al evaluar la expresión se obtiene un valor booleano true se ejecutarán las sentenciasA, en caso contrario se ejecutarán las sentenciasB.
La sentencia switch
Cuando se requiere comparar una variable con una serie de valores diferentes, puede utilizarse la sentencia switch, en la que se indican los posibles valores que puede tomar la variable y las sentencias que se tienen que ejecutar sí es que la variable coincide con alguno de dichos valores.
switch( variable ){
                case valor1:
                               sentencias;
                break;
                case valor2:
                               sentencias;
                break;

                               ...
                              
                case valorN:
                               sentencias;
                break;  
                default:
                               sentencias;
}
Cada case ejecutará las sentencias correspondientes, con base en el valor de la variable, que deberá de evaluarse con valores de tipo byte, char, short o int.

Si el valor de la variable no coincide con ningún valor, entonces se ejecutan las sentencias por default, sí es que las hay.

La sentencia break al final de cada case transfiere el control al final de la sentencia switch; de esta manera, cada vez que se ejecuta un case todos los enunciados case restantes son ignorados y termina la operación del switch
  • El ciclo for
El ciclo for repite una sentencia, o un bloque de sentencias, mientras una condición se cumpla. Se utiliza la mayoría de las veces cuando se desea repetir una sentencia un determinado número de veces.

La forma general de la sentencia for es la siguiente;
for(inicialización;condición;incremento){
   sentencias;
}
* En su forma más simple, la inicialización es una sentencia de asignación que se utiliza para establecer una variable que controle el ciclo.

* La condición es una expresión que comprueba la variable que controla el ciclo y determinar cuando salir del ciclo.

* El incremento define la manera en como cambia la variable que controla el ciclo.

Los ciclos while y do-while, al igual que los ciclos for repiten la ejecución de un bloque de sentencias mientras se cumpla una condición específica.
  • La sentencia while

    El formato de la sentencia while es la siguiente:
  • while (condición){
  •    sentencias;
  • }
La condición es una condición booleana, que mientras tenga el valor true permite que se ejecuten las sentencias correspondientes.
  • La sentencia do-while
Al contrario de los ciclos for y while que comprueban una condición en lo alto del ciclo, el ciclo do-while la examina en la parte más baja del mismo. Esta característica provoca que un ciclo do-while siempre se ejecute por lo menos una vez.

El formato de la sentencia do-while es el siguiente:
do{
   sentencias;
}while (condición);
  break
La sentencia break tiene dos usos. El primer uso es terminar un case en la sentencia switch. El segundo es forzar la terminación inmediata de un ciclo, saltando la prueba condicional normal del ciclo.
  continue
La sentencia continue es similar a la sentencia break. Sin embargo, en vez de forzar la terminación del ciclo, continue forza la siguiente iteración y salta cualquier código entre medias.
  return
Se utiliza la sentencia return para provocar la salida del método actual; es decir, return provocará que el programa vuelva al código que llamó al método.

La sentencia return puede regresar o no un valor. Para devolver un valor, se pone el valor después de la palabra clave return.
   return valor;
El tipo de dato del valor regresado debe ser el mismo que el que se especifica en la declaración del método.

Cuando un método es declarado void, el método no regresa ningún valor.
Sobrecarga de métodos y de constructores

La firma de un método es la combinación del tipo de dato que regresa, su nombre y su lista de argumentos.

La sobrecarga de métodos es la creación de varios métodos con el mismo nombre pero con diferentes firmas y definiciones. Java utiliza el número y tipo de argumentos para seleccionar cuál definición de método ejecutar.

Java diferencia los métodos sobrecargados con base en el número y tipo de argumentos que tiene el método y no por el tipo que devuelve.

Tambien existe la sobrecarga de constructores: Cuando en una clase existen constructores múltiples, se dice que hay sobrecarga de constructores.

Ejemplo

/* Métodos sobrecargados */
int calculaSuma(int x, int y, int z){
    ...
}
int calculaSuma(double x, double y, double z){
    ...
}

/* Error: estos métodos no están sobrecargados */
int calculaSuma(int x, int y, int z){
     ...
}
double calculaSuma(int x, int y, int z){
    ...
}

Ejemplo

/* Usuario4.java */

class Usuario4
{
     String nombre;
     int edad;
     String direccion;

     /* El constructor de la clase Usuario4 esta sobrecargado */
     Usuario4( )
     {
        nombre = null;
        edad = 0;
        direccion = null;
     }

     Usuario4(String nombre, int edad, String direccion)
     {
        this.nombre = nombre;
        this.edad = edad;
        this.direccion = direccion;
     }

     Usuario4(Usuario4 usr)
     {
        nombre = usr.getNombre();
        edad = usr.getEdad();
        direccion = usr.getDireccion();
     }

     void setNombre(String n)
     {
        nombre = n;
     }

     String getNombre()
     {
        return nombre;
     }

     /* El metodo setEdad() está sobrecargado */
     void setEdad(int e)
     {
        edad = e;
     }

     void setEdad(float e)
     {
        edad = (int)e;
     }

     int getEdad()
     {
        return edad;
     }

     void setDireccion(String d)
     {
        direccion = d;
     }

     String getDireccion()
     {
        return direccion;
     }
}

Ejemplo

/* ProgUsuario4.java */

class ProgUsuario4
{
   void imprimeUsuario(Usuario4 usr)
   {
     //   usr.nombre equivale en este caso a usr.getNombre()
     System.out.println("\nNombre: " + usr.nombre );
     System.out.println("Edad: " + usr.getEdad() );
     System.out.println("Direccion: " + usr.getDireccion() +"\n");
   }

   public static void main(String args[])
   {
      ProgUsuario4 prog = new ProgUsuario4( );
      /* Se declaran dos objetos de la clase Usuario4 */
      Usuario4 usr1,usr2;

      /* Se utiliza el constructor por omisión */
      usr1 = new Usuario4( );
      prog.imprimeUsuario(usr1);

     /* Se utiliza el segundo constructor de Usuario4 */
      usr2 = new Usuario4("Eduardo",24,"Mi direccion");
      prog.imprimeUsuario(usr2);

     /* Se utiliza el tercer constructor de Usuario4 */
      usr1 = new Usuario4(usr2);

      usr1.setEdad(50);
      usr2.setEdad(30.45f);

      prog.imprimeUsuario(usr1);
      prog.imprimeUsuario(usr2);
   }
}


Sobreescritura de métodos

Una subclase hereda todos los métodos de su superclase que son accesibles a dicha subclase a menos que la subclase sobreescriba los métodos.

Una subclase sobreescribe un método de su superclase cuando define un método con las mismas características ( nombre, número y tipo de argumentos) que el método de la superclase.

Las subclases emplean la sobreescritura de métodos la mayoría de las veces para agregar o modificar la funcionalidad del método heredado de la clase padre.
Ejemplo

class ClaseA
{
   void miMetodo(int var1, int var2)
   { ... }

   String miOtroMetodo( )
   { ... }
}

class ClaseB extends ClaseA
{
   /* Estos métodos sobreescriben a los métodos
   de la clase padre */

   void miMetodo (int var1 ,int var2)
   { ... }

   String miOtroMetodo( )
   { ... }
}






No hay comentarios.:

Publicar un comentario