Javaapuntes
Javaapuntes
TUTORIAL DE JAVA
1
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
INDICE
1. Introducción (pág. 3)
16. Clases para tipos primitivos o simples: String, Integer, Double.... java.lang.* (pág. 19)
2
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
1. Introducción
A modo de introducción, decir que en este tutorial sobre Java se van a tratar todos los puntos
enunciados en el índice que hemos podido observar, donde se va a tratar el funcionamiento de Java,
sus componentes, etc.
Se puede decir a modo introductor, que la principal característica de Java es la de ser un lenguaje
compilado e interpretado, en el cual, todo programa en Java ha de compilarse y el código que se
genera bytecodes es interpretado por una máquina virtual. De este modo se consigue la
independencia de la máquina, ya que el código compilado se ejecuta en máquinas virtuales que si
son dependientes de la plataforma.
3
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
Identificadores
Tipos de datos
Palabras reservadas
Sentencias
Bloques de código
Comentarios
Expresiones
Operadores
Tipos de datos
Tipo Descripción
Boolean Tiene dos valores true o false.
Caracteres Unicode de 16 bits. Los caracteres alfa-numéricos son los mismos que los
Char ASCII con el bit alto puesto a 0. El intervalo de valores va desde 0 hasta 65535
(valores de 16-bits sin signo).
Byte Tamaño 8 bits. El intervalo de valores va desde -27 hasta 27 -1 (-128 a 127)
Short Tamaño 16 bits. El intervalo de valores va desde -215 hasta 215-1 (-32768 a 32767)
Int Tamaño 32 bits. El intervalo de valores va desde -231 hasta 231-1 (-2147483648 a
2147483647)
Los tipos básicos que se utilizarán en la mayor parte de los programas serán boolean, int y double.
Variables
Una variable es un nombre que se asocia con una porción de la memoria del ordenador, en la que se
guarda el valor asignado a dicha variable. Hay varios tipos de variables que requieren distintas
cantidades de memoria para guardar datos.
Todas las variables han de declararse antes de usarlas, la declaración consiste en una sentencia en la
que figura el tipo de dato y el nombre que asignamos a la variable. Una vez declarada se le podrá
asignar valores.
4
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
de instancia
de clase
locales
Las variables de instancia o miembros dato como veremos más adelante, se usan para guardar los
atributos de un objeto particular.
Las variables de clase o miembros dato estáticos son similares a las variables de instancia, con la
excepción de que los valores que guardan son los mismos para todos los objetos de una determinada
clase. En el siguiente ejemplo, PI es una variable de clase y radio es una variable de instancia. PI
guarda el mismo valor para todos los objetos de la clase Circulo, pero el radio de cada círculo puede
ser diferente
class Circulo{
static final double PI=3.1416;
double radio;
//...
}
Las variables locales se utilizan dentro de las funciones miembro o métodos. En el siguiente
ejemplo área es una variable local a la función calcular área en la que se guarda el valor del área de
un objeto de la clase círculo. Una variable local existe desde el momento de su definición hasta el
final del bloque en el que se encuentra.
class Circulo{
//...
double calcularArea(){
double area=PI*radio*radio;
return area;
}
}
En el lenguaje Java, las variables locales se declaran en el momento en el que son necesarias. Es
una buena costumbre inicializar las variables en el momento en el que son declaradas. Veamos
algunos ejemplos de declaración de algunas variables
int x=0;
String nombre="Angel";
double a=3.5, b=0.0, c=-2.4;
boolean bNuevo=true;
int[] datos;
Delante del nombre de cada variable se ha de especificar el tipo de variable que hemos destacado en
letra negrita. Las variables pueden ser: un tipo de dato primitivo, el nombre de una clase o un array.
El lenguaje Java utiliza el conjunto de caracteres Unicode, que incluye no solamente el conjunto
ASCII sino también carateres específicos de la mayoría de los alfabetos. Así, podemos declarar una
variable que contenga la letra ñ
5
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
int año=1999;
Se ha de poner nombres significativos a las variables, generalmente formados por varias palabras
combinadas, la primera empieza por minúscula, pero las que le siguen llevan la letra inicial en
mayúsculas. Se debe evitar en todos los casos nombres de variables cortos como xx, i, etc.
double radioCirculo=3.2;
Declarar
Inicializar
Usar
'++'
'--'
- Operadores Relacionales. Permiten comparar variables según relación de
igualdad/desigualdad o relacción mayor/menor. Devuelven siempre un valor boolean.
6
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
4. Sentencias de Control.
Un lenguaje de programación utiliza sentencias de control para hacer que el flujo de ejecución
avance o se bifurque en función de los cambios de estado en el programa. Las sentencias de control
se clasifican en los grupos:
- Selección.
- Iteración.
- Salto.
- Sentencias de selección.
Java admite dos sentencias de este tipo que son: if y switch. Estas sentencias controlan el flujo de
ejecución en función de condiciones conocidas durante el tiempo de ejecución.
La sentencia if es una sentencia de bifurcación condicional, para dirigir el flujo de ejecución hacia
dos caminos diferentes.
Además, es importante destacar los if anidados. Por lo que, un if anidado es una sentencia if que
está dentro de otro if o else.
Ejemplo:
i f ( i == 10) {
i f ( j < 20) a = b ;
i f ( k > 100) c = d ;
7
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
else a = c ;
} else a = d ;
La sentencia switch es una sentencia de bifurcación múltiple, con el siguiente formato general:
switch (expresión){
case valor1:
sentencias
break;
case valor2:
sentencias
break;
case valorN:
sentencias
break;
default:
- Sentencias de iteración.
Las sentencias while, do-while y for permiten crear lo que se denominan ciclos.
- Sentencias de salto.
Las sentencias break, continue y return transfieren el flujo de ejecución a otra parte del programa.
Una clase en Java se puede entender como un prototipo que define las variables y los métodos
comunes a un cierto tipo de instancias, una clase define todo lo que caracteriza y pueden hacer una
o varias instancias.
Una clase en Java nos proporcionará los atributos y métodos necesarios que un objeto necesitará
para interactuar con otros, por lo que es importante saber estructurar correctamente las clases.
8
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
La palabra "public" indica que el alcance de la clase será público, no significa "publicar clase".
Después de 'public class' escribimos el identificador de la clase. Se recomienda elegir un
identificador abstracto a la clase, para facilitar la comprensión del código.
Por ejemplo, si queremos modelar objetos de tipo "Persona", es recomendable que el identificador
sea "Persona" y no "Juan", el identificador de la clase debe proporcionar una idea general y no una
idea específica.
En Java se usan llaves { } para agrupar trozos de código determinados, es por eso que todo el
contenido de la clase que estamos haciendo debe estar entre sus respectivas llaves.
El manejo de excepciones es una técnica de programación que permite al programador controlar los
errores ocasionados durante la ejecución de un programa informático. Cuando ocurre cierto tipo de
error, el sistema reacciona ejecutando un fragmento de código que resuelve la situación, por
ejemplo retornando un mensaje de error o devolviendo un valor por defecto.
Ejemplo:
import java.io.IOException;
// ...
9
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
Un vector, también llamado array unidimensional, es una estructura de datos que permite agrupar
elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno después de
otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se
encuentran. La primera posición del array es la posición 0.
Podríamos agrupar en un array una serie de elementos de tipo enteros, flotantes, caracteres, objetos,
etc.
#include <iostream>
using namespace std;
int main()
{
int dim;
cout << "Ingresa la dimension del vector" << endl;
cin >> dim; // Supongamos que ingrese 10
int vector[dim]; // mi vector es de tamanyo 10
return 0;
}
int matrix[rows][cols];
int es el tipo de dato, matrix es el nombre del todo el conjunto de datos y debo de especificar el
numero de filas y columnas.
Las matrices también pueden ser de distintos tipos de datos como char, float, double, etc. Las
matrices en C++ se almacenan al igual que los vectores en posiciones consecutivas de memoria.
Usualmente uno se hace la idea que una matriz es como un tablero, pero internamente el manejo es
como su definición lo indica, un vector de vectores, es decir, los vectores están uno detrás del otro
juntos.
La forma de acceder a los elementos de la matriz es utilizando su nombre e indicando los 2
subíndices que van en los corchetes.
Si coloco int matriz[2][3] = 10; estoy asignando al cuarto elemento de la tercera fila el valor 10.
No olvidar que tanto filas como columnas se enumeran a partir de 0. Bueno y para recorrer una
matriz podemos usar igualmente un bucle. En este caso usando 2 for:
for(int i = 0; i < rows; i++) {
10
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
8. Clase Object.
La clase Object está situada en la parte más alta del árbol de la herencia en el entorno de desarrollo
de Java. Todas las clases del sistema Java son descendentes (directos o indirectos) de la clase
Object. Esta clase define los estados y comportamientos básicos que todos los objetos deben tener,
como la posibilidad de compararse unos con otros, de convertirse a cadenas, de esperar una
condición variable, de notificar a otros objetos que la condición variable ha cambiado y devolver la
clase del objeto.
Public boolean equals(Object obj): compara si dos objetos son iguales, por defecto un
objeto es igual solamente a si mismo.
Public int hashCode(): Devuelve un valor de código hash para el objeto. Este método se
apoya en beneficio de tablas hash tales como los proporcionados por java.util.Hashtable.
Protected Object clone() throws CloneNotSuportedException: devuelve una copia
binaria del objeto, al parecer al hacer la copia hace referencia a una nueva posición de
memoria.
Public final Class getClass(): devuelve el objeto del tipo Class que representa dicha clase
durante la ejecución, es decir devuelve el tipo de clase al que pertenece.
Protected void finalize() throws Throwable: se usa para finalizar el objeto, es decir, se
avisa al administrador de la memoria que ya no se usa dicho objeto, y se puede ejecutar
código especial antes de que se libere la memoria.
Public String toString():devuelvo una cadena describiendo el objeto.
Void nativa public final notify(): Se despierta un solo hilo que está esperando en el monitor
de este objeto. Un subproceso espera en el monitor de un objeto llamando a uno de los de
espera métodos.
Final public native void notifyAll (): Se despierta todos los temas que están en espera en el
monitor de este objeto. Un subproceso espera en el monitor de un objeto llamando a uno de
los de espera métodos.
Final public void wait (): Espera que se le notifique por otro subproceso de un cambio en
este objeto.
11
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
9. Clase System.
Hay ocasiones en que se necesita acceder a recursos del sistema, como son los dispositivos de
entrada/salida, el reloj del sistema, etc. Java dispone de la clase System, que proporciona acceso a
estos recursos, independientemente de la plataforma. Es decir, que si se ejecuta un programa en una
plataforma diferente a la que se ha desarrollado, no es necesaria ninguna modificación para tener en
cuenta las peculiaridades de la nueva plataforma.
La clase System es miembro del paquete java.lang y en ella se definen los dispositivos estándar de
entrada/salida:
static PrintStream err;
static InputStream in;
static PrintStream out;
Además, dispone de varios métodos, algunos de los cuales ya se han utilizado en secciones
anteriores:
static void arraycopy( Object,int,Object,int,int )
static long currentTimeMillis()
static void exit( int )
static void gc()
static Properties getProperties()
static String getPropertie( String )
static String getPropertie( String,String )
static SecurityManager getSecurityManager()
static native int identityHashCode( Object )
static void load( String )
static void loadLibrary( String )
static void runFinalization()
static void runFinalizersOnExit( boolean )
static void setErr( PrintStream )
static void setIn( InputStream )
static void setOut( PrintStream )
static void setProperties( Properties )
static void setSecurityManager( SecurityManager )
No se puede instanciar ningún objeto de la clase System, porque es una clase final y todos sus
contenidos son privados; por ellos es por lo que no hay una lista de constructores en la enumeración
de métodos. Es decir, la clase System siempre está ahí disponible para que se pueda invocar
cualquiera de sus métodos utilizando la sintaxis de punto (.) ya conocida
System.out.println( "Hola Java" );
12
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
La herencia es una propiedad de algunos lenguajes de programación como Java que permite que un
objeto sea creado a partir de otro existente, obteniendo características como atributos y métodos, lo
que nos permite crear objetos derivados a partir de objetos bases.
Ejemplo:
integrantes.add(delBosque);
integrantes.add(iniesta);
integrantes.add(raulMartinez);
// CONCENTRACION
System.out.println("Todos los integrantes comienzan una
concentracion. (Todos ejecutan el mismo método)");
for (SeleccionFutbol integrante : integrantes) {
System.out.print(integrante.getNombre()+"
"+integrante.getApellidos()+" -> ");
integrante.Concentrarse();
}
// VIAJE
System.out.println("nTodos los integrantes viajan para jugar un
partido. (Todos ejecutan el mismo método)");
for (SeleccionFutbol integrante : integrantes) {
System.out.print(integrante.getNombre()+"
"+integrante.getApellidos()+" -> ");
integrante.Viajar();
}
......
13
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
Una cadena es una secuencia de caracteres. Las cadenas son una parte fundamental de la mayoría de
los programas, así pues Java tiene varias características incorporadas que facilitan la manipulación
de cadenas.
Java tiene una clase incorporada en el paquete java.lang que encapsula las estructuras de datos de
una cadena. Esta clase, llamada String es la representación como objeto de una matriz de caracteres
que no se puede cambiar.
Hay una clase que la acompaña, llamada StringBuffer, que se utiliza para crear cadenas que pueden
ser manipuladas después de ser creadas.
En los siguientes dos puntos (11 y 12) se desarrolla estas dos clases que acabamos de mencionar: la
clase String y la clase StringBuffer.
Constructor Descripción
14
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
String(char[] v, int pos, int n) char [] a = {'a', 'b', 'c', 'd', 'e'};
String s = new String(a, 1, 3);
//crea String s con valor "bcd";
La clase String proporciona métodos para el tratamiento de las cadenas de caracteres: acceso a
caracteres individuales, buscar y extraer una subcadena, copiar cadenas, convertir cadenas a
mayúsculas o minúsculas, etc.
Método Descripción
15
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
Se puede decir que los objetos String no son modificables, por lo que, los métodos que actúan sobre
un String con la intención de modificarlo lo que hacen es crear un nuevo String a partir del original
y devolverlo modificado.
Por ejemplo: una operación como convertir a mayúsculas o minúsculas un String no lo modificará
sino que creará y devolverá un nuevo String con el resultado de la operación.
16
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
Constructor Descripción
asin, acos,
Funciones trigonométricas inversas Math.asin(1) 1.57
atan
17
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
• Declarar el array:
Para declarar un array se escribe
tipo_de_dato[] nombre_del_array;
• Crear el array
Para crear un array de 4 número enteros escribimos
numeros=new int[4];
(La declaración y la creación del array se puede hacer en una misma línea
int[] numeros =new int[4]; )
18
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
• Usar el array
Para realizar las operaciones comunes tales como ingresar, eliminar, buscar, modificar datos en un
ArrayList encontraremos algunos métodos útiles para tal objetivo:
• set(i, X): Modifica el elemento que está en la posición i, por el nuevo elemento X.
La clase Vector también implementa a List, pero de un modo especial. Este modo especial es
sincronizado, lo que permite que se pueda usar en entornos concurrentes (en varios procesos que se
ejecutan al mismo tiempo). Es la principal característica que la diferencia de otras clases estudiadas
anteriormente como ArrayList.
Solo utilizaremos la clase Vector si tenemos previstas circunstancias especiales como procesos
concurrentes.
Un objeto de tipo Vector contiene elementos que pueden ser accedidos por un índice y puede
aumentar o disminuir su tamaño dinámicamente en tiempo de ejecución.
- Java.io contiene clases que permiten las operaciones de entrada y salida de datos de un
programa.
20
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
AWT permite hacer interfaces gráficas mediante artefactos de interacción con el usuario, como
botones, menús, texto, botones para selección, barras de deslizamiento, ventanas de diálogo,
selectores de archivos, etc. Y por supuesto despliegue gráfico general. La siguiente figura muestra
algunos de estos artefactos de interacción:
21
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
• En la parte superior hay una etiqueta que dice label. La aplicación usa las etiquetas para
mostrar texto.
A la izquierda hay un área para texto que contiene:
• Al centro hay un canvas, donde la aplicación dibuja figuras geométricas y/o texto.
• Un botón.
22
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
• Las fases del ciclo de vida del desarrollo de sistemas que cubren.
• Su funcionalidad.
Ejemplos:
- Microsoft Project es un software de gestión de proyectos, desarrollado y comercializado
por Microsoft, que está diseñado para ayudar a un administrador de proyectos en el
desarrollo de planes, la asignación de recursos a tareas, el seguimiento de los progresos, la
gestión del presupuesto, y el análisis de las cargas de trabajo.
- Visual Paradigm for UML. La herramienta está diseñada para un amplio rango de usuarios,
incluyendo ingenieros de software, analistas de sistema, analistas de negocio, arquitectos de
sistemas y cualquiera que esté interesado en construir un sistema confiable a gran escala a
través del usuario del enfoque orientado a objetos.
- ArgoUML. Herramienta que contiene funciones avanzadas en las etapas de diseño y
modelación de software.
- Poseidón. Es una herramienta para modelar cualquier clase de sistema, relacionado o no con
programación por computadoras. Se presenta en dos ediciones: Community Edition y
Professional Edition.
- Modelio tiene una versión de paga y otra de código abierto mantenido por la comunidad que
no tiene ningún costo. Soporta diagramas UML, entre otras funcionalidades.
23
Francisco José Rodríguez López y Alejandro Serrano Zamarreño (2º ASIR)
21. Conclusiones
A modo de conclusión, decir que para nosotros ha sido elemental investigar en sí que es java, ya que
se caracteriza por ser un lenguaje muy utilizado actualmente.
Además, hay que destacar que Java como ya bien sabemos, es un lenguaje que fue creado a
similitud del lenguaje c, pero con una diferencia que está en que este lenguaje nos ayuda a tener una
mayor seguridad en el programa que se está ejecutando.
22. Bibliografía
A continuación, podemos observar la bibliografía que hemos utilizado para poder llevar a cabo este
tutorial sobre Java:
http://es.slideshare.net/NesMey/paradigma-orientado-a-objetos-4954115
http://es.wikipedia.org/wiki/Java_(lenguaje_de_programaci%C3%B3n)
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/introduccion/primero.htm
http://lsc.fie.umich.mx/~pedro/metodoprogra/sentenciasdecontrol.pdf
http://puntocomnoesunlenguaje.blogspot.com.es/2013/03/java-stringbuilder-
stringbuffer.html
https://ronnyml.wordpress.com/2009/07/04/vectores-matrices-y-punteros-en-c/
http://aprendepooconjava.blogspot.com.es/2012/09/estructura-de-una-clase-en-java.html
http://puntocomnoesunlenguaje.blogspot.com.es/2013/02/clase-string.html
http://www.javascriptya.com.ar/temarios/descripcion.php?cod=21
http://www.discoduroderoer.es/metodos-de-la-clase-math-de-java/
http://www.sc.ehu.es/sbweb/fisica/cursoJava/fundamentos/clases1/arays.htm
https://www.programarya.com/Cursos/Java/Sistema-de-Tipos
http://jagonzalez.org/arraylist-en-java-con-ejemplo-practico/
http://aprenderaprogramar.es/index.php?option=com_content&view=article&id=606:la-
clase-vector-del-api-java-metodos-trimtosize-y-ensurecapacity-ejemplo-y-ejercicios-
resueltos-cu00919c&catid=58:curso-lenguaje-programacion-java-nivel-avanzado-
i&Itemid=180
http://yaqui.mxl.uabc.mx/~eherrera/clasevector.htm
http://ocw.upm.es/lenguajes-y-sistemas-informaticos/programacion-en-java-
i/Contenidos/LecturaObligatoria/19-packages-o-paquetes.pdf
http://users.dcc.uchile.cl/~lmateu/Java/Apuntes/awt.htm
https://es.wikiversity.org/wiki/Herramientas_CASE
24