Está en la página 1de 8

Apuntes Básicos de Java

Apuntes Básicos De Java


“Todo en Java es una clase, define una clase o forma parte de
una clase”
 Esto es útil recordarlo porque a la hora de definir una función o
procedimiento éste debe ser un método de una clase y a la hora de
definir una variable debe ser un atributo de la clase o variable local de
un método según el caso.
 La idea es modelar un problema usando clases, de tal manera que cada
clase tenga los métodos que me ayuden a resolver un problema.

Tipos De Datos
Java define 8 tipos de datos básicos(llamados tipos primitivos o simples)
Para números:
 byte
 short
Enteros
 int
 long

 float
 double Reales

 boolean: admite valores true y false.


 char: para almacenar un solo caracter.

Tipo Tamaño Rango de Valores


(En bytes)
double 8 1.7 e-308 a 1.7e308
long 8 -9.223.372.036.854.775.808 a
9.223.372.036.854.775.807
float 4 3.4 e-038 a 3.4e038
int 4 -2.147.483.648 a 2.147.483.647
short 2 -32.768 a 32.767
byte 1 -128 a 127

 Para representar un char se utilizan 2 bytes (no 1 como la mayoria de


los lenguajes) debido a que java utiliza el sistema UNICODE (que hace
rato desplazó al ASCII) y este utiliza 65.536 caracteres por que permite
representar caracteres en todas las lenguas. Además, sus primeros 127
caracteres son iguales al ASCII, por lo que el carácter 65 en la tabla
ASCII (A) es el mismo en UNICODE.
 Las constantes de tipo char se representan las constantes con comillas
simples. Ej: char letra=’a’; también es válido char letra=65; ¿por qué?

Observen que no aparece definido el tipo String como primitivo. Java lo


presenta como una clase que pertenece al paquete java.lang (librería
estandar del lenguaje, no hay que importarla) y la ventaja de esto es que al ser

williamyanez@hotmail.com
Página 1 de 8
Apuntes Básicos de Java
una clase tiene métodos asociados para las operaciones más comunes. Esto lo
explicaré en la próxima sección.

Operadores
Lógicos y relacionales Aritméticos
! not +, -, *
&& and ++, --
|| or +=, - =, * =, /=
^ xor % (residuo igual al MOD pascal)
!= distinto
= = comparación = (asignación)
<, >, >=, <=

Con los operadores debemos tener en cuenta lo siguiente:


 si quiero saber si A y B (2 variables) son iguales uso: if(A==B) (no
if(A=B) esto es una asignación) y if(A!=B) para comprobar si son
distintos.
 Esto es valido si los tipos de A y B son primitivos si el tipo de A y B es
una clase (A y B son objetos) utilizamos: if(A.equals(B))
 El operador % me devuelve el residuo de la división entera esto es:
x=7%2, devuelve 1, que el resultado de dividir 7 entre 2, da 3 y el
residuo es 1.

Conversiones de Tipos de Datos en Java


Con frecuencia es necesario escribir expresiones aritméticas que involucren
operandos de distinto tipo y en Java hay que estar muy pendiente por ser un
lenguaje fuertemente tipeado (estricto con los tipos de datos), veamos un
ejemplo:

double n=15/2;
System.out.println(n);
Al ejecutar este código vemos con sorpresa que se imprime: 7.000000 y no
7.5 como esperábamos, esto se debe a que los operandos (15 y 2) son de tipo
Entero (por defecto las constantes sin decimales Java las toma como int y las
que tienen decimales como double) y entonces si los operandos son todos del
mismo tipo el resultado es del mismo tipo de los operandos y ese es el criterio
que se aplica en este caso.
El otro criterio es que si los operandos son de distinto tipo, el resultado es
convertido al tipo mas grande en la expresión, tomando en cuenta los tamaños
presentados en la sección anterior.
Ahora bien, ¿como escribimos la expresión anterior (n=15/2) ? hay dos
soluciones:
1. Escribir n=15/2.0 (el 1er operando es int y el 2do double por lo que el
resultado es double).
2. Utilizar el operador de cast ó moldeo (que consiste en colocar el tipo
entre paréntesis al que queremos convertir la expresión):
n=(double) 15/2;
El 2do caso es el mas recomendado debido a que no siempre podemos hacer lo
del 1er caso (si la expresión es A/B ¿como hacemos?) y también se debe usar
cuando se presente lo siguiente:

