Está en la página 1de 23

Una variable es un espacio de la memoria del ordenador a la que asignamos un contenido que puede ser un

valor numrico (slo nmeros, con su valor de clculo) o alfanumrico (slo texto o texto con nmeros). Cada
variable tiene un nico nombre el cual no puede ser cambiado. Dos o ms variables pueden tener el mismo
contenido, pero no el mismo nombre. El nombre de una variable comenzar siempre por una letra, pudiendo
contener a continuacin tanto letras como nmeros.




Las letras pueden ser tanto maysculas como minsculas. No se admiten nombres de variables incluyendo
espacios en blanco ni smbolos especiales como guiones, puntos, comas, comillas, etc. ni smbolos
matemticos ni palabras clave (que veremos ms adelante, y que incluyen inicio, fin, verdadero,
falso, entonces...). El nombre de una variable ser lo suficientemente largo como para impedir que
pueda confundirse con otra variable por tener nombre similar, as como para aportar una indicacin de cul es
el contenido o funcin que cumple.

Una variable significa el espacio reservado en la memoria que tiene la capacidad de
cambiar de contenido mientras se desarrolla la ejecucin de algn software. La misma
corresponde un rea que ha sido previamente reservada en el disco duro de
cualquier computadora. Las variables pueden ser de longitud fija cuando la misma no
tendr variacin en cuanto a su tamao. Caso contrario es variable ya que mientras
se ejecuta el programa su longitud puede cambiar.
Las operaciones realizadas sobre cualquier variable as como el manejo de sus
valores propios se determinan por la clase de datos que se usen.

Tipos de variables
Aunque todas las variables de JavaScript se crean de la misma forma (mediante la
palabra reservadavar), la forma en la que se les asigna un valor depende del tipo
de valor que se quiere almacenar (nmerwwos, textos, etc.)
3.2.1. Numricas
Se utilizan para almacenar valores numricos enteros (llamados integer en ingls)
o decimales (llamados float en ingls). En este caso, el valor se asigna indicando
directamente el nmero entero o decimal. Los nmeros decimales utilizan el
carcter . (punto) en vez de , (coma) para separar la parte entera y la parte
decimal:
var iva = 16; // variable tipo entero
var total = 234.65; // variable tipo decimal
3.2.2. Cadenas de texto
Se utilizan para almacenar caracteres, palabras y/o frases de texto. Para asignar
el valor a la variable, se encierra el valor entre comillas dobles o simples, para
delimitar su comienzo y su final:
var mensaje = "Bienvenido a nuestro sitio web";
var nombreProducto = 'Producto ABC';
var letraSeleccionada = 'c';
En ocasiones, el texto que se almacena en las variables no es tan sencillo. Si por
ejemplo el propio texto contiene comillas simples o dobles, la estrategia que se
sigue es la de encerrar el texto con las comillas (simples o dobles) que no utilice el
texto:22
/* El contenido de texto1 tiene comillas simples, por lo que
se encierra con comillas dobles */
var texto1 = "Una frase con 'comillas simples' dentro";

/* El contenido de texto2 tiene comillas dobles, por lo que
se encierra con comillas simples */
var texto2 = 'Una frase con "comillas dobles" dentro';
No obstante, a veces las cadenas de texto contienen tanto comillas simples como
dobles. Adems, existen otros caracteres que son difciles de incluir en una
variable de texto (tabulador, ENTER, etc.) Para resolver estos problemas, JavaScript
define un mecanismo para incluir de forma sencilla caracteres especiales y
problemticos dentro de una cadena de texto.
El mecanismo consiste en sustituir el carcter problemtico por una combinacin
simple de caracteres. A continuacin se muestra la tabla de conversin que se
debe utilizar:
Si se quiere incluir... Se debe incluir...
Una nueva lnea \n
Un tabulador \t
Una comilla simple \'
Una comilla doble \"
Una barra inclinada \\
De esta forma, el ejemplo anterior que contena comillas simples y dobles dentro
del texto se puede rehacer de la siguiente forma:
var texto1 = 'Una frase con \'comillas simples\' dentro';

