Está en la página 1de 135

Libreras de Java

LSCA Alma Delia Otero Escobar

Existen diferentes libreras en Java, entre las cuales se encuentran:


java.lang
Coleccin de tipos bsicos siempre importados a cualquier unidad de
compilacin. Aqu estn las declaraciones de objetos, clases, threads,
excepciones, wrappers de los tipos de datos primitivos y otras clases
fundamentales.
java.io
Archivos de stream y acceso aleatorio. Librera estndar de entrada y
salida.

java.net
Librera que apoya interfaces con telnet y URLs.
java.util
Clases como diccionarios, tabla de hash, stack, tcnicas de
codificacin y decodificacin, hora, fecha, etctera.
java.awt
Abstract Windowing Toolkit que proporciona una capa abstracta que
permite llevar una aplicacin en Java de un sistema de ventanas a
otro. Contiene clases para componentes bsicos de la interfaz,
tales como eventos, colores, tipos de letra, botones, campos de
texto, etc.

Identificadores

Los identificadores nombran variables,


funciones, clases y objetos; cualquier
cosa que el programador necesite
identificar o usar.
En Java, un identificador comienza con
una letra, un subrayado (_) o un smbolo
de dlar ($).

Los siguientes caracteres pueden ser letras o dgitos.


Se distinguen las maysculas de las minsculas y no
hay longitud mxima.
Seran identificadores vlidos:

y su uso sera, por ejemplo:

identificador
nombre_usuario
Nombre_Usuario
_variable_del_sistema
$transaccion

int contador_principal;
char _lista_de_ficheros;
float $cantidad_en_Ptas;

Literales

Un valor constante en Java se crea


utilizando una representacin literal de l.
Ejemplo:

100
98.6
X
<<Esto

es una prueba>>

Comentarios

En java existen tres tipos de comentarios:


De

mltiples lneas /* */
De una lnea //
De documentacin /** */

Separadores

( ) Lista de parmetros, precedencia


{ } Inicializacin de matrices, bloques
[ ] Tipos de matrices y referencias
;
Separa sentencias
,
separa o bien encadena sentencias
.
Separa nombres de paquetes y
subpaquetes, variables y mtodos

Palabras clave

Las siguientes son las palabras clave que


estn definidas en Java y que no se
pueden utilizar como identificadores:

abstract

continue

for

new

switch

boolean

default

goto

null

synchroniz
ed

break

do

if

package

this

byte

double

implements

private

threadsafe

byvalue

else

import

protected

throw

case

extends

instanceof

public

transient

catch

false

int

return

true

char

final

interface

short

try

class

finally

long

static

void

const

float

native

super

while

Palabras
Reservadas

Adems, el lenguaje se reserva unas


cuantas palabras ms, pero que hasta
ahora no tienen un cometido especfico.
Son:

cast

future

generic

inner

operator

outer

rest

var

Literales

Un valor constante en Java se crea


utilizando una representacin literal de l.
Java utiliza cinco tipos de elementos:
enteros, reales en coma flotante,
booleanos, caracteres y cadenas, que se
pueden poner en cualquier lugar del cdigo
fuente de Java.

Cada uno de estos literales tiene un tipo


correspondiente asociado con l.

Enteros
Tipo

Porejemplo

byte

8 bits
complemento a
dos

short

16 bits
complemento a
dos

int

32 bits
complemento a
dos

long

64 bits
complemento a
dos

21 077 0xDC00

Realesencomaflotante:
Tipo

Porejemplo

float

32 bits IEEE
754

double

64 bits IEEE
754

3.18 2e12
3.1E12

Booleanos:

true
false

Caracteres:
Por ejemplo:
a \t \u???? [????] es un nmero unicode

Cadenas:
Porejemplo:
"Esto es una cadena"

Tipos de datos,
variables y matrices

Sintaxis

Declaracin de una variable:


tiponombre_variable;
byteb,c;

Ejemplos:
int a, b, c;
int d = 3, e, f = 5;
byte z = 22;
double pi = 3.14159;
char X = x;

Inicializacin dinmica

Se hace utilizando expresiones validas en


el instante en el que la variable es
declarada.

Tipos simples

Enteros
byte,

short, int y long

Nmeros en coma flotante


float
double

Caracteres
Char

Booleano
boolean

Enteros:

Byte
Tamao 8-bits.
Valores entre -128 y 127.

Enteros:

short
Tamao 16-bits.
Entre -32,768 y 32,767.

Enteros:

int
Tamao 32-bits.
Entre -2,147,483,648 y 2,147,483,647.

Enteros:

long
Tamao 64-bits.
Entre -9,223,372,036,854,775,808 y
9,223,372,036,854,775,807.

Ejercicio

//calcula la distancia que recorre la luz.


utiliza variables long

class Luz{
public static void main(String args[]){
int velocidadluz;
long dias;
long segundos;
long distancia;

//velocidad aproximada de la luz en kilometros por segundo = 30000;


velocidadluz = 300000;
dias = 1000; //especifica el nmero de dias
segundos = dias * 24 * 60 * 60; //convierte a segundos
distancia = velocidadluz * segundos; // calcula la distancia
System.out.print("En " + dias);
System.out.print("dias la luz recorrera cerca de");
System.out.println(distancia + "kilometros");
}
}

Nmeros en coma flotante:

float
Tamao 32-bits
Con un rango de 3.4e-038 a 3.4e+038

Nmeros en coma flotante:

double
Tamao 64-bits.
Con un rango de 1.7e-308 a 1.7e+308

Ejercicio

//Calcula el rea de un circulo

class Area{
public static void main(String args[]){
double pi, r, a;
r = 10.8; //radio del circulo
pi = 3.1416; //pi, aproximadamente
a = pi * r * r; //calcula el area
System.out.println("El area del circulo es " + a);
}
}

Caracteres:

char
Tamao 16-bits.
Unicode. Desde '\u0000' a '\uffff' inclusive.
Esto es desde 0 a 65535

Ejercicio

//Muestra la utilizacin de variables de tipo


char

class CharDemo{
public static void main(String args[]){
char ch1, ch2;
ch1 = 88; //codigo de X
ch2 = 'Y';
System.out.print("ch1 y ch2: ");
System.out.println(ch1 + " " + ch2);
}
}

Ejercicio

//las variables char se comportan como


enteros

class CharDemo2{
public static void main(String args[]){
char ch1;
ch1 = 'X';
System.out.println("ch1 contiene " + ch1);
ch1++; //incrementa ch1
System.out.println("ch1 es ahora " + ch1);
}
}

Booleano:

Boolean
Puede contener los valores true o false.

Ejercicio
Usa ya operadores de comparacin
Expresiones condicionales como:

If
For

//Muestra la utilizacin de variables


booleanas

class BoolTest{
public static void main(String args[]){
boolean b;
b = false;
System.out.println("b es " +b);
b = true;
System.out.println("b es " +b);
//un valor boleano puede controlar la sentencia if
if(b)
System.out.println("Esta sentencia si se ejecuta.");
b = false;
if(b)
System.out.println("Esta sentencia no se ejecuta.");
//el resultado de un operador relacional es un valor boleano
System.out.println("10 > 9 es " + (10>9));
}
}

Inicializacin dinmica

Java permite que las variables sean


inicializadas dinmicamente utilizando
expresiones vlidas en el instante en el
que la variable es requerida.

Ejercicio

//Ejemplo de inicializacin dinmica

class DynInit{
public static void main(String args[]){
double a = 3.0, b = 4.0;
//inicializa dinmicamente la variable c
double c = Math.sqrt(a * a + b * b);
System.out.println("La hipotenusa es " + c);
}
}

mbito y tiempo de vida de las


variables
main()
mtodos
pblicas
privadas

Ejercicio

//Ejemplo del mbito de un bloque

class Scope{
public static void main(String args[]){
int x; //visible por todo el cdigo main
x = 10;
if(x==10){//comienza un nuevo mbito
int y = 20; //visible slo en este bloque
//x e y son visibles aqui
System.out.println("x e y: " + x + " " + y );
x = y * 2;
}
//y = 100; //Error! y no es visible aqu
//x todava es visible aqu
System.out.println("x es " + x);
}
}

Las variables se crean cuando se entra en


su mbito y se destruyen cuando se sale
de su mbito

Conversiones de tipos

Java convierte automticamente:


Compatibles:

int, long
byte, short, long

Java realiza un cast o conversin explicita entre


tipos no compatibles:
No

compatibles:
double, byte
char, boolean

Conversiones automticas de Java

Condiciones:
Los

dos tipos son compatibles


El tipo destino es ms grande que el tipo
origen

Qu ocurre?
Un

ensanchamiento o promocin.
Ejemplo:

El tipo int es suficientemente grande como para


almacenar un valor byte

Conversin de tipos incompatibles