williamyanez@hotmail.com
Página 2 de 8
Apuntes Básicos de Java
En una asignación el operando del lado izquierdo del = debe ser mas
grande que el del lado derecho, sino hay que usar cast.
Ejemplo:
int x=2.5; //Esto no compila x es int y 2,5 es double y double>int
lo correcto es int x=(int)2.5;

La Clase String
Como ya mencione anteriormente Java maneja los Strings como objetos, esto
permite tener una variedad de métodos a nuestra disposición para manipular
los Strings, algunos de estos métodos son:
 charAt (int posición(0...n-1))-> char: devuelve el char que esta en la
posición indicad
 equals(String otro)-> boolean: compara dos strings.
 indexOf (char letra)->int: me devuelve la posición en que esta un char.
 length ( )->int: me devuelve la longitud del string.
 substring (int posini, int posfin)-> String: devuelve un substring desde
posini hasta posfin-1.
 trim ( )-> String: elimina los espacios en blanco al principìo y final de un
string.
 toUpperCase( )->String: convierte a mayúsculas.
 toLowerCase() ->String: convierte a minúsculas.

Java también tiene una clase llamada StringBuffer que es útil para strings
que cambian frecuentemente, ya que cuando usamos String ocurre lo
siguiente:

String s=”hola”; //se crea un objeto de tipo string referenciado o apuntado


por s

s = + “mundo” //se crea un nuevo objeto cuyo contenido es “hola mundo”


y pasa a ser apuntado por s. El otro
objeto (el que tiene “hola”) es marcado para ser eliminado de memoria
cuando pase el “camión de la basura”(recolector de basura de java)

Con StringBuffer sería así:


StringBuffer s = new StringBuffer(“hola”);
s.append(“mundo”); //ahora el mismo objeto referenciado por s contiene
“hola mundo”

Tiene un método reverse( ) que invierte el contenido y un método toString( )


que convierte el objeto a String.

Importante: Este método lo tienen todas las clases de java (inclusive las que
hacemos nosotros) por que lo heredan de la clase Object, (la madre de todas
las clases) así como equals( ) para comparar dos objetos del mismo tipo.

Tienen además los métodos.

williamyanez@hotmail.com
Página 3 de 8
Apuntes Básicos de Java
charAt(int pos)->char: igual que string
length( )-> int: igual que string
setCharAt(int pos, char c): cambia el contenido en la posición pos y coloca c.

Clases Wrapper (Envolturas)


Asi mismo java tiene 8 clases equivalentes a los tipos primitivos, definidas en
java.lang y que sirven para en un momento dado manipular variables de tipos
primitivos como si fueran objetos. Esto es necesario cuando vamos a
almacenarlos en una estructura de datos como Vector y Hashtable que
trabajan solo con objetos.
Estas clases son:
Clase Tipo
Primitivo
equivalente Entre sus métodos tienen métodos
Integer int (parseXXX) útiles para convertir
Double double de String a número y de número a
Float float String:
Long long
Short short
Byte byte
Character char
Boolean boolean

Clase: Integer
Para Convertir de String a Numero:
 Integer.parseInt(String)->int convierte un String a int.
 Integer.parseInt(String,base) -> int convierte un String a int, pero
podemos especificar la base en la cual esta el String.
Ejemplo: int valor=Integer.parseInt(“A1”,16)
Convierte el String “A1” (En Hexadecimal, base 16) a int dando como
resultado 17.

