Beruflich Dokumente
Kultur Dokumente
V2.0
Octubre 2014
Ferreiras
: Despus de haber cursado los prerrequisitos INF-5100, INF-5120 .
Ferreiras
Java Basico
Algunos conceptos
1
bsicos de Java
: Despus de haber cursado los prerrequisitos INF-5100, INF-5120 .
Ferreiras
Java Basico
Ferreiras
Java Basico
Java es de la familia de
lenguajes C
...
Ferreiras
Java Basico
Java Basico
Plataforma de Java SE 8
Java Platform, Standard Edition (Java SE) 8
http://docs.oracle.com/javase/8/
About Java SE 8
Download and Install
Learn the Language
Monitor and Troubleshoot
Reference
Release Notes
Ferreiras
Java Basico
Why Java?
Java is the foundation for virtually every type of networked
application and is the global standard for developing and
delivering mobile applications, games, Web-based content,
and enterprise software. With more than 9 million
developers worldwide, Java enables you to efficiently
develop and deploy exciting applications and services. With
comprehensive tooling, a mature ecosystem, and robust
performance, Java delivers applications portability across
even the most disparate computing environments.
Recuperado de
http://www.oracle.com/us/technologies/java/overview/index.html
Ferreiras
Java Basico
Es la Java que
veremos, a
nivel
introductorio, en
este curso.
Java Basico
Java Basico
Java Basico
10
Recuperado de
http://www.oracle.com/us/technologies/java/overview/index.html
Ferreiras
Java Basico
11
Java Basico
12
Recuperado de
http://www.oracle.com/us/technologies/java/overview/index.html
Ferreiras
Java Basico
13
Java SE 8u31
This release includes important security fixes. Oracle strongly
recommends that all Java SE 8 users upgrade to this release.
Java Basico
14
http://java.com/en/about/
Ferreiras
Java Basico
http://java.com/es/
15
Java Basico
16
Ferreiras
Java Basico
17
Ferreiras
Java Basico
18
Ferreiras
Java Basico
19
Java Basico
20
Java Basico
21
Por ejemplo:
At The Java Tutorial, Creating Your
First Application, en el link
http://docs.oracle.com/javase/tutorial/getStarted/cupojava/win32.html
Java Basico
22
Editor
Lenguaje
humano
Cdigo
fuente
Ferreiras
Java Basico
23
Compilador
Cdigo Intermedio
(Bytecodes para una MV)
Cdigo Intermedio
(Bytecodes para una MV)
Cdigo Intermedio
(No bytecodes)
C#
JAVA
Generador de Cdigo
(MV JAVA)
El cdigo intermedio
es generado en una
representacin que
usa smbolos del
lenguaje humano.
Generador de Cdigo
(MV .NET/C#)
C/C++
Generador de Cdigo
2
Ferreiras
Java Basico
24
Ferreiras
Cdigo objeto
Linker
(Enlazador)
.exe
( Cdigo ejecutable
en lenguaje
maquina (0s y 1s)
para un CPU en
particular )
Java Basico
El cdigo objeto
puede ser generado
en lenguaje
ensamblador ( que
aun es con smbolos
del lenguaje humano)
o lenguaje mquina,
que es en 0s y 1s.
Es la aplicacin que
correr, se ejecutar, en
una plataforma ( SO +
CPU ) en particular.
Su representacin
siempre ser en el
lenguaje mquina, 0s y 1s,
de un CPU en particular.
25
Ferreiras
Java Basico
26
Ferreiras
Java Basico
27
La conversin a un lenguaje de
mquina especfico (CPU) debe ser
hecha con un procesador de lenguaje,
el cual podr ser un:
Interprete; ,
compilador;
Ferreiras
Java Basico
28
INTERPRETE
SALIDA
Java Basico
29
COMPILADOR
CODIGO
OBJETO
ENLAZADOR
(LINKER)
SALIDA
EJECUTABLE
(.exe)
Java Basico
30
Ferreiras
Java Basico
31
Funcionamiento de Java
El corazn del funcionamiento de Java es la
Maquina Virtual de Java ( Java Virtual
Machine, JVM).
Hay varios proveedores de JVM ( Oracle, IBM,
GNU, ... );
La actual JVM de Oracle est escrita en C++.
Ver en: http://openjdk.java.net/groups/hotspot/
En http://en.wikipedia.org/wiki/List_of_Java_virtual_machines hay
una lista de JVM
Ferreiras
Java Basico
32
Funcionamiento de Java
La JVM carga los archivos .class para
interpretar y ejecutar el bytecode.
La JVM se ejecuta bajo el control directo
de un sistema operativo y la aplicacin
Java se ejecuta bajo el control de la JVM.
Lo anterior es la base para decir, con
cierta reservas, que Java es independiente
de la plataforma.
Ferreiras
Java Basico
33
Funcionamiento de Java
El javac es el traductor del cdigo fuente
Java a una forma de cdigo intermedio
llamada bytecode, almacenado en
archivo con la extensin .class y el
mismo nombre del archivo fuente
.java ;
Ferreiras
Java Basico
34
Funcionamiento de Java
El javac o Java Compiler, es el
compilador de Java;
El javac convierte el codigo fuente Java
en bytecodes.
El javac es suplido con el JDK;
El javac y la JVM en combinacin con el
API de Java es el JDK o Java
Developers Kit;
Ferreiras
Java Basico
35
Funcionamiento de Java
Compiladores de cdigo fuente Java son,
adems del javac de Oracle, entre otros:
JIT de IBM
ECL de Eclipse
GNU compiler for Java
...
Java Basico
36
Funcionamiento de Java
Pasos para producir nuestra aplicacin Java:
Preparar el archivo CodigoFuenta.java y grabarlo
Ferreiras
Java Basico
37
Funcionamiento de Java
Grficamente:
Compilador Java
para Windows
/ /**Cdigo
Cdigofuente
fuenteJava,
Java,
independiente
de
la
independiente de la
1
plataforma
plataforma1 */*/
Compilador Java
para Linux
Compilador Java
para Solaris
: SO + CPU
Ferreiras
Java Basico
38
Funcionamiento de Java
Grficamente, continuacin:
bytecode
Ejecucin en
Windows de la
aplicacin Java
Ferreiras
Ejecucin en
Linux de la
aplicacin Java
Java Basico
Ejecucin en
Solaris de la
aplicacin Java
39
Funcionamiento de Java
Ejemplo solo para practicar los pasos para producir una
aplicacin Java:
Basico0.java
jdk1.7.0
Ferreiras / Java / Bsico, muy bsico
Suponiendo que ya usted instal el JDK con todos sus valores por defecto:
P1: Escribir este cdigo fuente usando notepad o similar
P2: Grabar en su directorio de trabajo como Basico0.java
P3: Levantar la consola DOS
El objetivo de
P4: Ir al a su directorio de trabajo
este ejemplo es
P5: Compilar as: > javac Basico0.java
que usted se
P6: Correr as: > java Basico0
aprenda estos
pasos
Ferreiras
Java Basico
40
Ferreiras
Java Basico
41
if ( tasaNominal > 18 )
System.out.println ("\n\nEXELENTE");
else if ( Inicial < 500 )
System.out.println ("\n\nMUY POCO");
else if ( anos > 5 )
System.out.println ("\n\nMUY LARGO");
else
System.out.println ("\n\nDEFECTO");
} // fin de main()
} // fin de la clase Basico0
Ferreiras
Java Basico
42
/*
C:\Archivos de programa\Java\jdk1.7.0\bin>javac Basico0.java
C:\Archivos de programa\Java\jdk1.7.0\bin>java Basico0
Monto = 906.6411944078162
DEFECTO
C:\Archivos de programa\Java\jdk1.7.0\bin>
*/
Ferreiras
Java Basico
43
Salida estndar
De la clase System de Java se usa el campo
o variable static out, que es tipo PrintStream
( Una clase que veremos ms adelante en el
curso).
out es el flujo estndar de salida,
normalmente asociado a la pantalla de la
consola.
Ferreiras
Java Basico
44
Salida estndar
out ya est abierto al inicio de la ejecucin
de la aplicacin Java y listo para aceptar datos
de salida.
Las formas tpica de uso son:
System.out.println( datos );
System.out.print ( datos );
println() y print() Son mtodos de la
clase PrintStream (ver en el API ).
Ferreiras
Java Basico
45
Salida estndar
System.out.println( datos ) y
System.out.print ( datos ) Usan
como separador de datos el carcter +;
Otra forma, no muy tpica, aunque la
usaremos alguna veces es:
System.out.printf( ); En el
curso veremos ejemplos de su uso.
...
Ferreiras
Java Basico
46
Salida estndar
Ejemplo ( Segmento de cdigo ):
//...
System.out.println( "\n La suma de 3.33 + 4.53 es: " +
( 3.33 + 4.52 ) + " DOP" ) ;
// ...
Explicar al
profesor estos
resultados.
>
Ferreiras
Java Basico
47
Entrada estndar
De la clase System, y para interactuar con el usuario
en un entorno de lnea de comando, es usado el
campo o variable static in, que es tipo ImpuStream.
in representa un flujo de entrada estndar el cual esta
abierto, automticamente, desde que la JVM arranca y
listo para suplir datos de entrada. Tpicamente,
corresponde a entrada por teclado.
in es un flujo de bytes sin caractersticas de flujo de
caracteres.
Ferreiras
Java Basico
48
Entrada estndar
El API de Java tiene varias clases para
acceder al objeto System.in : Son las que mas
java.util.Scanner
java.io.Console,
veremos en este
curso, por su
simplicidad en el
uso
java.io.InputStreamReader
java.io.BufferedReader.
Ferreiras
Java Basico
49
Entrada estndar
Scanner (java.util.Scanner)
Usando un objeto de la clase Scanner, mediante
uno de sus constructores que toma como
argumento el objeto InputStream System.in,
como indicado a continuacin:
Scanner(InputStream source)
Constructs a new Scanner that produces values scanned from the specified input
stream.
As, por ejemplo:
Scanner lector = new
Scanner(System.in);
Ferreiras
Java Basico
Habilita el objeto
Lector para leer
desde stdin
50
Entrada estndar
Scanner (java.util.Scanner)
Combinado con uno de sus diferentes
mtodos next:
double
nextDouble()
nextInt()
Java Basico
51
Entrada estndar
Scanner (java.util.Scanner)
String nextLine()
Advances this scanner past the current line and returns the input that was
skipped.
long
nextLong()
nextBoolean()
Scans the next token of the input into a boolean value and returns that value.
byte
nextByte()
Java Basico
52
Scanner (java.util.Scanner)
Por ejemplo, Para leer un numero entero:
Scanner cin = new
Scanner(System.in); // Recuerde: in
es un objeto
InputStream
int i = cin.nextInt();
cin !!!
Ferreiras
Java Basico
53
Explicar al
profesor estos
resultados.
Ferreiras
Java Basico
54
Entrada estndar
Console (java.io.Console)
A more advanced alternative to the Standard Streams is the Console. This is a
single, predefined object of type Console that has most of the features provided
by the Standard Streams, and others besides. The Console is particularly useful
for secure password entry. The Console object also provides input and output
streams that are true character streams, through Its readerand
writermethods.
Before a program can use the Console, it must attempt to retrieve the Console
object by invoking System.console(). If the Console object is available, this
method returns it.
static Console console() Is a method in the System class that returns
the unique Console object associated with the current Java virtual machine, if
any.
Ferreiras
Java Basico
55
Entrada estndar
Console (java.io.Console)
public final class Console extends
Object
Entrada estndar
Console (java.io.Console)
If System.console returns NULL, then Console operations are not permitted,
either because the OS doesn't support them or because the program was
launched in a noninteractive environment.
Some of the methods are:
String readLine();
Reads a single line of text from the console.
char[] readPassword();
Reads a password or passphrase from the console with echoing disabled
Ferreiras
Java Basico
57
Explicar al
profesor estos
resultados.
//...
Java Basico
58
/*
Basico290813.java
Ferreiras / Java / Basico / Entrada-Salida
Uso de Scanner, Console: Problema cuando nextLine() se usa
combinado con nextInt(), y similares. Solucin usando un mtodo de
Console.
*/
import java.util.Scanner; // necesario para usar Scanner
import java.io.Console; // necesario para usar Console
Ferreiras
Java Basico
59
Basico290813.java
public class Basico290813 {
public static void main(String fofi[ ] ) {
int num1;
double num2;
String nombre;
double suma;
// Establecer un Scanner para entrada estndar (System.in)
Scanner in = new Scanner(System.in);
System.out.print("\n\t* Entre un numero entero: ");
num1 = in.nextInt(); // lee un int
System.out.print("\n\t* Entre un numero de punto flotante: ");
num2 = in.nextDouble(); // lee un double
System.out.print("\n\t* Entre su nombre completo: ");
Ferreiras
Java Basico
60
Basico290813.java
nota # 1: igual que
// nombre = in.next(); // Solo captura la primera palabra
con cin y getline en C+
// nombre = in.nextLine(); // Ver NOTA # 1
+: No captura la
// La solucion es usar
cadena
Console lector = System.console();
nombre = lector.readLine();
System.out.println("\nHola " + nombre + " la suma de " +
num1 + " y " + num2 + " es " + (num1+num2) );
}
} // fin de la clase Basico290813
Ferreiras
Java Basico
61
Basico290813.java
Corridas:
< Hacer corridas en vivo mostrando los efectos de intentar capturar cadenas
con in.next(), in.nextLine() y lector.Readline() >
Ferreiras
Java Basico
62
Entrada estndar
InputStreamReader
(java.io.InputStreamReader)
System.in is a byte stream with no character
stream features. To use Standard Input as a
character stream,
wrap System.in in InputStreamReader :
InputStreamReader cin = new
InputStreamReader(System.in);
Ferreiras
Java Basico
63
Entrada estndar
InputStreamReader
(java.io.InputStreamReader)
public class InputStreamReader extends Reader
An InputStreamReader is a bridge from byte streams to character streams: It reads bytes
and decodes them into characters using a specified charset. The charset that it uses may
be specified by name or may be given explicitly, or the platform's default charset may be
accepted.
Each invocation of one of an InputStreamReader's read() methods may cause one or more
bytes to be read from the underlying byte-input stream. To enable the efficient conversion
of bytes to characters, more bytes may be read ahead from the underlying stream than are
necessary to satisfy the current read operation.
Ferreiras
Java Basico
64
Entrada estndar
InputStreamReader
(java.io.InputStreamReader)
Constructor more used:
InputStreamReader( InputStream in )
Creates an InputStreamReader that uses the default charset.
Some Methods are:
public int read() throws IOException
Reads a single character.
Returns:
The character read, or -1 if the end of the stream has been reached
Ferreiras
Java Basico
65
Entrada estndar
BufferedReader
(java.io.BufferedReader)
For top efficiency, consider wrapping an InputStreamReader within a BufferedReader. For
example:
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
Ferreiras
Java Basico
66
Entrada estndar
BufferedReader
(java.io.BufferedReader)
Some methods are:
int read()
Reads a single character.
public String readLine() throws IOException
Java Basico
67
Entrada estndar
/*
Basico000.java
jdk1.7.0
Ferreiras / Java / Entrada-Salida estandar
InputStreamReader, BufferedReader
*/
import java.io.* ;
public class Basico000 {
public static void main(String [ ] fofi ) {
InputStreamReader flujoEntradaStd = new InputStreamReader(System.in) ;
BufferedReader lector = new BufferedReader( flujoEntradaStd) ;
System.out.println("\nEntrada-Salida estandar en Java\n");
Ferreiras
Java Basico
68
Entrada estndar
try {
System.out.print("* Entre su nombre completo: ");
String nombreCompleto = lector.readLine();
System.out.print("* Entre su ano de nacimiento: ");
String anoNac = lector.readLine();
System.out.print("* Entre el ano actual: ");
String esteAno = lector.readLine();
int anoNacim = Integer.parseInt( anoNac);
int anoActual = Integer.parseInt(esteAno);
Java Basico
69
Entrada estndar
/*
C:\Archivos de programa\Java\jdk1.7.0\bin>javac Basico000.java
C:\Archivos de programa\Java\jdk1.7.0\bin>java Basico000
Entrada-Salida estandar en Java
* Entre su nombre completo: Matusalem Abud Adida
* Entre su ano de nacimiento: 1845
* Entre el ano actual: 2012
Hola Matusalem Abud Adida
Su edad hoy es: 167 anos
C:\Archivos de programa\Java\jdk1.7.0\bin>
*/
Ferreiras
Java Basico
70
Secuencias de escape
Una secuencia de escape es un carcter
precedido de una backslash (\). La tabla en
la siguiente diapositiva muestra los
secuencias de escape de Java;
Una o ms secuencias de escape pueden
ser incluidas en los datos de salida que son
pasados a los mtodos println() y
print();
Ferreiras
Java Basico
71
Secuencias de escape
Escape
Sequence
Description
\t
\b
\n
\r
\f
\'
\"
\\
Recuperado de http://docs.oracle.com/javase/tutorial/java/data/characters.html
Ferreiras
Java Basico
72
Bits
byte
[ -128, +127 ]
short
16
[- 32768, + 32767 ]
int
32
[-2147483648, 2147483647 ]
long
64
[ -9223372036854775808 , + 9223372036854775807 ] 0L
float
32
0.0f
double
64
0.0d
true Or false
false
'\u0000'
boolean
char
16
Rango
Valor por
defecto
Java Basico
73
El tipo String
El tipo String o tipo cadena es una
secuencia de ceros o mas caracteres
UNICODE;
El valor por defecto del tipo String es
null, como para cualquier objeto en
Java.
Ferreiras
Java Basico
74
String, StringBuilder
La declaracin e inicializacin de un variable tipo String
genera un objeto String.
Los objetos String son inmutables, esto es, su estado
no se puede cambiar despus de creados. Son de solo
lectura.
Internamente, cada vez que se realiza una operacin
sobre un objeto String, en realidad lo que sucede es
que se crea un nuevo objeto String que contiene los
resultados de dicha operacin sobre el objeto String
original.
Ferreiras
Java Basico
75
String, StringBuilder
Se recomienda, si se va a realizar muchas
operaciones sobre un objeto String, usar la clase
StringBuilder para su construccin.
Las cadenas StringBuilder son mutables, esto es, una
vez creados, se pueden modificar cuantas veces sea
requerido, sin que sean creados nuevos objetos
StringBuilder por cada modificacin.
...
Ferreiras
Java Basico
76
package1
Ferreiras
Java Basico
77
package
Es un agrupamiento de clases que proporciona
proteccin de acceso y gestin de espacio de nombres.
Ferreiras
Java Basico
78
Java Basico
79
Ferreiras
Java Basico
80
Ferreiras
Java Basico
81
import
Es una forma de incluir libreras (bibliotecas)
de cdigo objeto de Java que esta
almacenado en un package;
Para importar otras bibliotecas se declara
un import con el nombre del paquete que
contiene la librera de inters, al principio del
cdigo fuente.
Ferreiras
Java Basico
82
import
import java.awt.Font;
Ferreiras
import java.awt.*;
Java Basico
83
import
Java Basico
Math.cos( Math.PI);
84
import
En Java SE 8, el package
java.lang.*;
Esta importado por defecto.
Ferreiras
Java Basico
85
Estructura general de un
programa simple1 en Java
Esta
actividad
debe
mostrar
el
dominio
del
tema.
Java Basico
86
} // fin de main()
} // fin de la clase
Ferreiras
En este formato:
Todas la variables es
recomendable que sean private
static; Por encapsulamiento.
Java Basico
Donde:
public class ProgramaJavaSimple
Es la declaracin de la clase; Las llaves
encierran el cuerpo de la clase que incluye la
lgica principal del programa, junto con otros
bloques de construccin opcionales de una clase.
Es una clase contenedora ( class wrapper );
Observe que el nombre de la clase que contiene
el mtodo main() es el mismo nombre del
archivo con el que usted grada este cdigo fuente.
Ferreiras
Java Basico
88
Donde:
public static void main( String [ ] args )
Java Basico
89
Ferreiras
Java Basico
90
/*
Stdin0.java
jdk1.7.0
Ferreiras / Java / Entrada estandar / Console
*/
import java.io.Console;
public class Stdin0 {
public static void main( String [ ] fofi ) {
Console lector = System.console();
// System.consele() retorna una referencia a un objeto Console, si lo hay.
System.out.println( "\nEntre su nombre completo: " );
String nombre = lector.readLine();
System.out.println( "\nEl nombre : " + nombre );
}
}
Ferreiras
Java Basico
91
/*
C:\Program Files\Java\jdk1.7.0\bin>javac Stdin0.java
C:\Program Files\Java\jdk1.7.0\bin>java Stdin0
Entre su nombre completo:
Filiberto Campoamor Perez Sanchez
El nombre : Filiberto Campoamor Perez Sanchez
C:\Program Files\Java\jdk1.7.0\bin>
*/
Ferreiras
Java Basico
92
/*
Stdin0a.java
jdk1.7.0
Ferreiras / Java / Entrada estandar / Scanner / mextLine()
*/
import java.util.Scanner;
public class Stdin0a {
public static void main( String [ ] fofi ) {
Scanner lector = new Scanner( System.in);
System.out.println( "\nEntre su nombre completo: " );
String nombre = lector.nextLine();
System.out.println( "\nEl nombre : " + nombre );
}
}
Ferreiras
Java Basico
93
/*
C:\Program Files\Java\jdk1.7.0\bin> java Stdin0a
Entre su nombre completo:
PedroAmorCampoFrio del Monte Santana Rosario
El nombre : PedroAmorCampoFrio del Monte Santana Rosario
C:\Program Files\Java\jdk1.7.0\bin>
*/.
Ferreiras
Java Basico
94
Java Basico
95
/*
SwitchString0a.java
jdk1.7.0
Ferreiras / Java / Switch con String / Usando el tipo String
A partir de Java SE 7, se pude usar un tipo String en la sentencia
switch / case / default, Como veremos en este ejemplo.
Para ejecutar la aplicacin debe escribir, en lnea de comando, lo siguiente:
> java SwitchString0 < un dia de la semana >
Obviamente que sin los < > !!
*/
Ferreiras
Java Basico
96
Java Basico
97
/*
C:\Program Files\Java\jdk1.7.0\bin> java SwitchString0a SABADO
Hoy es SABADO ,Feliz como una lombriz, estudiando
C:\Program Files\Java\jdk1.7.0\bin>java SwitchString0a lunes
Hoy es lunes, Feliz,A Trabajar, Trabajar, Co...
C:\Program Files\Java\jdk1.7.0\bin>java SwitchString0a MiERcoles
Hoy es MiERcoles, Feliz,A Trabajar, Trabajar, Co...
C:\Program Files\Java\jdk1.7.0\bin>java SwitchString0a Dia de lucha
Dia No existe, Zoquete || @ !!, Ejecutar de nuevo
C:\Program Files\Java\jdk1.7.0\bin>
*/
Ferreiras
Java Basico
98
Ferreiras
Java Basico
99
Ferreiras
Java Basico
100
Perfecto, el swapeo
ocurre exactamente
como esperado.
C:\Borland\BCC55\Bin>swap0
Valores antes: x = 111 y = 333
Valores despues: x = 333 y = 111
C:\Borland\BCC55\Bin>
*/
Ferreiras
Java Basico
101
Ferreiras
Java Basico
102
Ferreiras
Java Basico
103
Java Basico
104
Asignacin de memoria
Java Basico
105
Ferreiras
Java Basico
Asignacin de memoria
106
/*
Array0.java
jdk1.7.0
Ferreiras / Java / Arreglos estticos
*/
Ferreiras
Java Basico
107
class Array0 {
public static void main(String[] args) {
// declarar un arreglo de enteros
int arregloEnteros[ ];
// asignar memoria para 10 enteros, usando new
arregloEnteros = new int[10];
// inicializar los elementos
for( int k = 0; k < 10; ++k ) {
arregloEnteros[ k ] = 3 * k + 10;
}
// mostrar los valores almacenados
System.out.println(" " );
for( int j = 0; j < 10; ++j ) {
System.out.println( "arregloEnteros[" + j + " ] " + arregloEnteros[ j ] );
}
}
}
Ferreiras
Java Basico
108
/*
C:\Archivos de programa\Java\jdk1.7.0\bin>java Array0
arregloEnteros[0 ] 10
arregloEnteros[1 ] 13
arregloEnteros[2 ] 16
arregloEnteros[3 ] 19
arregloEnteros[4 ] 22
arregloEnteros[5 ] 25
arregloEnteros[6 ] 28
arregloEnteros[7 ] 31
arregloEnteros[8 ] 34
arregloEnteros[9 ] 37
C:\Archivos de programa\Java\jdk1.7.0\bin>
*/
Ferreiras
Java Basico
109
Inicializacin de los
elementos
//...
double salarioSemanal [ ] = { 1223.45, 3456.23, 345.78,
0.066E+04 } ;
System.out.println("\n" + salarioSemanal[ 3] );
//...
>
> 660.0
Ferreiras
Java Basico
110
Java Basico
111
Array0a.java
jdk1.7.0
Ferreiras / Java / Arreglos de tamao fijo en Java
class Array0a {
public static void main(String[] args) {
// declarar e inicializar un arreglo de enteros
int arregloEnteros[ ] = { 10, 22, 33, 44, 55, 66, 77, 88 };
// mostrar los valores almacenados
// Observe que
System.out.println( " " );
length no es una
for( int k = 0; k < arregloEnteros.length; ++k ) {
funcin
System.out.print( arregloEnteros[ k ] + " " );
}
// arregloEnteros[ arregloEnteros.length] = 456; // => Ver # 1
System.out.println( " " );
}
}
Ferreiras
Java Basico
112
/*
C:\Archivos de programa\Java\jdk1.7.0\bin>java Array0a
10 22 33 44 55 66 77 88
C:\Archivos de programa\Java\jdk1.7.0\bin>
+++++++++++++++++++++++++++++
# 1: Si se intenta acceder a un indice mas all de ( length - 1) se
produce un error durante la ejecucin:
ArrayIndexOutOfBoundsException
En el tema Excepciones en Java veremos ese concepto.
*/
Ferreiras
Java Basico
113
Ferreiras
Java Basico
114
Ferreiras
Java Basico
115
Ferreiras
Java Basico
116
Ferreiras
Java Basico
117
Ferreiras
Java Basico
118
119
/*
ArregloObject0.java
Ferreiras / Java / Arreglo de objetos con diferentes tipos
En Java, los elementos de un arreglo pueden ser objetos de
diferentes tipos, esto es, el arreglo puede ser de tipos mezclados.
Para lograrlo, se debe usar Object como el tipo del arreglo.
*/
Ferreiras
Java Basico
120
ArregloObject0.java
class A {
private static String x;
public A(String x ) { this.x = x; }
public static String getX() { return x; }
} // fin de la clase A
class B {
private static double x;
public B( double x ) { this.x = x; }
public static double getX() { return x; }
} // fin de la clase B
class C {
private static int x;
public C( int x ) { this.x = x; }
public static int getX() { return x; }
} // fin de la clase C
Ferreiras
Java Basico
121
ArregloObject0.java
// Tester-class
public class ArregloObject0 {
public static void main(String [ ] fofi ) {
Object arrObj [ ] = new Object[5];
arrObj[0] = new A("Curso de Java con los colegas profesores");
arrObj[1] = new B(0.000000000456e+10);
arrObj[2] = new C(12345);
// Mostrar el contenido de cada elemento en el arreglo
System.out.println("\nEn el elemento [0] hay: " + A.getX() );
System.out.println("\nEn el elemento [1] hay: " + B.getX() );
System.out.println("\nEn el elemento [2] hay: " + C.getX() );
}
}
Ferreiras
Java Basico
122
ArregloObject0.java
/*
C:\Archivos de programa\Java\jdk1.7.0_51\bin>javac
ArregloObject0.java
C:\Archivos de programa\Java\jdk1.7.0_51\bin>java ArregloObject0
En el elemento [0] hay: Curso de Java con los colegas profesores
En el elemento [1] hay: 4.56
En el elemento [2] hay: 12345
C:\Archivos de programa\Java\jdk1.7.0_51\bin>
*/
Ferreiras
Java Basico
123
Elemento es un ID del
tipo del arreglo, usado
para recorrerlo
Java Basico
124
Sucesivamente, elemento va
double[ ] arreglo = {1.2, 3.0, 0.8};
obteniendo el valor
int suma = 0;
almacenado en cada uno de
for (double elemento : arreglo) los
{ elementos del arreglo
sum = suma + elemento;
}
Restricciones en el uso:
Slo acceso. Los elementos no pueden ser asignados a, por
ejemplo, para incrementar cada elemento en una coleccin.
Slo una sola estructura. No es posible atravesar dos estructuras a la
vez, por ejemplo, para comparar dos arreglos.
Slo un solo elemento. Utilice nicamente para el acceso de un solo
elemento, por ejemplo, no comparar elementos sucesivos.
Slo hacia adelante. Es posible repetir slo hacia adelante por pasos
individuales.
Ferreiras
Java Basico
125
Java Basico
126
La variable elemento
almacena el valor actual
del
arregloEnteros[i],
en el rango [ 0, 9 ]
}
}
//...
Producir la salida:
1 2 3 4 5 6 7 8 9 10
Ferreiras
Java Basico
127
elemento y arreglo
deben ser del mismo
tipo
Ferreiras
Java Basico
128
Ferreiras
Java Basico
129
El tipo Array
Class Array
http://docs.oracle.com/javase/7/docs/api/index.html
java.lang.Object
java.lang.reflect.Array
public final class Array extends Object
The Array class provides static methods to dynamically create and
access Java arrays.
Pendiente para
Arrays no tiene constructores !!
desarrollar
Ferreiras
Java Basico
130
El tipo Arrays
Class Arrays
http://docs.oracle.com/javase/7/docs/api/index.html
java.lang.Object
java.util.Arrays
Pendiente para
desarrollar ms
Ferreiras
Java Basico
131
El tipo Arrays
La clase java.util.Arrays del API de Java
contiene varios mtodos static para ordenar los
elementos de un arreglo, hacer bsqueda de un
elemento dado en el arreglo, comparar arreglos
y llenar los elementos de un arreglo con un
valor dado.
Todos esos mtodos son sobrecargados para
todos los valores de tipo primitivo de Java.
Arrays no tiene constructores !!
Ferreiras
Java Basico
132
El tipo Arrays
Some methods in the Class Arrays
public static int binarySearch(Object[] a, Object key)
Searches the specified array of Object ( Byte, Int , double etc) for the specified value
using the binary search algorithm. The array must be sorted prior to making this call.
This returns index of the search key, if it is contained in the list; otherwise, (-(insertion
point + 1).
public static boolean equals(long[] a, long[] a2)
Returns true if the two specified arrays of longs are equal to one another. Two arrays
are considered equal if both arrays contain the same number of elements, and all
corresponding pairs of elements in the two arrays are equal. This returns true if the two
arrays are equal. Same method could be used by all other premitive data types ( Byte,
short, Int etc.)
public static void fill(int[] a, int val)
Assigns the specified int value to each element of the specified array of ints. Same
method could be used by all other premitive data types ( Byte, short, Int etc.)
public static void sort(Object[] a)
Sorts the specified array of objects into ascending order, according to the natural
ordering of its elements. Same method could be used by all other premitive data types
( Byte, short, Int etc.)
Ferreiras
Java Basico
133
El tipo Arrays
/*
Arreglo4.java
jdk1.7.0
Ferreirar / Java / Clase Arrays
*/
Ferreiras
Java Basico
134
El tipo Arrays
import java.util.Arrays;
public class Arreglo4 {
public static void main( String [ ] fofi ) {
String arreglo [ ] =
{ " Wilfredo Mojica", " Daniel Reyes", " Francisca Fong" };
System.out.println("\n* Arreglo sin ordenar\n");
for ( String elemento : arreglo ) {
System.out.println( elemento);
}
Arrays.sort( arreglo );
System.out.println("\n* Arreglo ordenado\n");
for ( String elemento : arreglo ) {
System.out.println( elemento);
}
}
}
Ferreiras
Java Basico
135
El tipo Arrays
C:\Archivos de programa\Java\jdk1.7.0\bin>javac Arreglo4.java
C:\Archivos de programa\Java\jdk1.7.0\bin>java Arreglo4
* Arreglo sin ordenar
Wilfredo Mojica
Daniel Reyes
Francisca Fong
* Arreglo ordenado
Daniel Reyes
Francisca Fong
Wilfredo Mojica
C:\Archivos de programa\Java\jdk1.7.0\bin>
Ferreiras
Java Basico
136
El tipo Vector<E>
La clase java.util.Vector<E> implementa un
arreglo de objetos E que se puede expandir despus de
creado.
Sus elementos pueden ser accedidos utilizando un
ndice entero al travs del mtodo
nombreVector.get(indice);
nombreVector[indice] NO FUNCIONA !!
El tamao de un Vector<E> puede aumentar o disminuir
segn sea necesario para acomodar la adicin y
eliminacin de elementos.
Ferreiras
Java Basico
137
El tipo Vector<E>
La clase Vector<E> est en el package java.util;
Un objeto Vector<E> es un arreglo dinmico que puede crecer
automticamente de acuerso la necesidad requerida de
almacenamiento;
Un objeto Vector<E> no requiere tener un tamao fijo;
Un objeto Vector<E> usa su metodo add() para agregar un elemento
despus del ltimo;
Un objeto Vector<E> usa su mtodo add(index, valor) para agregar un
elemento en la posicin cuyo ndice sea index;
Un objeto Vector<E> usa su mtodo get(index) para obtener el dato
almacenado en el elemento cuyo ndice es index
Un objeto Vector<E> usa su mtodo size() para obtener la cantidad de
elementos actual que contiene
Ver en el API de Java SE 7 mas mtodos de la clase Vector<E>
Ferreiras
Java Basico
138
El tipo Vector<E>
/*
Vector0a.java
jdk1.7.0
Ferreiras / JAVA / Vector<E>
<E> Es el tipo de los elementos objetos que almacenara el Vector
Por ejemplo, String, Integer, Object, ...
*/
Ferreiras
Java Basico
139
El tipo Vector<E>
import java.util.Vector; // Observe que no es import java.util.Vector<E>;
public class Vector0a {
public static void main(String[ ] fofi ) {
Vector<String> paises = new Vector<String>();
// add elementos String al Vector
paises.add(" Antigua y Bermuda");
paises.add(" Reino de Arabia Saudi");
paises.add(" Republica Democratica y Popular de Argelia");
paises.add(" Republica de Angola");
paises.add(" Monarquia Absoluta Islamica");
// Vemos la capacidad y cantidad actual
System.out.println("\nCapacidad = " + paises.capacity() + " Cantidad =
+ paises.size() );
// Vemos el contenido del Vector
for ( int j = 0; j < paises.size(); ++j ) {
System.out.println( "paises[" + j + "] " + paises.get(j) );
}
Ferreiras
Java Basico
140
El tipo Vector<E>
// add un elemento en el indice 3
paises.add( 3, " Estado de Camboya");
// Vemos la capacidad y cantidad actual
System.out.println("\nCapacidad = " + paises.capacity() + " Cantidad = "
+ paises.size() );
// Vemos el contenido del Vector
for ( int j = 0; j < paises.size(); ++j ) {
System.out.println( "paises[" + j + "] " + paises.get(j) );
}
}
}
Ferreiras
Java Basico
141
El tipo Vector<E>
C:\Program Files\Java\jdk1.7.0\bin>javac Vector0a.java
C:\Program Files\Java\jdk1.7.0\bin>java Vector0a
Capacidad = 10 Cantidad = 5
paises[0] Antigua y Bermuda
paises[1] Reino de Arabia Saudi
paises[2] Republica Democratica y Popular de Argelia
paises[3] Republica de Angola
paises[4] Monarquia Absoluta Islamica
Capacidad = 10 Cantidad = 6
paises[0] Antigua y Bermuda
paises[1] Reino de Arabia Saudi
paises[2] Republica Democratica y Popular de Argelia
paises[3] Estado de Camboya
paises[4] Republica de Angola
paises[5] Monarquia Absoluta Islamica
Observe que al
agregar Estado de
Camboya en el ndice
3, la Republica de
Angola se desplazo al
ndice 4.
C:\Program Files\Java\jdk1.7.0\bin>
Ferreiras
Java Basico
142
Java Basico
143
Ejemplos y Ejercicios
Ver en el grupo:
JavaBasicoEjemplos.zip
JavaBasicoEjercicios.doc
Ferreiras
Java Basico
144
Referencias
Java SE8 for Programmers; Paul Deitel, Harvey Deitel; Deitel Developer Series; Prentice Hall;
3 edition, 2014
The Java Language Specification; Java SE 7 Edition; James Gosling, Bill Joy, Guy Steele.
Gilad Bracha, Alex Buckley
http://docs.oracle.com/javase/specs/jls/se7/html/index.html
Ferreiras
Java Basico
145
Ferreiras
Java Basico
146