var texto2 = "Una frase con \"comillas dobles\" dentro";
Este mecanismo de JavaScript se denomina "mecanismo de escape" de los
caracteres problemticos, y es habitual referirse a que los caracteres han
sido "escapados".
Ejercicio 2
Modificar el primer script del captulo anterior para que:
1. El mensaje que se muestra al usuario se almacene en una variable
llamada mensaje y el funcionamiento del script sea el mismo.
2. El mensaje mostrado sea el de la siguiente imagen:

Figura 3.1 Nuevo mensaje que debe mostrar el script
Ver solucin
3.2.3. Arrays
En ocasiones, a los arrays se les llama vectores, matrices e incluso arreglos. No
obstante, el trmino array es el ms utilizado y es una palabra comnmente
aceptada en el entorno de la programacin.
Un array es una coleccin de variables, que pueden ser todas del mismo tipo o
cada una de un tipo diferente. Su utilidad se comprende mejor con un ejemplo
sencillo: si una aplicacin necesita manejar los das de la semana, se podran
crear siete variables de tipo texto:
var dia1 = "Lunes";
var dia2 = "Martes";
...
var dia7 = "Domingo";
Aunque el cdigo anterior no es incorrecto, s que es poco eficiente y complica en
exceso la programacin. Si en vez de los das de la semana se tuviera que
guardar el nombre de los meses del ao, el nombre de todos los pases del mundo
o las mediciones diarias de temperatura de los ltimos 100 aos, se tendran que
crear decenas o cientos de variables.
En este tipo de casos, se pueden agrupar todas las variables relacionadas en una
coleccin de variables o array. El ejemplo anterior se puede rehacer de la
siguiente forma:
var dias = ["Lunes", "Martes", "Mircoles", "Jueves", "Viernes", "Sbado", "
Domingo"];
Ahora, una nica variable llamada dias almacena todos los valores relacionados
entre s, en este caso los das de la semana. Para definir un array, se utilizan los
caracteres [ y ] para delimitar su comienzo y su final y se utiliza el
carcter , (coma) para separar sus elementos:
var nombre_array = [valor1, valor2, ..., valorN];
Una vez definido un array, es muy sencillo acceder a cada uno de sus elementos.
Cada elemento se accede indicando su posicin dentro del array. La nica
complicacin, que es responsable de muchos errores cuando se empieza a
programar, es que las posiciones de los elementos empiezan a contarse en el 0 y
no en el 1:
var diaSeleccionado = dias[0]; // diaSeleccionado = "Lunes"
var otroDia = dias[5]; // otroDia = "Sbado"
En el ejemplo anterior, la primera instruccin quiere obtener el primer elemento del
array. Para ello, se indica el nombre del array y entre corchetes la posicin del
elemento dentro del array. Como se ha comentado, las posiciones se empiezan a
contar en el 0, por lo que el primer elemento ocupa la posicin0 y se accede a el
mediante dias[0].
El valor dias[5] hace referencia al elemento que ocupa la sexta posicin dentro
del array dias. Como las posiciones empiezan a contarse en 0, la posicin 5 hace
referencia al sexto elemento, en este caso, el valor Sbado.
Ejercicio 3
Crear un array llamado meses y que almacene el nombre de los doce meses del
ao. Mostrar por pantalla los doce nombres utilizando la funcin alert().
Ver solucin
3.2.4. Booleanos
Las variables de tipo boolean o booleano tambin se conocen con el nombre de
variables de tipo lgico. Aunque para entender realmente su utilidad se debe
estudiar la programacin avanzada con JavaScript del siguiente captulo, su
funcionamiento bsico es muy sencillo.
Una variable de tipo boolean almacena un tipo especial de valor que solamente
puede tomar dos valores: true (verdadero) o false (falso). No se puede utilizar
para almacenar nmeros y tampoco permite guardar cadenas de texto.
Los nicos valores que pueden almacenar estas variables son true y false, por lo
que no pueden utilizarse los valores verdadero y falso. A continuacin se muestra
un par de variables de tipo booleano:
var clienteRegistrado = false;
var ivaIncluido = true;


2-Tipos y alcance de variables. Casting.
Estructuras de programacin. Clases
envoltorio
Concepto de variable
Una variable es un contenedor de bits que representan a un valor. Se emplean
para almacenar datos que pueden cambiar durante la ejecucin de un programa. En funcin
de los datos que almacenan se clasifican en:
Variables primitivas: almacenan datos numricos, valores lgicos o caracteres.
Variables referenciadas: asociadas a objetos o instancias de una clase. Por
ejemplo, para almacenar cadenas de caracteres se emplear una variable
referenciada asociada a la clase String, para almacenar informacin sobre la fecha
actual, otra asociada a la clase Date, etc. Se estudiarn ms adelante.
Adems de estos dos tipos de variables se estudiarn los arrays de variables primitivas y de
variables referenciadas. Un array, como se ver en el tema correspondiente, es una variable
referenciada asociada a la clase Object (clase madre de todos los objetos Java).
Se va a profundizar un poco ms en el concepto de variable: como se ha comentado
anteriormente, no es nada ms que un contenedor de bits que representan a un valor. Ocurre lo
siguiente:
En el caso de variables primitivas, los bits representan un nmero entero
que coincide con el valor de la variable, con lo que se va a trabajar a lo largo
del programa. Por ejemplo, se tienen variables de tipo byte (utilizan 8 bits en
memoria) que pueden almacenar nmeros enteros comprendidos entre -128 y
127, de tipo int (utilizan 32 bits en memoria) para almacenar enteros entre,
aproximadamente, -2150 millones y 2150 millones, de tipo float para nmeros
decimales, etc.

En el caso de variables referenciadas o asociadas a objetos, los bits
representan un numerajo que permite acceder al valor de la variable, es
decir, al objeto, pero no es el valor u objeto en s.

Todos los nombres empleados para hacer referencia a variables deben cumplir lo siguiente:
Su primer carcter debe ser una letra, el smbolo del subrayado o el carcter dlar
$.
No son vlidos las palabras reservadas de Java.
No se admiten espacios en blanco.
Son case-sensitive (sensibles a maysculas).
Aparte de estas normas conviene que los nombres de las variables indiquen qu dato almacenan
con el fin de facilitar la lectura del programa y, por otra parte, si un nombre tiene ms de dos
palabras la primera letra de la primera palabra ir en minscula, la primera letra de la segunda
palabra en mayscula, dem con la tercera y as sucesivamente.
Ejemplo:
int miVariableEntera=100;
Variables primitivas
De tipo entero:
Son variables que almacenan nmeros enteros. Se pueden dividir en los siguientes tipos:

NOTA: el tipo de variable en que se almacena por defecto un numero entero es int. El valor por
defecto asociado a cualquier variable entera no inicializada es 0.

De tipo real o de coma flotante:
Son variables que almacenan datos numricos con decimales. Se pueden dividir en los
siguientes tipos:

NOTA: el tipo de variable en que se almacena por defecto un numero decimal es double. El valor
por defecto asociado a cualquier variable real no inicializada es 0.0.

De tipo lgico o booleanas:
Son variables que almacenan dos posibles valores: true o false. No se corresponden con
ningn valor numrico.
Ejemplo:
boolean tienesCalor=true;
NOTA: el valor por defecto asociado a cualquier variable booleana no inicializada es false.

De tipo char o de carcter:
Son variables que almacenan caracteres individuales (letra, numero, signo ?, etc...). El
carcter que se inicializa debe ir entre apstrofes o comillas simples 'a'.
El cdigo de caracteres empleado por Java es Unicode y recoge los caracteres de
prcticamente todos los idiomas importantes del mundo (son unos 65.536). Los caracteres
Unicode del alfabeto occidental corresponden a los primeros 256 enteros; es decir van desde
[0, 255].
A cada carcter le corresponde unvocamente un nmero entero perteneciente al intervalo [0,
65536] o a [0, 255] si se trabaja slo con el alfabeto occidental. Por ejemplo, la letra es el
entero 164. Ms adelante se ver que el casting entre variables primitivas enteras y la variable
char est permitido.
Ejemplo:
char miCaracter='n';
char miCaracter1=110; (dem antes, pero mediante el entero que le corresponde segn
Unicode)
char miCaracter2='\u006E'; (dem antes, pero segn notacin Unicode. La notacin Unicode, en
general, es as: \uXXXX siendo X un dgito o cifra fundamental del sistema de numeracin
hexadecimal (0,1,2,...,9,A,B,...,F))
Asociado a este tipo de variable se tienen las secuencias de escape. Se emplean para
representar caracteres especiales (por ejemplo, unas comillas dentro de una instruccin que
exige una cadena entrecomillada) y caracteres no imprimibles como el tabulador, salto de lnea,
etc. Van precedidos de la contrabarra. Algunos de ellos se detallan en la tabla siguiente:

NOTA: el valor por defecto asociado a cualquier variable char no inicializada es '\u0000'
Ejemplo: todos los cdigos de este tema se guardarn en c:\cursojava\tema2

Cdigo fuente
Por consola:
Comienza programa

El valor de tengoCalor es true
El valor de letra es n
El valor de letra1 es n
El valor de letra2 es n
Eso es
un mensaje
de tres lineas
Me llamo "Jesus"
Me llamo \Jesus\
Variables referenciadas
Asociadas a objetos o instancias de una clase. Se irn estudiando durante el curso.
Casting o transformaciones de tipo
El casting es un procedimiento para transformar una variable primitiva de un tipo a otro, o
transformar un objeto de una clase a otra clase siempre y cuando haya una relacin de
herencia entre ambas (este ltimo casting es el ms importante y se ver ms adelante).
Dentro del casting de variables primitivas se distinguen dos clases:
Implcito: no se necesita escribir cdigo para que se lleve a cabo. Ocurre cuando
se realiza una conversin ancha (widening casting), es decir, cuando se coloca un
valor pequeo en un contenedor grande.
Ejemplo 1:

Ejemplo 2: similar al anterior.

En cambio,

Explcito: s es necesario escribir cdigo. Ocurre cuando se realiza una
conversin estrecha (narrowing casting), es decir, cuando se coloca un valor
grande en un contenedor pequeo. Son susceptibles de prdida de datos.
Ejemplo 1:

NOTA: si se sustituyera la primera lnea int num1=100 por int num1=1000000, el cdigo compilara bien, pero habra
prdida de datos, pues el 1000000 se sale del rango de short [-32768, 32767]. Al mostrar por consola el valor se
obtendra un resultado incongruente.
Ejemplo 2:

Ejemplo 3: continuacin del Ejemplo 2 del casting implcito
Para que la lnea

compile debe hacerse un casting explcito a long

pero no

porque, en la lnea anterior, 10000000000 es considerado int, mientras que en las de arriba,
double.
Dicho esto, se va a analizar un ejemplo un tanto extrao.
Ejemplo extrao:

Dado que cualquier entero, por defecto, se almacena en un int (4 bytes), con la lnea anterior se
pretende colocar un valor grande (el int 10) en un contenedor pequeo (una primitiva de tipo byte
con capacidad para 1 byte). Esto, segn lo expuesto anteriormente, precisa de casting explcito.

Pero, resulta que no hace falta, ya que el compilador, cuando se trabaja con enteros, digamos
que, provoca un "casting implcito contranatura" y transforma automticamente a byte el int 10.
Ocurrira lo mismo si se trabajara con short y char.
Lo que pasa (y esto es lo que resulta un tanto extrao) es que no ocurre lo anterior con los
decimales: por eso, una lnea como

provoca error de compilacin. Recordar que cualquier decimal, por defecto, se almacena en un
double (8 bytes) y que un tipo float tiene capacidad para 4 bytes. En los decimales, el compilador
no fuerza el casting implcito contranatura. De ah que sea necesario un casting explcito a float
para evitar el fallo de compilacin.
NOTA: quiz se evitaran estas situaciones, si el compilador no forzara el casting implcito
contranatura a byte, short o char de un int y provocara error de compilacin, del mismo modo que
cuando se declara un float y no se castea explcitamente. Pero, de momento, esto es lo que hay.
Cdigo de partida para explicar el casting entre variables primitivas que almacenan datos
numricos:

Las lneas 3 y 4 almacenan al nmero 10 mediante una variable primitiva de tipo byte va "casting
implcito contranatura", el 3000 mediante una de tipo short, tambin va "casting implcito
contranatura". Lo ms intuitivo es definirlas mediante un casting explcito, pero tal y como estn
tambin se puede.
Supuestamente, la lnea 5, almacena el 3000000000 mediante una variable de tipo long, va
casting implcito, pero es falso. Ocurre lo que se ha comentado en el Ejemplo 2 del casting
implcito: 3000000000 no es considerado como long sino como int y 3000 millones no pertenece
al rango asociado a int (aprox. [-2150 millones, 2150 millones]). Si se intenta compilar, se
producira error.
Supuestamente, la lnea 6, almacena el 256.5 mediante una variable de tipo float (ocupa 4 bytes
en memoria), va "casting implcito contranatura", pero, como se ha comentado en el Ejemplo
extrao, es falso, ya que en decimales nunca se produce. Debe castearse explcitamente a float.
El cdigo correcto sera:

Cdigo fuente

Una cuestin a tener en cuenta relacionada con el casting entre variables
primitivas es la siguiente:
En Java se realizan automticamente conversiones de una variable primitiva de un tipo a otra de
otro de igual o mayor precisin.
La precisin depende del nmero de bytes ocupados en memoria y del rango de valores
asociado: a mayor nmero de bytes ocupados, mayor precisin y mayor rango asociado. As,
pasar de byte a short, de short a int, de byte a int, . es automtico; en definitiva: pasar de una
variable primitiva de un tipo de la cadena de la siguiente lnea a otra que se encuentre a su
derecha es automtico.
byte-->short-->int-->long-->float-->double
As, por ejemplo, si un mtodo necesita un long como argumento y se le pasa un entero
perteneciente al rango de int, promociona automticamente a long y no es necesario
casting.
En cambio, si se le pasa un entero que se sale fuera del rango de int, es necesario realizar
un casting para que la llamada al mtodo no provoque error al compilar.
Un ejemplo de esto ocurre con el mtodo esttico de java.lang.Thread "void sleep(long retardo)"
que introduce un retardo en la ejecucin del cdigo, coincidente con el entero, en milisegundos,
que se le pasa al argumento. Este mtodo se estudiar ms adelante.

Por consola:
Hola
-- Despus de tres segundos --
Adios
En cambio, si se sustituye
Thread.sleep(3000) por Thread.sleep(3000000000)
no compila ya que el entero que se le pasa no pertenece al rango de int y no puede promocionar
a long automticamente.
Para que compile es necesario hacer un casting explcito:
Thread.sleep(3000000000L)

Para finalizar con el casting entre primitivas, conviene tener en cuenta lo
siguiente:
No es posible realizar casting entre una variable primitiva booleana y cualquier
otra variable primitiva.
S es posible realizar casting entre una variable primitiva char y una variable
primitiva que almacene enteros.
Ejemplo:




Variables y Tipos
Una variable en Java es un identificador que representa una palabra de memoria
que contiene informacin. El tipo de informacin almacenado en una variable
slo puede ser del tipo con que se declar esa variable.
Una variable se declara usando la misma sintaxis de C. Por ejemplo la siguiente
tabla indica una declaracin, el nombre de la variable introducida y el tipo de
informacin que almacena la variable:
Declaracin identificador tipo
int i; I entero
String s; s referencia a string
int a[]; a referencia a arreglo de enteros
int[] b; b referencia a arreglo de enteros
Java posee dos grandes categoras de tipos para las variables:
Tipos Primitivos referencias a Objetos
int, short, byte, long Strings
char, boolean Arreglos
float, double otros objetos
Las variables de tipos primitivos almacenan directamente un valor que siempre
pertenece al rango de ese tipo. Por ejemplo una variable int almacena un valor
entero como 1, 2, 0, -1, etc.
Esto significa que al asignar una variable entera a otra variable entera, se copia el
valor de la primera en el espacio que ocupa la segunda variable.
Las variables de tipo referencia a objetos en cambio almacenan direcciones y no
valores directamente. Una referencia a un objeto es la direccin de un rea en
memoria destinada a representar ese objeto. El rea de memoria se solicita con el
operador new.
Al asignar una variable de tipo referencia a objeto a otra variable se asigna la
direccin y no el objeto referenciado por esa direccin. Esto significa que ambas
variables quedan refenciando el mismo objeto.
La diferencia entre ambas asignaciones se observa en la siguiente figura:

Esto tiene implicancias mayores ya que si se modifica el objeto referenciado por
r, entonces tambin se modifica el objeto referenciado por s, puesto que son el
mismo objeto.
En Java una variable no puede almacenar directamente un objeto, como ocurre
en C y C++.
Por lo tanto cuando se dice en Java que una variable es un string, lo que se quiere
decir en realidad es que la variable es una referencia a un string.

Tipos primitivos
En la siguiente tabla se indica para cada tipo primitivo el nmero de bits que se
emplea en su representacin y el rango de valores que se puede almacenar en las
variables de estos tipos.
Tipo Bits Rango Ejemplos
int 32 -2**31 .. 2**31-1 0, 1, 5, -120, ...
short 16 -2**15 .. 2**15-1 0, 1, 5, -120, ...
byte 8 -2**7 .. 2**7-1 0, 1, 5, -120, ...
long 64 -2**63 .. 2**63-1 0, 1, 5, -120, ...
boolean 1 n/a false, true
char 16 n/a 'a', 'A', '0', '*', ...
float 32 IEEE 1.2
double 64 IEEE 1.2
Se dice que un tipo A es de mayor rango que un tipo B si A es un superconjunto
de B. Esto quiere decir que las variales de tipo B siempre se pueden asignar a
variables de tipo A (eventualmente con prdida de significancia).
Por ejemplo int es de mayor rango que short, que a su vez es de mayor rango que
byte. Float y double son de mayor rango que int. Double es de mayor rango que
float.
Esto se puede resumir en:
double > float > long > int > short > byte

Expresiones
En Java cada expresin tiene un tipo que se determina durante la compilacin, es
decir es independiente del valor durante la ejecucin. Una expresin puede ser:
Una constante: 1, 1.0, true, etc.
El tipo de esta expresin es el tipo de la constante. En el ejemplo los tipos
son int, double y boolean respectivamente.
Una variable: i, s, a
El tipo de esta expresin es el tipo con que se declar aquella variable. En
el ejemplo los tipos son entero, referencia a string y referencia a arreglo.
El resultado de una operacin: i+1, a[1], etc.
El tipo se determina en funcin de los tipos de las expresiones que se
indican como argumentos de la operacin.
Java tiene prcticamente los mismos operadores de C y C++. Cada operador
acepta una, dos o tres expresiones de diversos tipos. A veces un operador no
est definido para argumentos de ciertos tipos. Por ejemplo la resta entre
strings no esta definida. Pero la suma de strings esta definida como la
concatenacin. A continuacin veremos los operadores ms frecuentes en Java.
Operadores binarios entre expresiones numricas
Smbolo Operacin
+ Suma
- Resta
* Multiplicacin
/ Divisin
% Resto
Los operandos y el resultado de estos operadores pueden ser:
Dominio Rango
int*int int
long*long long
float*float float
double*double double
Al operar con byte y short, estos se convierten implcitamente a int.
Cuando los tipos de los operandos no coinciden, el operando de menor
rango se convierte implcitamente al tipo de mayor rango. El resultado de
la operacin es del tipo de mayor rango.
Ejemplos:

int a=1, b=2;
int c= a + b;

short s= 1;
int d= s + c; // s se convierte a int

float f= 1.0 + a; // a se convierte a float

Operadores unarios sobre expresiones numricas
Smbolo Operacin Argumento
+ exp nada int | long | float | double
- exp cambio de signo int | long | float | double
El resultado de estas operaciones es siempre del mismo tipo del operando.
Si el operando es byte o short entonces se convierte a int, se realiza la operacin
y el resultado es un int.
Operadores sobre variables enteras
Smbolo Operacin Argumento
++ var preincremento int | short | byte | long
-- var predecremento int | short | byte | long
var ++ postincremento int | short | byte | long
var -- postdecremento int | short | byte | long
El resultado de estas operaciones es siempre del mismo tipo del operando.
Ejemplos:

int a=1, b=2;
int c= +a;
int d= -(c+1);

b= a++; // b= 1, a=2
a= --b; // a=b= 0

(a+1)++; // error a+1 no es una variable
float f= a;
f++; // error f no es entero

Operadores binarios relacionales
Smbolo Operacin
> mayor
< menor
>= mayor igual
<= menor igual
== igual
!= distinto
Los operandos y el resultado de estos operadores pueden ser:
Dominio Rango
int*int boolean
long*long boolean
float*float boolean
double*double boolean

Operadores entre valores booleanos
Operacin Significado
exp && exp y-lgico
exp || exp o-lgico
! exp negacin
Los operandos y el resultado de estos operadores son siempre booleanos.
Los operadores && y || evalan la expresin del lado derecho slo si es
necesario.
Ejemplos:

int a=1, b=2;

boolean v= ! a<=b && a==5 || b!=4;
boolean w= ((! a<=b) && a==5) || b!=4;

boolean w2= a<=b && a; // error a no es boolean

Conversiones: cast
Java realiza conversiones implcitas de menor a mayor rango.
Eventualmente hay prdida de significacia al convertir enteros a punto
flotante.
Todas las conversiones de mayor a menor rango deben ser explcitas por
medio del operador de cast:
(tipo)expresin
Ejemplos:

int i= 1;
short s= 2;
int j= i+s;

s= a; // error short < int
s= (short)a; // Ok

i= 1.0; // error int < double
i= (int)1.0; // Ok

f= 1.0; // error float < double
f= (float)1.0; // Ok
f= 1.0f; // Ok

boolean v=(boolean)a; // error no existe conversin

Precedencia de Operadores

. () []
unarios: - + (cast)
* / %
+ -
< > <= >= == !=
!
||
&&

Variables
def: Una variable es un nombre asociado a un elemento de datos que est
situado en posiciones contiguas de la memoria principal, y su valor puede
cambiar durante la ejecucin de un programa.
Toda variable pertenece a un tipo de dato concreto. En la declaracin de una
variable se debe indicar el tipo al que pertenece. As tendremos variables enteras,
reales, booleanas, etc. Por otro lado, distinguimos tres partes fundamentales en la
vida de una variable:
Declaracin
Iniciacin
Utilizacin
Declaracin de variables
Esta es la primera fase en la vida de cualquier variable. La declaracin se realiza
en la seccin que comienza con la palabra var. Si quieres ms informacin,
puedes ir al apartado que trata sobre la declaracin de variablesen el
tema Estructura de un programa.
Nota: Toda variable que vaya a ser utilizada en Pascal tiene que ser
previamente declarada.
Iniciacin de variables
Esto no es ms que darle un valor inicial a una variable. As como lo primero que
se hace con una variable es declararla, lo siguiente tiene que ser iniciarla. Esto se
hace para evitar posibles errores en tiempo de ejecucin, pues una variable tiene
un valor indeterminado despus de declararla. Principalmente, existen dos
maneras de otorgar valores iniciales a variables:
Mediante una sentencia de asignacin
Mediante uno de los procedimientos de entrada de datos (read o readln)
Veamos un ejemplo que rene los dos casos:
Begin
...
i:=1;
readln(n);
while i < n do begin
(* cuerpo del bucle *)
i := i + 1
end;
...
end.


Utilizacin de variables
Una vez declarada e iniciada una variable, es el momento de utilizarla. Esta es la
parte que presenta un mayor abanico de posibilidades. A continuacin tienes unas
cuantas:
Incrementar su valor:
i := i + 1
Controlar un bucle:
for i:=1 to 10 do ...
Chequear una condicin:
if i<10 then ...
Participar en una expresin:
n := (Max - Min) div i
Y otras que ya irs descubriendo