Para Convertir de Numero a String:


 Integer.toString(int)->String convierte un int String

Para Convertir de Objeto a Tipo Primitivo (int en este caso): intValue() -


>int
Ejemplo:
Integer entero=new Integer(32);
int valor=entero.intValue(); //valor tendría 32

Clase: Double
Para Convertir de String a Numero:
 Double.parseDouble(String)->double convierte un String a double.

Para Convertir de Numero a String:


 Double.toString(double)->String convierte un double a String

williamyanez@hotmail.com
Página 4 de 8
Apuntes Básicos de Java

Para Convertir de Objeto a Tipo Primitivo (double):doubleValue() -


>double
Ejemplo:
Double d=new Double(3E2); //3E2 = 3x10 elevado a la 2
Double valor=d.doubleValue(); //valor tendría 300

Las otras clase numéricas tienen métodos similares.


Character tiene una serie de métodos isxxx para saber si un char es una letra,
número,etc...

Arreglos en Java
Declaración: tipo nombre[]; donde tipo puede ser un tipo simple ó una
clase
Creación: nombre = new tipo [numElementos];
Acceso: nombre[i] (0...numElemento-1)

 Tienen un atributo length que me permite saber el número de


elementos.
 Puedo declararlos y crearlos en una misma linea. Ejemplo:
int num[] = new int [3];
num[0] = 2;
num[1] = 4;
num[2] = 6;
Es equivalente a:
int num [] = {2,4,6}
declaro, creo e inicializo un arreglo de 3 posiciones.

 Normalmente recorro un arreglo con un for, recuerden que el for de


java tiene dos características que lo hacen muy útil:
1. Puedo declarar la variable de control del for en la sección de
inicialización del mismo. Ej.: for(int i = 0; i<arreglo.length; i+
+)
2. Puedo salirme del for en cualquier momento con la instrucción
break.

Estructuras de datos en java

La Clase Vector
Cuando no tenemos idea del número de elementos que puede contener
un arreglo tenemos a disposición la clave Vector (definida en java.util), la cual
me permite manejar “arreglos dinámicos”.

Métodos
 addElement (Object o) agrega un elemento al final del vector. Lo que
agrego en el vector debe ser un “Objeto” es decir una variable cuyo tipo
es una clase.
 elementAt(int posicion)->Object: me devuelve el elemento en esa
posicion del vector.
 isEmpty()->boolean : me indica si el vector está ó no vacío.

williamyanez@hotmail.com
Página 5 de 8
Apuntes Básicos de Java
 size()->int: me devuelve el número de elementos del vector
 setElementAt(Object nuevo valor, int posi): me permite cambiar el
contenido de la posición posi del Vector.
 contains (Object valor)->boolean: me indica si el vector contiene ó
no a un elemento indicado por valor.
 indexOf (Object valor)->int: me indica la Posición del elemento valor
dentro del Vector.
 removeElementAt(int posi): me permite eliminar del vector al
elemento que esta en la posición posi. Todos los elementos por encima
de posi son movidos una posición antes.
 removeAllElement(): me permite eliminar todos los elementos del
vector

La Clase Hashtable
Así mismo Java tiene una estructura llamada Hashtable (java.util) que permite
manejar un “arreglo dinámico” pero que en vez de ubicar las valores por una
posición numérica los ubica de acuerdo a una clave (osea, que guarda parejas
clave-valor).
Ejemplo:
Hashtable ht=();
ht.put(“William”, newInteger(32)); Esto es una Hashtable
22 28 32
Clave Valor debe ser un objeto Mildred Liliana William
ht.put(“Mildred”, newInteger(22));
ht.put(“Liliana”, newInteger(28));

Para recuperar un valor de una Hashtable:


Integer edad = (Integer) ht.get (“William”) // Edad tiene 32.