Por ejemplo si quiero convertir:


int

a byte
byte es ms pequeo que int
Se le llama a este tipo de conversin
estrechamiento

Se usa un cast

Es una conversin de tipo explicita y tiene la


siguiente forma:

(tipo) valor
Donde:
tipo indica el tipo al que se ha de convertir el valor
especificado

Ejemplo:
Convierte

int a;
byte b;
b = (byte) a;

de int a byte

Ejercicio

//Ejemplo de conversin de tipo explcita

class Conversion{
public static void main(String args[]){
byte b;
int i = 257;
double d = 323.142;
System.out.println("\nConversion de int a byte.");
b = (byte) i;
System.out.println("i y b: " +i + " " + b);
System.out.println("\nConversion de double a int.");
i = (int) d;
System.out.println("d e i: " +d + " " + i);
System.out.println("\nConversion de double a byte.");
b = (byte) d;
System.out.println("d y b: " +d + " " + b);
}
}

Promocin de tipo automtica en


expresiones
Se da cuando se supera el rango
permitido por el tipo de dato.
Ejemplo:

byte

a = 40;
byte b = 50;
byte c = 100;
Int d = a + b

El resultado de a * b podra superar el


rango de cualquiera de sus operandos de
tipo byte
Java promociona automticamente los
operandos de tipo byteo short a int
cuando calcula la expresin

Reglas de promocin de tipos


byte, shor a int
long a long
float a float
double a double

Ejercicio

//Revisin de las reglas de promocin

class Promote{
public static void main(String args[]){
byte b = 42;
char c = 'a';
short s = 1024;
int i = 50000;
float f = 5.67f;
double d = .1234;
double result = (f * b) + (i / c) - (d * s);
System.out.println((f * b) + " + " + (i / c) + " - " + (d *
s));
System.out.println("resultado = " + result);
}
}

Arreglos

Una matriz o arreglo es un grupo de


variables del mismo tipo a las que se hace
referencia con el mismo nombre.
Se pueden crear matrices de cualquier
tipo y pueden tener una o mas
dimensiones

Se pueden declarar en Java arrays de cualquier


tipo:
char

s[ ];
int Array[ ];

Incluso se pueden construir arrays de arrays:


int

tabla[ ][ ] = new int[4][5];

Los lmites de los arrays se comprueban en


tiempo de ejecucin para evitar
desbordamientos y la corrupcin de memoria.

Matriz unidimensional
1. tipo nombre_matriz [ ];
int dias[ ]; //declaracin
2. nombre_matriz = new tipo [tamao]
//new reserva memoria
dias = new int [12];

Java reserva memoria dinmicamente

Ejercicio

/Ejemplo de una matriz unidimensional

class Array{
public static void main(String args[]){
int dias[ ]; // p bien int dias[ ] = new int[12];
dias = new int[12];
dias[0] = 31;
dias[1] = 28;
dias[2] = 31;
dias[3] = 30;
dias[4] = 31;
dias[5] = 30;
dias[6] = 31;
dias[7] = 31;
dias[8] = 30;
dias[9] = 31;
dias[10] = 30;
dias[11] = 31;
System.out.println("Abril tiene " + dias[3] + "dias.");
}
}

Inicializacin de matrices al
declararse
Es una listas de expresiones separadas
por comas y entre llaves { }
Los valores se separan con las comas

Ejercicio

//Versin mejorada del programa anterior

class AutoArray{
public static void main(String args[]){
int dias[] =
{31,28,31,30,31,30,31,31,30,31,30,31};
System.out.println("Abril tiene " + dias[3] +
"dias");
}
}

Ejercicio

//Calcula la media de los valores de una


matriz

class Media{
public static void main(String args[]){
double nums[] = {10.1, 11.2, 12.3, 13.4, 14.5};
double result = 0;
int i;
for(i=0; i<5; i++)
result = result + nums[i];
System.out.println("La media es " + result/5);
}
}

En Java un array es realmente un objeto,


porque tiene redefinido el operador [ ].
Tiene una funcin miembro: length. Se
puede utilizar este mtodo para conocer
la longitud de cualquier array.

int a[][] = new int[10][3];


a.length; /* 10 */
a[0].length; /* 3 */

Para crear un array en Java hay dos


mtodos bsicos.
Crear un array vaco:
int

lista[] = new int[50];

o se puede crear ya el array con sus


