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.
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:
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.
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.
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.
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.
* 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
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;
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.
* 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:
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.
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.
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.
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.
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