Otrosmétodos útiles de Hashtable:


 clear() elimina todos los elementos de la tabla
 isEmpty() devuelve un boolean que me indica si está ó no vacía.
 remove(clave) Remueve un elemento (clave y valor) y devuelve el
valor removido como un Object
 size() Devuelve el número de elementos de la tabla

La Clase Stack
Así mismo tenemos la clase Stack (hereda de vector) para manejar pilas
definida en java.util:
Métodos:
 empty() me indica si la pila está vacía ó no.
 pop() saca el elemento del tope de la pila y lo devuelve como un Object
 push(valor) mete el elemento en el tope en el tope de la pila. Debe
ser un Object
 peek() permite consultar el valor del tope sin eliminarlo
 search(valor) busca un valor en la pila y devuelve en que posición
está

williamyanez@hotmail.com
Página 6 de 8
Apuntes Básicos de Java
Así mismo, Java2 dispone de la API Collection que amplia la cantidad de
estructuras de datos disponibles (Listas, Mapas, Conjuntos, etc...).
Hay una clase BitSet (java.util) para manejar arreglos de bits (0 y 1).

Formato de Numeros y Fechas


Cuando necesitemos imprimir un valor numérico con decimales con un formato
especifico (por ejemplo 3 decimales) utilizaremos la clase DecimalFormat del
paquete java.text y usamos una “mascara” para especificar el formato a
imprimir
Ejemplo:
//Creamos un formato que incluye el separador de miles y 3 decimales
DecimalFormat df=new DecimalFormat("#,##0.000");
Double numero=1000345.234567;
System.out.println(df.format(numero)); //Imprime 1.000.345,234

Para las fechas usamos la clase SimpleDateFormat.


Manejo de Archivos
Esto lo haremos con las siguientes clases del paquete java.io:
Archivos de Entrada: Archivos de Salida:
FileReader FileWriter
BufferedReader PrintWriter

Ejemplo:
try{
FileReader archEntrada = new FileReader (“entrada.in”);
BufferReader entrada = new BufferedReader (archEntrada);

FileWriter archSalida = new FileWriter (“salida.out”);


PrintWriter salida = new PrintWriter (arch salida) ;

String Linea;
while((Linea=entrada.readLine())!=null){
salida.println(Linea); // Escribimos lo que leemos del
archivo de entrada en el de salida.
}//while
Todo esto debemos hacerlo
salida.close(); en un try...catch
entrada.close(); (IOException e) para
} controlar los posibles
catch(IOException e){ errores de I/O que puedan
System.out.println(e.toString());
}

Separar una Linea en Tokens


Con frecuencia necesitaremos separar una linea en tokens, por ej, una linea
que contiene una lista de numeros separados por espacio (1 2 4 6 8). Para
separar las líneas en tokens usamos StringTokenizer(java.util) que tiene 2
métodos: hasMoreTokens() retorna true/false si hay mas tokens y
nextToken() devuelve el proximo token.
Ejemplo:
String Tokenizer st = new StringTokenizer(linea);
Vector v = new Vector();

williamyanez@hotmail.com
Página 7 de 8
Apuntes Básicos de Java
while (st.hasMoretokens()){
String token = st.nextToken();
v.addElement(token);
}

Varios
 Java tiene una clase Math (definida en java.lang) que tiene una serie de
métodos estaticos (definidos con la palabra reservada static y se
invocan con el nombre de la clase) para las Funciones Matemáticas
(incluyendo trigonometricas) mas comunes.
 Ejemplo de ellos son: abs(),cos(),sin(),tan(),log(), max(),min(), pow()
(potencia), sqrt() (raiz cuadrada), y las de redondeo: round(),rint(),floor() y
ceil()

 El Paquete java.math tiene las clases BigInteger y BigDouble para


trabajar con Números muy grandes.

williamyanez@hotmail.com
Página 8 de 8

También podría gustarte