valores iniciales:
String nombres[] =
{"Juan","Pepe","Pedro","Maria };

Esto que es equivalente a:


String nombres[];
nombres = new String[4];
nombres[0] = new String( "Juan" );
nombres[1] = new String( "Pepe" );
nombres[2] = new String( "Pedro" );
nombres[3] = new String( "Maria" );

No se pueden crear arrays estticos en


tiempo de compilacin:

int lista[50]; // generar un error en tiempo


de compilacin

Tampoco se puede rellenar un array sin


declarar el tamao con el operador new:
int lista[];
for(int i=0; i < 10; i++ )
lista[i] = i;

Es decir, todos los arrays en Java son


estticos. Para convertir un array en el
equivalente a un array dinmico en C/C+
+, se usa la clase vector, que permite
operaciones de insercin, borrado, etc. en
el array.

Matriz multidimensionales

Son matrices de matrices

Declaracin

Bidimensional
Int

dosD[][] = new int [4][5];

Ejercicio

//Ejemplo de una matriz bidimensional

class DosDArray{
public static void main(String args[]){
int dosD[][] = new int[4][5];
int i, j, k = 0;
for(i=0; i<4; i++)
for(j=0; j<5; j++){
dosD[i][j] = k;
k++;
}
for(i=0; i<4; i++){
for(j=0; j<5; j++)
System.out.println(dosD[i][j] + " ");
System.out.println("&&");
}
}
}

Cuando se reserva memoria para una


matriz multidimensional, solo es necesario
especificar la memoria que necesita la
primera dimensin, despus se reservara
para las otras dimensiones

Ejemplo:
int

dosD[][] = new int [4][];


dosD[0] = new int[5];
dosD[1] = new int[5];
dosD[2] = new int[5];
dosD[3] = new int[5];

Vista conceptual de matriz


bidimensional de 4 x 5
[0] [0]

[0] [1]

[0] [2]

[0] [3]

[0] [4]

[1] [0]

[1] [1]

[1] [2]

[1] [3]

[1] [4]

[2] [0]

[2] [1]

[2] [2]

[2] [3]

[2] [4]

[3] [0]

[3] [1]

[3] [2]

[3] [3]

[3] [4]

Ejercicio

//Reserva distintos tamaos para la


segunda dimensin de cada elemento

class DosDArrayN{
public static void main(String args[]){
int dosD[][] = new int[4][];
dosD[0] = new int[1];
dosD[1] = new int[2];
dosD[2] = new int[3];
dosD[3] = new int[4];
int i, j, k = 0;
for(i=0; i<4; i++)
for(j=0; j<i+1; j++){
dosD[i][j] = k;
k++;
}
for(i=0; i<4; i++){
for(j=0; j<i+1; j++)
System.out.print(dosD[i][j] + " ");
System.out.println();
}
}
}

Inicializacin de matrices
multidimensionales

Es necesario encerrar entre llaves el


inicializador de cada dimensin

Ejercicio

//Inicializa una matriz bidimensional

class Matrix{
public static void main(String args[]){
double m[][] = {
{ 0*0, 1*0, 2*0, 3*0 },
{ 0*1, 1*1, 2*1, 3*1 },
{ 0*2, 1*2, 2*2, 3*2 },
{ 0*3, 1*3, 2*3, 3*3 }
};
int i,j;
for(i=0; i<4; i++){
for(j=0; j<4; j++)
System.out.print(m[i][j] + " ");
System.out.println();
}
}
}

Ejercicio

//Ejemplo de una matriz tridimensional

class threeDMatrix{
public static void main(String args[]){
int threeD[][][] = new int [3][4][5];
int i,j,k;
for(i=0; i<3; i++)
for(j=0; j<4; j++)
for(k=0; k<5; k++)
threeD[i][j][k] = i * j * k;
for(i=0; i<3; i++){
for(j=0; j<4; j++){
for(k=0; k<5; k++)
System.out.print(threeD[i][j][k] + " ");
System.out.println();
}
System.out.println();
}
}
}

Operadores

Los operadores de Java son muy


parecidos en estilo y funcionamiento a los
de C. En la siguiente tabla aparecen los
operadores que se utilizan en Java, por
orden de precedencia:

[]

()

++

--

<<

>>

<

>

<=

&

&&

||

>=

==

!=

Los operadores numricos se comportan


como esperamos:
int + int = int
Los operadores relacionales devuelven un
valor booleano.

Para las cadenas, se pueden utilizar los


operadores relacionales para
comparaciones adems de + y += para la
concatenacin:
String nombre = "nombre" + "Apellido";

El operador = siempre hace copias de


objetos, marcando los antiguos para
borrarlos, y ya se encargar el garbage
collector de devolver al sistema la
memoria ocupada por el objeto eliminado.

Operadores aritmticos

++

--

-=

*=

/=

%=

--

Ejercicio

//Muestra los operadores aritmticos


bsicos

class BasicMath{
public static void main(String args[]){
//operaciones aritmeticas con enteros
System.out.println("Aritmetica con enteros");
int a = 1 + 1;
int b = a * 3;
int c = b / 4;
int d = c - a;
int e = -d;
System.out.println("a = " +a);
System.out.println("b = " +b);
System.out.println("c = " +c);
System.out.println("d = " +d);
System.out.println("e = " +e);
//aritmetica utilizando el tipo double
System.out.println("\nAritmetica en coma flotante");
double da = 1 + 1;
double db = da * 3;
double dc = db / 4;
double dd = dc - a;
double de = -dd;
System.out.println("da = " + da);
System.out.println("db = " + db);
System.out.println("dc = " + dc);
System.out.println("dd = " + dd);
System.out.println("de = " + de);
}
}

Operador Modulo
Devuelve el resto de un divisin.
Se aplica tanto a tipos flotantes como a
enteros.

Ejercicio

/ El operador %

class Modulo{
public static void main(String args[]){
int x = 42;
double y = 42.3;
System.out.println("x mod 10 = " +x % 10);
System.out.println("y mod 10 = " +y % 10);
}
}

Asignaciones con operadores


aritmticos
Combina una operacin aritmtica con
una asignacin
Ejemplo:

= a + 4;
a += 4;

Sintaxis:

var = var operador expresin;

var operador = expresin;

Ejercicio

Control de Flujo

Muchas de las sentencias de control del


flujo del programa se han tomado del C:

Sentencias de Salto
if/else
if( Boolean ) {
sentencias;
}
else {
sentencias;
}

switch
switch( expr1 ) {
case expr2:
sentencias;
break;

case expr3:
sentencias;
break;

Default:
sentencias;
break;

Sentencias de Bucle

Buclesfor
for(expr1inicio;expr2test;expr3incremento)
{
sentencias;
}

El siguiente trocito de cdigo Java que


dibuja varias lneas en pantalla alternando
sus colores entre rojo, azul y verde. Este
fragmento sera parte de una funcin Java
(mtodo):

int contador;
for( contador=1; contador <= 12; contador++ ) {
switch( contador % 3 ) {
case 0:
setColor( Color.red );
break;

case 1:
setColor( Color.blue );
break;

case 2:
setColor( Color.green );
break;

}
g.drawLine( 10,contador*10,80,contador*10 );
}

Tambin se soporta el operador coma (,) en


los bucles for
for( a=0,b=0; a < 7; a++,b+=2 )

Bucleswhile
while( Boolean ) {
sentencias;
}

Buclesdo/while

do {
sentencias;
}while( Boolean );

Manejo de memoria
y recoleccin de
basura

Java tiene un colector automtico de


basura. El manejo de memoria en Java
esta basado en objetos y referencias a
objetos. No hay apuntadores en Java.

El manejador de memoria de Java lleva


un registro de las referencias a un objeto.
Cuando un objeto no tiene referencias
entonces se convierte en un candidato
para ser considerado basura.

Por ejemplo, veamos la siguiente clase:


// Voltea una cadena de caracteres
class CADENA_ALREVES
{
public static String volteala(String FUENTE)
{
int I,
LONGITUD = FUENTE.length();
StringBuffer DESTINO = new StringBuffer(LONGITUD);
for ( I = (LONGITUD - 1); I >= 0; I--)
{
DESTINO.appendChar(FUENTE.charAt(I));
}
return DESTINO.toString();
}
}

En este ejemplo la variable DESTINO es


usada como un objeto temporal de referencia
durante la ejecucin del proceso de invertir
una cadena. Cuando el mtodo "volteala"
llega a su return la referencia al objeto
DESTINO ya no existe, siendo entonces
DESTINO un candidato a ser basura.

Los elementos de clase String (como FUENTE)


tienen los mtodos length y charAt (el cual
regresa el caracter correspondiente a la posicion
indicada). Los elementos de la clase
StringBuffer tienen los mtodos appendChar (el
cual incluye un caracter al final del buffer) y
toString (el cual transforma los datos del buffer
en una representacin de tipo String).

También podría gustarte