Sei sulla pagina 1di 21

PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO

UNIVERSIDAD NACIONAL DEL


CALLAO
FACULTAD DE INGENIERIA ELECTRICA Y
ELECTRONICA
ESCUELA DE INGENIERIA ELECTRONICA
SEPARATA
1.- PROGRAMACIN JAVA 1
CURSO :
PROGRAMACION DIGITAL II
PROFESOR:
FERNANDO MENDOZA APAZA
AO : 2008
ING FERNANDO MENDOZA APAZA
1
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
JAVA
caractersticas de Java
bytecodes
Un programa C o C++ es totalmente ejecutable y eso hace que no sea independiente de la
plataforma y que su tamao normalmente se dispare ya que dentro del cdigo final hay
que incluir las libreras de la plataforma
Sus ventajas sobre C++ son:
Su sintaxis es similar a C y C++
No hay punteros lo que le hace m!s seguro"
#otalmente orientado a objetos
$uy preparado para aplicaciones #C%&'%
'mplementa excepciones de forma nati(a
)s interpretado lo que acelera su ejecucin remota* aunque pro(oca que las
aplicaciones +a(a se ejecuten m!s lentamente que las C++ en un ordenador local",
%ermite multihilos
-dmite firmas digitales
#ipos de datos y control de sintaxis m!s rigurosa
)s independiente de la plataforma
.a /ltima (entaja qui0! la m!s importante" se consigue ya que el cdigo +a(a no se
compila* sino que se precompila, de tal forma que se crea un cdigo intermedio que no
es ejecutable, %ara ejecutarle hace falta pasarle por un int1rprete que (a ejecutando cada
lnea, )se int1rprete suele ser la m!quina (irtual de +a(a,
.os programas +a(a no son ejecutables* no se compilan como los programas en C o C++,
)n su lugar son interpretados por una aplicacin conocida como la mquina virtual de
Java +2$", 3racias a ello no tienen porque incluir todo el cdigo y libreras propias de
cada sistema,
%re(iamente el cdigo fuente en +a(a se tiene que precompilar generando un cdigo
que no es directamente ejecutable" pre(io conocido como bytecode o J-code, )se
cdigo generado normalmente en archi(os con extensin class" es el que es ejecutado
ING FERNANDO MENDOZA APAZA
2
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
por la m!quina (irtual de +a(a que interpreta las instrucciones de los bytecodes* ejecutando el
cdigo de la aplicacin,
)l bytecode se puede ejecutar en cualquier plataforma* lo /nico que se requiere es que
esa plataforma posea un int1rprete adecuado la m!quina (irtual de esa plataforma", .a
m!quina (irtual de +a(a* adem!s es un programa muy pequeo y que se distribuye
gratuitamente para pr!cticamente todos los sistemas operati(os, - este m1todo de
ejecucin de programas en tiempo real se le llama Just in Time +'#",
Escritura de programas Java
codifcacin del texto
#odos el cdigo fuente +a(a se escriben en documentos de texto con extensin java, -l
ser un lenguaje para 'nternet* la codificacin de texto deba permitir a todos los
programadores de cualquier idioma escribir ese cdigo, )so significa que +a(a es
compatible con la codificacin Unicode,
)n la pr!ctica significa que los programadores que usen lenguajes distintos del ingl1s
no tendr!n problemas para escribir smbolos de su idioma, 4 esto se puede extender para
nombres de clase* (ariables* etc,
.a codificacin Unicode5 usa 67 bits 5 bytes por car!cter" e incluye la mayora de los
cdigos del mundo,
.os archi(os con cdigo fuente en +a(a deben guardarse con la extensin ,ja(a, Como se
ha comentado cualquier editor de texto basta para crearle, -lgunos detalles importantes
son8
)n ja(a como en C" hay diferencia entre may/sculas y min/sculas,
Cada lnea de cdigo debe terminar con 9
.os comentarios9 si son de una lnea debe comen0ar con :&&; y si ocupan m!s de una
lnea deben comen0ar con :&<; y terminar con :<&;
/* Comentario
de varias lneas */
//Comentario de una lnea
#ambi1n se pueden incluir comentarios javadoc
- (eces se marcan bloques de cdigo* los cuales comien0a con = y terminan con > )l
cdigo dentro de esos smbolos se considera interno al bloque
!
c"digo dentro del bloque
#
c"digo $uera del bloque
ING FERNANDO MENDOZA APAZA
3
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
El primer programa en Java
public class app
!
public static void main%String&' args(
!
System.out.println(!i primer programa"#$%
#
#
)ste cdigo escribe :?$i primer programa@; en la pantalla, )l archi(o debera llamarse
appjava ya que esa es la clase p/blica, )l resto define el m1todo main que es el que se
ejecutar! al lan0arse la aplicacin, )se m1todo utili0a la instruccin que escribe en
pantalla,
varia&les
.as (ariables son los contenedores de los datos que utili0a un programa, Cada (ariable
ocupa un espacio en la memoria A-$ del ordenador para almacenar un dato
determinado,
.as (ariables tienen un nombre un identi)cador" que slo puede contener letras*
n/meros y el car!cter de subrayado tambi1n (ale el smbolo B", )l nombre puede
contener cualquier car!cter Unicode,
declaraci"n de variables
-ntes de poder utili0ar una (ariable* 1sta se debe declarar, .o cual se debe hacer de esta
forma8
tipo nombrevariable;
Conde tipo es el tipo de datos que almacenar! la (ariable texto* n/meros enteros*,,," y
nombrevariable es el nombre con el que se conocer! la (ariable, )jemplos8
int dias%
boolean decision%
#ambi1n se puede hacer que la (ariable tome un (alor inicial al declarar8
int dias'()*%
4 tambi1n se puede declarar m!s de una (ariable a la (e08
int dias'()*+ anio',(+ semanas%
-l declarar una (ariable se puede incluso utili0ar una expresin8
int a'-(+ &'-.%
int c'a/&%
ING FERNANDO MENDOZA APAZA

PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO


alcance o mbito
)sas dos palabras sinnimas* hacen referencia a la duracin de una (ariable, )n el
ejemplo8
!
int x'-,%
#
System.out.println(x$% //Error
+a(a dar! error* porque la (ariable se usa fuera del bloque en el que se creo, )so no es
posible* porque una (ariable tiene como !mbito el bloque de cdigo en el que fue creada
sal(o que sea una propiedad de un objeto",
enteros
.os tipos b*te, s+ort, int y long sir(en para almacenar datos enteros, .os enteros son n/meros
sin decimales, Se pueden asignar enteros normales o enteros octales y hexadecimales, .os octales se
indican anteponiendo un cero al n/mero* los hexadecimales anteponiendo Dx,
int numero'-)% //16 decimal
numero'0,0% //20 octal=16 decimal
numero'0x-1% //10 hexadecimal=16 decimal
Normalmente un n/mero literal se entiende que es de tipo int sal(o si al final se le coloca la letra .9
se entender! entonces que es de tipo long,
No se acepta en general asignar (ariables de distinto tipo, S se pueden asignar (alores de (ariables
enteras a (ariables enteras de un tipo superior por ejemplo asignar un (alor int a una (ariable
long", %ero al re(1s no se puede8
int i'-,%
b*te &'i% //error de compilacin
ING FERNANDO MENDOZA APAZA
!
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
.a solucin es hacer un cast, )sta operacin permite con(ertir (alores de un tipo a otro,
Se usa as8
int i'-,%
b*te &'(&yte$ i% //No hay problema por el cast!
Eay que tener en cuenta en estos cast que si el (alor asignado sobrepasa el rango del
elemento* el (alor con(ertido no tendr! ning/n sentido8
int i'-,00%
b*te &'(&yte$ i% //"l valor de b no tiene sentido
n2meros en coma 3otante
.os decimales se almacenan en los tipos ,oat y double, Se les llama de coma flotante por como
son almacenados por el ordenador, .os decimales no son almacenados de forma exacta por eso
siempre hay un posible error, )n los decimales de coma flotante se habla* por tanto de precisin, )s
mucho m!s preciso el tipo double que el tipo ,oat
- un (alor literal como 6,F por ejemplo"* se le puede indicar con una $ al final del n/mero que es
float 6,Ff por ejemplo" o una d para indicar que es double Si no se indica nada* un n/mero literal
siempre se entiende que es double* por lo que al usar tipos float hay que con(ertir los literales,
.as (alores decimales se pueden representar en notacin decimal8 6,GHF)+G significara 6,GHFI6DG o
lo que es lo mismo 6GHF,
&ooleanos
.os (alores booleanos o lgicos" sir(en para indicar si algo es (erdadero true" o falso $alse", )n
C se puede utili0ar cualquier (alor lgico como si fuera un n/mero9 as (erdadero es el (alor J6 y
falso el D, )so no es posible en +a(a,
Si a un (alor booleano no se le da un (alor inicial* se toma como (alor inicial el (alor $alse %or otro
lado* a diferencia del lenguaje C* no se pueden en +a(a asignar n/meros a una (ariable booleana en
C* el (alor false se asocia al n/mero D* y cualquier (alor distinto de cero se asocia a true",
caracteres
.os (alores de tipo car!cter sir(en para almacenar smbolos de escritura en +a(a se puede
almacenar cualquier cdigo Unicode", .os (alores Unicode son los que +a(a utili0a para los
caracteres, )jemplo8
c+ar letra%
letra'4C4% //5os caracteres van entre comillas
letra')6% //El cdigo 7nicode de la C es el )6. Esta lnea
//8ace lo mismo 9ue la anterior
#ambi1n hay una serie de caracteres especiales que (an precedidos por el smbolo K* son
estos8
ING FERNANDO MENDOZA APAZA
"
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
varia&les
conversin entre tipos castin#!
Eay (eces en las que se desear! reali0ar algo como8
int a%b*te &'-,%
a'&%
.a duda est! en si esto se puede reali0ar, .a respuesta es que s, S porque un dato byte
es m!s pequeo que uno int y +a(a le con(ertir! de forma implcita, Sin embargo en8
int a'-%
b*te &%
&'a%
)l compilador de(ol(er! error aunque el n/mero 6 sea (!lido para un dato byte, %ara
ello hay que hacer un castin#, )so significa poner el tipo deseado entre par1ntesis
delante de la expresin,
int a'-%
b*te &%
&- %b*te( a% //:o da error
)n el siguiente ejemplo8
b*te n-'-00+ n,'-00+ n(%
n(' n- * n, /-00%
-unque el resultado es 6DD* y ese resultado es (!lido para un tipo byte9 lo que ocurrir!
en realidad es que ocurrir! un error, )so es debido a que primero multiplica 6DD < 6DD y
como eso da 6DDDD* no tiene m!s remedio el compilador que pasarlo a entero y as
quedar! aunque se (uel(a a di(idir, .a solucin correcta sera8
n( ' (b*te$ (n- * n, / -00$%
operadores
introduccin
.os datos se manipulan muchas (eces utili0ando operaciones con ellos, .os datos se
suman* se restan* ,,, y a (eces se reali0an operaciones m!s complejas,
operadores aritm;ticos
Son8
ING FERNANDO MENDOZA APAZA
#
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
Eay que tener en cuenta que el resultado de estos operadores (ara notablemente si
usamos enteros o si usamos n/meros de coma flotante,
%or ejemplo8
double resultado-+ d-'-1+ d,'*%
int resultado,+ i-'-1+ i,'*%
resultado-' d- / d,%
resultado,' i- / i,%
resultado1 (aldr! 5,L mientras que resultado2 (aldr! 5, )s m!s incluso8
double resultado%
int i-'6+i,',%
resultado'i-/i,% //$esultado valdr% &
resultado'(double$i-/(double$i,% //$esultado valdr% &'(
)l operador del mdulo M" para calcular el resto de una di(isin entera, )jemplo8
int resultado+ i-'-1+ i,'*%
resultado ' i- < i,% //El resultado ser= 1
operadores condicionales
Sir(en para comparar (alores, Siempre de(uel(en (alores booleanos, Son8
.os operadores lgicos -NC* NA y NN#"* sir(en para e(aluar condiciones complejas,
NN# sir(e para negar una condicin, )jemplo8
boolean mayor>eEdad+ menor>eEdad%
int edad ' ,-%
mayor>eEdad ' edad ?' -.% //mayor>eEdad ser= true
menor>eEdad ' "mayor>eEdad% //menor>eEdad ser= @alse
)l operador OO -NC" sir(e para e(aluar dos expresiones de modo que si ambas son
ciertas* el resultado ser! true sino el resultado ser! $alse, )jemplo8
boolean carnetConducir'true%
int edad',0%
boolean puedeConducir' (edad?'-.$ AA carnetConducir%
ING FERNANDO MENDOZA APAZA
8
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
//Si la edad es de al menos -. aBos y carnetConducir es
//true+ puedeConducir es true
)l operador PP NA" sir(e tambi1n para e(aluar dos expresiones, )l resultado ser! true
si al menos uno de las expresiones es true, )jemplo8
boolean nieva 'true+ llueve'$alse+ graniCa'$alse%
boolean malDiempo' nieva EE llueve EE graniCa%
operadores de FGD
$anipulan los bits de los n/meros, Son8
operadores de asignacin
%ermiten asignar (alores a una (ariable, )l fundamental es :Q;, %ero sin embargo se pueden usar
expresiones m!s complejas como8
x /' (%
)n el ejemplo anterior lo que se hace es sumar G a la x es lo mismo x+QG* que xQx+G",
)so se puede hacer tambi1n con todos estos operadores8
+Q JQ <Q &Q
OQ PQ RQ MQ
SSQ TTQ
#ambi1n se pueden concatenar asignaciones8
x- ' x, ' x( ' *%
Ntros operadores de asignacin son :++; incremento" y :J J: decremento", )jemplo8
x//% //esto es x'x/-%
xHH% //esto es x'xH-%
%ero hay dos formas de utili0ar el incremento y el decremento, Se puede usar por
ejemplo x++ o ++x
.a diferencia estriba en el modo en el que se comporta la asignacin, )jemplo8
int x'*+ y'*+ C%
C'x//% //) vale (* x vale 6
C'//y% //) vale 6* y vale 6
ING FERNANDO MENDOZA APAZA
$
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
operador I
)ste operador conocido como i$ de una lnea" permite ejecutar una instruccin u otra
seg/n el (alor de la expresin, Sintaxis8
expresionlo#icaIvalor+i,erdadero-valor+i.also;
)jemplo8
paga'(edad?-.$I)000J(000%
)n este caso si la (ariable edad es mayor de 6L* la paga ser! de 7DDD* sino ser! de GDDD,
Se e(al/a una condicin y seg/n es cierta o no se de(uel(e un (alor u otro, Ntese que
esta funcin ha de de(ol(er un (alor y no una expresin correcta, )s decir* no
funcionara8
(edad?-.$I paga')000J paga'(000% /ERROR!!!!
precedencia
- (eces hay expresiones con operadores que resultan confusas, %or ejemplo en8
resultado ' . / 1 / ,%
)s difcil saber el resultado, UCu!l esV Useis o die0V .a respuesta es 6D y la ra0n es que
el operador de di(isin siempre precede en el orden de ejecucin al de la suma, )s decir*
siempre se ejecuta antes la di(isin que la suma, Siempre se pueden usar par1ntesis
para for0ar el orden deseado8
resultado ' (. / 1$ / ,%
-hora no hay duda* el resultado es seis, No obstante el orden de precedencia de los
operadores +a(a es8
ING FERNANDO MENDOZA APAZA
10
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
)n la tabla anterior los operadores con mayor precedencia est! en la parte superior* los
de menor precedencia en la parte inferior, Ce i0quierda a derecha la precedencia es la
misma, )s decir* tiene la misma precedencia el operador de suma que el de resta,
)sto /ltimo pro(oca conflictos* por ejemplo en8
resultado ' K / ( * (%
)l resultado podra ser uno nue(e, )n este caso el resultado es nue(e* porque la
di(isin y el producto tienen la misma precedencia9 por ello el compilador de +a(a
reali0a primero la operacin que este m!s a la i0quierda* que en este caso es la di(isin,
Una (e0 m!s los par1ntesis podran e(itar estos conflictos,
la clase !at8
Se echan de menos operadores matem!ticos m!s potentes en +a(a, %or ello se ha
incluido una clase especial llamada .at+ dentro del paquete javalang%ara poder
utili0ar esta clase* se debe incluir esta instruccin8
import javalang.at+/
)sta clase posee m1todos muy interesantes para reali0ar c!lculos matem!ticos
complejos, %or ejemplo8
double x' .at+poL((+($/ //x es ( al (
.at+ posee dos constantes* que son8
%or otro lado posee numerosos m1todos que son8
ING FERNANDO MENDOZA APAZA
11
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
ING FERNANDO MENDOZA APAZA
12
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
estructuras de control del 3uMo
i$
%ermite crear estructuras condicionales simples9 en las que al cumplirse una condicin se ejecutan
una serie de instrucciones, Se puede hacer que otro conjunto de instrucciones se ejecute si la
condicin es falsa, .a condicin es cualquier expresin que de(uel(a un resultado de true o $alse
.a sintaxis de la instruccin i$ es8
i$ (condicin$ !
instrucciones /ue se e0ecutan si la condicin es true
#
else !
instrucciones /ue se e0ecutan si la condicin es 1alse
#
.a parte else es opcional, )jemplo8
i$ %(diasemana?'-$ AA (diasemanaN'*$(!
tra&aMar ' true/
#
else !
tra&aMar ' $alse/
#
Se pueden anidar (arios if a la (e0, Ce modo que se comprueban (arios (alores,
)jemplo8
i$ (diasemana' '-( dia'#5unes#%
else i$ (diasemana' ',( dia'#!artes#%
else i$ (diasemana' '(( dia'#!i;rcoles#%
else i$ (diasemana' '1( dia'#Jueves#%
else i$ (diasemana' '*( dia'#Oiernes#%
else i$ (diasemana' ')( dia'#S=&ado#%
else i$ (diasemana' '6( dia'#>omingo#%
else dia'#I#%
s0itc+
)s la estructura condicional compleja porque permite e(aluar (arios (alores a la (e0,
Sintaxis8
s0itc+ %expresin( !
case valor1J
sentencias si la expresiona es i#ual al valor1;
Pbrea1Q
case valor2J
sentencias si la expresiona es i#ual al valor2;
Pbrea1Q
'
'
'
de$ault:
sentencias /ue se e0ecutan si no se cumple nin#una
de las anteriores
#
ING FERNANDO MENDOZA APAZA
13
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
)sta instruccin e(al/a una expresin que debe ser s+ort, int, b*te o c+ar"* y seg/n el (alor de
la misma ejecuta instrucciones, Cada case contiene un (alor de la expresin9 si efecti(amente la
expresin equi(ale a ese (alor* se ejecutan las instrucciones de ese case y de los siguientes,
.a instruccin brea1 se utili0a para salir del s0itc+, Ce tal modo que si queremos que para un
determinado (alor se ejecuten las instrucciones de un apartado case y slo las de ese apartado*
entonces habr! que finali0ar ese case con un brea1
)l bloque de$ault sir(e para ejecutar instrucciones para los casos en los que la
expresin no se ajuste a ning/n case
)jemplo 68
s0itc+ %diasemana( !
case -J
dia'#5unes#%
brea1/
case ,J
dia'#!artes#%
brea1/
case (J
dia'#!i;rcoles#%
brea1/
case 1J
dia'#Jueves#%
brea1/
case *J
dia'#Oiernes#%
brea1/
case )J
dia'#S=&ado#%
brea1/
case 6J
dia'#>omingo#%
brea1/
de$ault:
dia'#I#%
#
)jemplo 58
s0itc+ %diasemana( !
case -J
case ,J
case (J
case 1J
case *J
la&ora&le'true/
brea1/
case )J
case 6J
la&ora&le'$alse/
#
ING FERNANDO MENDOZA APAZA
1
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
0+ile
.a instruccin 0+ile permite crear bucles, Un bucle es un conjunto de sentencias que se repiten si
se cumple una determinada condicin, .os bucles 0+ile agrupan instrucciones las cuales se
ejecutan continuamente hasta que una condicin que se e(al/a sea falsa,
.a condicin se mira antes de entrar dentro del While y cada (e0 que se termina de ejecutar las
instrucciones del While
Sintaxis8
0+ile %condicin( !
sentencias /ue se e0ecutan si la condicin es true
#
)jemplo c!lculo del factorial de un n/mero* el factorial de H sera8 H<G<5<6"8
//@actorial de 1
int n'1+ @actorial'-+ temporal'n%
0+ile %temporal?0$ R
@actorial2-temporalHH%
#
do 0+ile
Crea un bucle muy similar al anterior* en la que tambi1n las instrucciones del bucle se
ejecutan hasta que una condicin pasa a ser falsa, .a diferencia estriba en que en este
tipo de bucle la condicin se e(al/a despu1s de ejecutar las instrucciones9 lo cual
significa que al menos el bucle se ejecuta una (e0, Sintaxis8
do !
instrucciones
# 0+ile %condicin(
$or
)s un bucle m!s complejo especialmente pensado para rellenar arrays o para ejecutar
instrucciones controladas por un contador, Una (e0 m!s se ejecutan una serie de
instrucciones en el caso de que se cumpla una determinada condicin, Sintaxis8
$or %expresin2nicial/ condicin/ expresin"ncadavuelta( !
instrucciones;
#
.a e3presi"n inicial es una instruccin que se ejecuta una sola (e08 al entrar por primera (e0 en
el bucle $or normalmente esa expresin lo que hace es dar (alor inicial al contador del bucle",
.a condici"n es cualquier expresin que de(uel(e un (alor lgico, )n el caso de que esa expresin
sea (erdadera se ejecutan las instrucciones, Cuando la condicin pasa a ser falsa* el bucle deja de
ejecutarse, .a condicin se (alora cada (e0 que se terminan de ejecutar las instrucciones del bucle,
Cespu1s de ejecutarse las instrucciones interiores del bucle* se reali0a la expresin que tiene lugar
tras ejecutarse las instrucciones del bucle que* generalmente* incrementa o decrementa al
contador", .uego se (uel(e a e(aluar la condicin y as sucesi(amente hasta que la condicin sea
falsa,
ING FERNANDO MENDOZA APAZA
1!
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
)jemplo factorial"8
//@actorial de 1
int n'1+ @actorial'-+ temporal'n%
$or %temporal'n%temporal?0%temporalHH(!
@actorial *'temporal%
#
sentencias de salida de un bucle
&reaS
)s una sentencia que permite salir del bucle en el que se encuentra inmediatamente,
Eay que intentar e(itar su uso ya que produce malos h!bitos al programar,
continue
'nstruccin que siempre (a colocada dentro de un bucle y que hace que el flujo del
programa ignore el resto de instrucciones del bucle9 dicho de otra forma* (a hasta la
siguiente iteracin del bucle, -l igual que ocurra con brea1* hay que intentar e(itar su
uso,
arrays y cadenas
arra*s
unidimensionales
Un array es una coleccin de (alores de un mismo tipo engrosados en la misma (ariable,
Ce forma que se puede acceder a cada (alor independientemente, %ara +a(a adem!s un
array es un objeto que tiene propiedades que se pueden manipular,
.os arrays solucionan problemas concernientes al manejo de muchas (ariables que
se refieren a datos similares, %or ejemplo si tu(i1ramos la necesidad de almacenar las
notas de una clase con 6L alumnos* necesitaramos 6L (ariables* con la tremenda
lentitud de manejo que supone eso, Solamente calcular la nota media requerira una
tremenda lnea de cdigo, -lmacenar las notas supondra al menos 6L lneas de cdigo,
3racias a los arrays se puede crear un conjunto de (ariables con el mismo nombre,
.a diferencia ser! que un n/mero ndice del array" distinguir! a cada (ariable,
)n el caso de las notas* se puede crear un array llamado notas* que representa a
todas las notas de la clase, %ara poner la nota del primer alumno se usara notasXDY* el
segundo sera notasX6Y* etc, los corchetes permiten especificar el ndice en concreto del
array",
.a declaracin de un array unidimensional se hace con esta sintaxis,
tipo nombre&'/
)jemplo8
double cuentasPQ% //3eclara un array /ue almacenar% valores
// doubles
Ceclara un array de tipo double, )sta declaracin indica para qu1 ser(ir! el array* pero
no reser(a espacio en la A-$ al no saberse toda(a el tamao del mismo,
ING FERNANDO MENDOZA APAZA
1"
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
#ras la declaracin del array* se tiene que iniciar, )so lo reali0a el operador ne0* que es el que
realmente crea el array indicando un tamao, Cuando se usa neW es cuando se reser(a el espacio
necesario en memoria, Un array no iniciali0ado es un array null )jemplo8
int notasPQ% //ser4a v%lido tambi5n int[] notas;
notas ' ne0 int&('/ //indica /ue el array constar% de tres
//valores de tipo int
//Tambi5n se puede hacer todo a la ve)
//int notas[]=new int[&];
)n el ejemplo anterior se crea un array de tres enteros con los tipos b!sicos se crea en
memoria el array y se iniciali0an los (alores* los n/meros se inician a D",
.os (alores del array se asignan utili0ando el ndice del mismo entre corchetes8
notasP,Q'.%
#ambi1n se pueden asignar (alores al array en la propia declaracin8
int notasPQ ' R.+ 6+ KT%
int notas,PQ' ne0 int&' R.+6+KT%//"/uivalente a la anterior
)sto declara e iniciali0a un array de tres elementos, )n el ejemplo lo que significa es que
notasXDY (ale L* notasX6Y (ale Z y notasX5Y (ale [,
)n +a(a como en otros lenguajes" el primer elemento de un array es el cero, )l primer elemento del
array notas* es notasXDY, Se pueden declarar arrays a cualquier tipo de datos enteros* booleanos*
doubles* ,,, e incluso objetos",
.a (entaja de usar arrays (ol(iendo al caso de las notas" es que gracias a un simple bucle $or se
puede rellenar o leer f!cilmente todos los elementos de un array8
//Calcular la media de las -. notas
suma'0%
$or %int i'0%iN'-6%i//$!
suma/'notaPiQ%
#
media'suma/-.%
- un array se le puede iniciali0ar las (eces que haga falta8
int notasPQ'ne0 notasP-)Q%

notas-ne0 notas&45'/
%ero hay que tener en cuenta que el segundo neW hace que se pierda el contenido anterior,
Aealmente un array es una referencia a (alores que se almacenan en memoria mediante el operador
neW* si el operador ne0 se utili0a en la misma referencia* el anterior contenido se queda sin
referencia y* por lo tanto se pierde,
Un array se puede asignar a otro array si son del mismo tipo"8
int notasPQ%
int eMemploPQ'ne0 int&-.'/
notas'eMemplo%
)n el /ltimo punto* notas equi(ale a ejemplo, )sta asignacin pro(oca que cualquier
cambio en notas tambi1n cambie el array ejemplos, )s decir esta asignacin anterior* no
copia los (alores del array* sino que notas y ejemplo son referencias al mismo array,
)jemplo8
int notasPQ'R(+(+(T%
int eMemploPQ'notas/
eMemplo' notas%
ING FERNANDO MENDOZA APAZA
1#
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
eMemploP0Q'.%
System.out.println(notasP0Q$%//"scribir% el n6mero 7
arrays multidimensionales
.os arrays adem!s pueden tener (arias dimensiones, )ntonces se habla de arrays de
arrays arrays que contienen arrays" )jemplo8
int notasPQPQ%
notas es un array que contiene arrays de enteros
notas ' neL intP(QP-,Q%//notas est= compuesto por ( arrays
//de -, enteros cada uno
notasP0QP0Q'K%//el primer valor es 0
%uede haber m!s dimensiones incluso notasXGYX5YXZY", .os arrays multidimensionales
se pueden iniciali0ar de forma m!s creati(a incluso, )jemplo8
int notasPQPQ'ne0 int&5'&'///Uay * arrays de enteros
notasP0Q'ne0 int&-00'/ //El primer array es de -00 enteros
notasP-Q'ne0 int&,(0'/ //El segundo de ,(0
notasP,Q'ne0 int&100'/
notasP(Q'ne0 int&-00'/
notasP1Q'ne0 int&,00'/
Eay que tener en cuenta que en el ejemplo anterior* notasXDY es un array de 6DD
enteros, $ientras que notas* es un array de F arrays de enteros,
Se pueden utili0ar m!s de dos dimensiones si es necesario,
longitud de un array
.os arrays poseen un m1todo que permite determinar cu!nto mide un array, Se trata de
lengt+ )jemplo continuando del anterior"8
S*stemoutprintln%notas.lengt+(% //Sale *
S*stemoutprintln%notas&4'.lengt+(% //Sale 100
la clase Vrrays
)n el paquete javautils se encuentra una clase est!tica llamada Arra*s, Una clase
est!tica permite ser utili0ada como si fuera un objeto como ocurre con .at+", )sta
clase posee m1todos muy interesantes para utili0ar sobre arrays,
Su uso es
Arra*s.m5todoar#umentos!;
)ll
%ermite rellenar todo un array unidimensional con un determinado (alor, Sus
argumentos son el array a rellenar y el (alor deseado8
int valores&'-ne0 int&46'/
Arra*sfll(valores+H-$%//Dodo el array vale H-
#ambi1n permite decidir desde que ndice hasta qu1 ndice rellenamos8
Arra*s.fll(valores+*+.+H-$%//>el elemento * al 7 valdr=n H-
ING FERNANDO MENDOZA APAZA
18
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
equals
Compara dos arrays y de(uel(e true si son iguales, Se consideran iguales si son del
mismo tipo* tamao y contienen los mismos (alores,
sort
%ermite ordenar un array en orden ascendente, Se pueden ordenar slo una serie de
elementos desde un determinado punto hasta un determinado punto,
int xPQ'R1+*+,+(+6+.+,+(+K+*T%
Arra*ssort(x$%//Estar= ordenado
Arra*s.sort(x+,+*$%//Wrdena del ,X al 89 elemento
binar*Searc+
%ermite buscar un elemento de forma ultrarr!pida en un array ordenado en un array
desordenado sus resultados son impredecibles", Ce(uel(e el ndice en el que est!
colocado el elemento, )jemplo8
int xPQ'R-+,+(+1+*+)+6+.+K+-0+--+-,T%
Vrrays.sort(x$%
System.out.println(Vrrays.&inarySearc8(x+.$$/::>a 6
el m;todo System.arraysCopy
.a clase System tambi1n posee un m1todo relacionado con los arrays* dicho m1todo
permite copiar un array en otro, Aecibe cinco argumentos8 el array que se copia* el
ndice desde que se empie0a a copia en el origen* el array destino de la copia* el ndice
desde el que se copia en el destino* y el tamao de la copia n/mero de elementos de la
copia",
int unoPQ'R-+-+,T%
int dosPQ'R(+(+(+(+(+(+(+(+(T%
System.arraycopy(uno+ 0+ dos+ 0+ uno.lengt8$%
$or (int i'0%iN'.%i//$R
System.out.print(dosPiQ/Y Y$%
T //Sale --,((((((
clase String
%ara +a(a las cadenas de texto son objetos especiales, .os textos deben manejarse
creando objetos de tipo String, )jemplo8
String texto- ' Zrue&a de texto"#%
.as cadenas pueden ocupar (arias lneas utili0ando el operador de concatenacin :+;,
String texto, '#Este es un texto 9ue ocupa /
;varias lneas+ no o&stante se puede /
per@ectamente encadenar#%
#ambi1n se pueden crear objetos String sin utili0ar constantes entrecomilladas* usando
otros constructores8
c+ar&' pala&ra ' R[Z4+4a4+4l4+4&4+4r4+4a4T%//Vrray de c8ar
String cadena ' ne0 String(pala&ra$%
b*te&' datos ' RK6+K.+KKT%
ING FERNANDO MENDOZA APAZA
1$
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
String codifcada ' ne0 String (datos+ ..*K\-#$%
)n el /ltimo ejemplo la cadena codi8cada se crea desde un array de tipo byte que
contiene n/meros que ser!n interpretados como cdigos Unicode, -l asignar* el (alor
LLF[\6 indica la tabla de cdigos a utili0ar,
comparacin entre o&Metos String
.os objetos String no pueden compararse directamente con los operadores de
comparacin, )n su lugar se deben utili0ar estas expresiones8
cadena1'equalscadena2", )l resultado es true si la cadena6 es igual a la cadena5,
-mbas cadenas son (ariables de tipo String
cadena1'equals<gnoreCasecadena2", Como la anterior* pero en este caso no se tienen
en cuenta may/sculas y min/sculas,
s1'compare=os2", Compara ambas cadenas* considerando el orden alfab1tico, Si la
primera cadena es mayor en orden alfab1tico que la segunda de(uel(e 6* si son iguales
de(uel(e D y si es la segunda la mayor de(uel(e J6, Eay que tener en cuenta que el orden no
es el del alfabeto espaol* sino que usa la tabla -SC''* en esa tabla la letra 9 es mucho mayor
que la o,
s1'compare=o<gnoreCases2", 'gual que la anterior* slo que adem!s ignora las
may/sculas disponible desde +a(a 6,5"
String.valueW@
)ste m1todo pertenece no slo a la clase String* sino a otras y siempre es un m1todo que
con(ierte (alores de una clase a otra, )n el caso de los objetos String* permite con(ertir
(alores que no son de cadena a forma de cadena, )jemplos8
String numero ' String.valueW@(-,(1$%
String @ec8a ' String.valueW@(neL >ate($$%
)n el ejemplo se obser(a que este m1todo pertenece a la clase String directamente* no
hay que utili0ar el nombre del objeto creado como se (er! m!s adelante* es un m1todo
est!tico",
m;todos de las varia&les de las cadenas
Son m1todos que poseen las propias (ariables de cadena, %ara utili0arlos basta con
poner el nombre del m1todo y sus par!metros despu1s del nombre de la (ariable String,
)s decir8 variableString.!todo"arg#entos$
lengt+
%ermite de(ol(er la longitud de una cadena el n/mero de caracteres de la cadena"8
String texto-'#Zrue&a#%
System.out.println(texto-.lengt8($$%//Escri&e )
concatenar cadenas
Se puede hacer de dos formas* utili0ando el m1todo concat o con el operador +,
)jemplo8
String s-'#Fuenos #+ s,'#das#+ s(+ s1%
s( ' s- / s,%
s1 ' s-.concat(s,$%
ING FERNANDO MENDOZA APAZA
20
PROGRAMACION DIGITAL II UNIVERSIDAD NACIONAL DEL CALLAO
ING FERNANDO MENDOZA APAZA
21

Potrebbero piacerti anche