259
1 Introducción Clase Principal { Método Principal () {....} Método1() {....} Método2() {....} : } Clase1 { Variables Clase1 Constructores Clase1 Métodos Clase1 } Clase2 { Variables Clase2 Constructores Clase2 Métodos Clase2 } Etc...

Clases Completas 1era parte (Vanny Smith)

Embed Size (px)

Citation preview

Page 1: Clases Completas 1era parte (Vanny Smith)

11

Introducción

Clase Principal{ Método Principal ()

{....} Método1() {....} Método2() {....} :

}

Clase1{ Variables Clase1 Constructores Clase1 Métodos Clase1

}

Clase2{ Variables Clase2 Constructores Clase2 Métodos Clase2

}

Etc...

Page 2: Clases Completas 1era parte (Vanny Smith)

22

Introducción

Clase Principal{ Método principal () {....} Método1() {....} Método2() {....} :}

Page 3: Clases Completas 1era parte (Vanny Smith)

33

Primer Programa en Java

class Saludo{ //Este programa imprime Bienvenidos a ING1310

public static void main(String[] args){

System.out.println("Bienvenidos a ING1310!");}

}

Page 4: Clases Completas 1era parte (Vanny Smith)

44

Primer Programa en Java

class Saludo{ public static void main(String[] args)

{System.out.println("Bienvenidos a

ING1310!");}

}

Clase Principal{ Método Principal () {....} Método1() {....}

}

...

Page 5: Clases Completas 1era parte (Vanny Smith)

55

Primer Programa en Java

class

Todos las instrucciones en Java deben estar contenidas en una clase.

Todo programa Java consiste en al menos una declaración de clase definida por el programador.

Page 6: Clases Completas 1era parte (Vanny Smith)

66

Primer Programa en Java

Saludo Este es el nombre de la clase. Se estila que los

nombres de las clases empiecen con mayúscula.

Debe consistir en letras, dígitos, underscores (_) y el signo $.

No debe comenzar con un dígito y no debe contener espacios.

Java distingue entre mayúsculas y minúsculas. Por ejemplo, no es lo mismo “Saludo” que ‘saludo’.

Page 7: Clases Completas 1era parte (Vanny Smith)

77

Primer Programa en Java

{}

El principio y el fin de cualquier sección en Java deben estar indicados por llaves.

En este caso tenemos dos secciones. La primera es la clase y la segunda es el método principal.class Saludo{ public static void main(String[] args)

{System.out.println("Bienvenidos a ING1310!");

}}

Page 8: Clases Completas 1era parte (Vanny Smith)

88

Primer Programa en Java

// Este programa..... Indica un comentario. Los comentarios son ignorados por el compilador. Usamos // si el largo del comentario es de menos de una línea. De lo contrario

podemos usar /* para indicar el principio del comentario y */ para indicar el final.

class Saludo{ /* Este programa imprime en pantalla el mensaje: Bienvenidos a ING1310 */

public static void main(String[] args){

System.out.println("Bienvenidos a ING1310!");}

}

Page 9: Clases Completas 1era parte (Vanny Smith)

99

Primer Programa en Java

public static void main(String[] args)

Este es el método principal. Este es el método que guía la ejecución del programa.

Típicamente, (el cuerpo de) un método está compuesto por una o más oraciones que son las que efectivamente ejecutan la tarea del método.

Más adelante veremos lo que significan las palabras y símbolos que forman el encabezado de este método.

Page 10: Clases Completas 1era parte (Vanny Smith)

1010

Primer Programa en Java

System.out.println("Bienvenidos a ING1310!"); Toda esta línea (hasta el punto y coma) es una oración.

println es un método que imprime en cualquier tipo de salida. Por ejemplo la pantalla del computador, una impresora etc. En este caso en pantalla aparecerá:

Bienvenidos a ING1310

Todas las oraciones en Java deben terminar con punto y coma, de lo contrario el programa tendrá un error y no podrá ser ejecutado.

Page 11: Clases Completas 1era parte (Vanny Smith)

1111

Primer Programa en Java

Veamos que pasa si :• Agregamos o quitamos espacios.

• Cambiamos mayúsculas por minúsculas.

• Cambiamos el nombre de la clase principal.

• Eliminamos el punto y coma.

Page 12: Clases Completas 1era parte (Vanny Smith)

1212

Como Imprimir en Pantalla

System.out.print(“...”); Imprime lo que está contenido entre “”.

System.out.print("Rojo");

System.out.print("Amarillo");

System.out.println(“...”); Imprime lo que está contenido entre “” y luego se posiciona en la siguiente línea.

System.out.println("Rojo");

System.out.println("Amarillo");

Qué imprime?

Qué imprime?

Page 13: Clases Completas 1era parte (Vanny Smith)

1313

Como Imprimir en Pantalla

Concatenar + Para escribir una oración que ocupa más de una línea podemos concatenar.

System.out.println( "Para imprimir una oración" +

" que ocupa más de una línea podemos concatenar");

Page 14: Clases Completas 1era parte (Vanny Smith)

1414

Como Imprimir en Pantalla

\n Para posicionarse en la siguiente línea de la pantalla

System.out.println("Hola,\nEnvíame la tarea.\n\n" + "Atte,\nVanny Smith");

Hola,Envíame la tarea.

Atte,Vanny Smith

Page 15: Clases Completas 1era parte (Vanny Smith)

1515

Como Imprimir en Pantalla

Escriban un programa que imprima en pantalla:

Hola a todos, Hoy no habrá clases.

Atte. Jorge Salas.

Page 16: Clases Completas 1era parte (Vanny Smith)

1616

Identificadores

Nombres que identifican a los elementos del programa:• Métodos

• Clases

• Variables

Los identificadores se construyen con:

• Letras (mayúsculas y minúsculas).

• Dígitos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

• Símbolos de subrayado ( _ ) o peso ($)

• Sin embargo, el primer caracter no puede ser un dígito.

Page 17: Clases Completas 1era parte (Vanny Smith)

1717

Buenos identificadores

Auto explicativos. Ni muy cortos, ni muy largos. No pueden ser palabras reservadas del lenguaje:

abstract continue for new switch

boolean default goto null synchronized

break do if package this

byte double implements private threadsafe

byvalue else import protected throw

case extends instanceof public transient

catch false int return true

char final interface short try

class finally long static void

const float native super while

Page 18: Clases Completas 1era parte (Vanny Smith)

1818

Buenos identificadores

El lenguaje Java es case-sensitive.• Maximo y maximo son dos identificadores distintos.

El símbolo de subrayado (_) se emplea para dar mayor legibilidad a nombres compuestos por varias palabras.

Se acostumbra emplear letras minúsculas para nombrar a las variables.

Page 19: Clases Completas 1era parte (Vanny Smith)

1919

Identificadores: Ejemplos

Los siguientes son identificadores válidos en Java:

puntero EdadEmpleado

nombre_empleado i

TAMANO_STRING While

potencia10 Nombre

For nombre

iF Telefono

area Telefono_100

Page 20: Clases Completas 1era parte (Vanny Smith)

2020

Identificadores: Ejemplos

Los siguientes son identificadores inválidos:

1texto

nombre-empleado

while

Page 21: Clases Completas 1era parte (Vanny Smith)

2121

Tipos de datos en Java

Tipo Rango aprox.

int 2.000.000.000

short 30.000

long 9x1018

Tipo Rango Aprox.

float 3.4 x 1038

double 1.8 x 10308

Ocuparemos estos

•Enteros:

•Reales:

Page 22: Clases Completas 1era parte (Vanny Smith)

2222

Tipos de datos en Java

Caracteres:

char: ‘a’,‘z’,‘?’,‘$’,‘@’,‘G’,´7’, …; Los caracteres del código Unicode.

Booleano: boolean: true o false

Page 23: Clases Completas 1era parte (Vanny Smith)

2323

Variables

Los programas que hemos hecho hasta ahora sólo imprimen mensajes en pantalla. Pero

cuando programamos queremos ser capaces de almacenar datos, manipular datos, etc. Por

este motivo necesitamos variables.

Page 24: Clases Completas 1era parte (Vanny Smith)

2424

Variables

Propósito: poder almacenar datos.

Tienen un identificador asociado.

Debe tener un tipo de dato asociado.• Clase de dato que se almacenará en ella. Por

ejemplo, el dato puede ser de tipo int, double, char, etc.

Debe ser declarada previamente a su uso.

En resumen: Una variable es un objeto que almacena un dato, y tiene asociados un identificador y un tipo.

Page 25: Clases Completas 1era parte (Vanny Smith)

2525

Variables

¡Usa variables! Hace cálculos

intermedios.

class Doble{ public static void main(String[] args) { int numero; int doble;

numero = 4; doble = 2*numero;

System.out.println("El doble del número " + numero + " es: " + doble ); }}

Page 26: Clases Completas 1era parte (Vanny Smith)

2626

Variables

En el programa anterior introducimos tres conceptos nuevos:

1. Variables.2. Imprimir el valor de variables en

pantalla.3. Cálculos.

El doble del número 4 es: 8

Page 27: Clases Completas 1era parte (Vanny Smith)

2727

Variables

Forma genérica para declarar una variable:

<tipo> <identificador> [= <valorInicial>];

<tipo>: Tipo estándar (int, float, char, boolean, etc.).

<valor_inicial>: Puede corresponder a una constante del tipo entero, real, caracter, etc.

[]: significa opcional.

Page 28: Clases Completas 1era parte (Vanny Smith)

2828

Variables

Ejemplos de declaraciones de variables:

• int numero;

• char inicial;

Ejemplos de declaraciones de variables asociadas a un dato:

• int numero = 10;

• char inicial = ‘G';

Page 29: Clases Completas 1era parte (Vanny Smith)

2929

Variables

int num_alumnos;

Crea la variable num_alumos.

int num_alumnos = 55;

Crea la variable num_alumos y le asigna un valor. Se dice que estamos inicializando esta variable pues es la primera vez que le asignamos un valor.

El símbolo ‘=’ es el operador de asignación; no es una ecuación algebraica.

Page 30: Clases Completas 1era parte (Vanny Smith)

3030

Variables

int num_alumnos, num_salas;

Crea las variables num_alumnos y num_salas.

int num_alumnos = 55, num_salas = 20;

Crea las variables num_alumnos y num_salas y les asigna un valor.

Page 31: Clases Completas 1era parte (Vanny Smith)

3131

Variables

class Doble{

public static void main(String[] args) {

int numero; int doble;

numero = 4; doble = 2*numero;

System.out.println("El doble del número " + numero + " es: " + doble ); }}

Creamos variables

Les asignamos un valor

Page 32: Clases Completas 1era parte (Vanny Smith)

3232

Variables

Podemos cambiar el tipo de dato que almacena una variable siempre y cuando este cambio sea consistente.

Sin embargo si tenemos: double a = 2.5 ; int b = a;

Esto es ilegal en Java y produciría un error. El problema es cómo interpretar un número que tiene decimales como un entero.

Page 33: Clases Completas 1era parte (Vanny Smith)

3333

Variables

Pero si tenemos: int a = 2; double b = a;

Es válido, pues cualquier número que es int (número entero) puede ser interpretado también como double (número real). En este caso b= 2.0 .

Page 34: Clases Completas 1era parte (Vanny Smith)

3434

Variables

En Java las siguientes conversiones son válidas:

De a

short int, long, float, double

int long, float, double

long float, double

float double

Page 35: Clases Completas 1era parte (Vanny Smith)

3535

Variables

Si queremos hacer una conversión no válida en Java debemos anteponer paréntesis al valor o variable que vamos a convertir.

Ejemplo: int a = (int) 12.8 ; En este caso la variable a almacenará el valor

12. Ejemplo: double a = 2.4; int b = (int) a;

En este caso la variable b almacenará el valor 2, pero la variable a sigue teniendo el mismo valor 2.4.

Page 36: Clases Completas 1era parte (Vanny Smith)

3636

Variables

class Doble{

public static void main(String[] args) {

int numero; int doble;

numero = 4; doble = 2*numero;

System.out.println("El doble del número " + numero + " es: " + doble ); }}

1. Variables.2. Imprimir el valor de variables en pantalla.3. Cálculos.

Page 37: Clases Completas 1era parte (Vanny Smith)

3737

Variables: Imprimir

Para imprimir variables usamos los mismos métodos que usábamos para imprimir una oración:

System.out.print()

System.out.println()

Page 38: Clases Completas 1era parte (Vanny Smith)

3838

Variables: Imprimir

class Imprimir{ public static void main(String[] args) { int numero; System.out.println(numero); }}

Ejemplo: Imprimir una variable en pantalla

¿Cúal es el error aquí?

Page 39: Clases Completas 1era parte (Vanny Smith)

3939

Variables: Imprimir

class Imprimir{ public static void main(String[] args) { int peso = 50; double estatura= 1.70; System.out.println(“El paciente pesa ” + peso + “ kilos y mide ” + estatura + “ m.”); }}

Ejemplo: Imprimir una combinación de variables y oraciones.

Page 40: Clases Completas 1era parte (Vanny Smith)

4040

Variables: Imprimir

Hagan un programa que imprima en pantalla su edad.

Yo tengo 20 años

Page 41: Clases Completas 1era parte (Vanny Smith)

4141

Variables

class Doble{

public static void main(String[] args) {

int numero; int doble;

numero = 4; doble = 2*numero;

System.out.println(“El doble del número ” + numero + “ es: ” + doble ); }}

1. Variables.2. Imprimir el valor de variables en pantalla.3. Cálculos.

Page 42: Clases Completas 1era parte (Vanny Smith)

4242

Expresiones Aritméticas

Operadores binarios+ Suma- Resta* Multiplicación/ División

Operadores unitarios- Signo negativo+ Signo positivo

Page 43: Clases Completas 1era parte (Vanny Smith)

4343

Expresiones Aritméticas

Precedencia igual a la que conocemos:

•*, / antes que +,-

•De izquierda a derecha

•Para cambiar la precedencia usamos paréntesis.

•Los operadores unitarios +,- antes que todas las operaciones aritméticas

Page 44: Clases Completas 1era parte (Vanny Smith)

4444

Expresiones Aritméticas

Si tenemos +5*8 - (4 - 3). El orden sería:5*8 – (4 - 3)5*8 – 140 – 139

Recomendación: Siempre usen paréntesis.

Por ejemplo: ¿Cómo se interpreta 3/4*2?

Page 45: Clases Completas 1era parte (Vanny Smith)

4545

Expresiones Aritméticas

2 + 3 * 2 15 * 6

(2 + 3) * 2 -4

-2 / 3 3 * 4 * 5

3 / 4 – 7 3 * (4 - 5 )

5-7 1 + 15 - 6

2 - 1 + 3 1 + (2 - 7)

Page 46: Clases Completas 1era parte (Vanny Smith)

4646

Expresiones Aritméticas

Cuando tengo una expresión aritmética si no uso puntuación Java asume (y lo almacena) que el dato es de tipo int, de lo contrario asume que es de tipo double.

Ejemplo: 7 + 3.0

Asume y lo almacena como int

Asume y lo almacena como double

Page 47: Clases Completas 1era parte (Vanny Smith)

4747

Expresiones Aritméticas

Si hacemos operaciones con datos del mismo tipo el resultado va a ser del tipo de estos datos. Por ejemplo, si divido dos datos de tipo int el resultado va a ser de tipo int.Ejemplo: 7/3 = 2

Si combino enteros (por lo tanto int) con reales (por lo tanto double) el resultado será de tipo double.Ejemplo: 7.0/3 = 2.3333

Page 48: Clases Completas 1era parte (Vanny Smith)

4848

Expresiones Aritméticas

Ejemplos:7/4 = ?7/4 = ?

7/2.0 = ?7/2.0 = ?

-7 + 4 = ? -7 + 4 = ?

3.0 + 4 = ?3.0 + 4 = ?

(-3)/(-4) = ?(-3)/(-4) = ?

6/18 = ?6/18 = ?

Page 49: Clases Completas 1era parte (Vanny Smith)

4949

Expresiones Aritméticas

¿Qué pasa si tenemos una expresión más larga?Por ejemplo: 3/2 + 4.0*(5 - 4.3)

Java hace las conversiones paso a paso según corresponda.

Page 50: Clases Completas 1era parte (Vanny Smith)

5050

Expresiones Aritméticas

En el ejemplo: 3/2 + 4.0*(5 - 4.3)

3/2 + 4.0*0.7

1 + 4.0*0.7

1 + 2.8

3.8

Page 51: Clases Completas 1era parte (Vanny Smith)

5151

Expresiones Aritméticas

4 + 5/2.0 = ?

4.0 + 5/2 = ?

8 + 7/2*5.0 = ?

5/6-6*2/15 = ?

Page 52: Clases Completas 1era parte (Vanny Smith)

5252

Expresiones Aritméticas

También podemos usar un cast, el cual tiene mayor precedencia que *, / .

Se le aplica al valor que está a la derecha. Si queremos que el cast se aplique a más de

un valor podemos usar paréntesis.

Ejemplos:(int)4.5 + 3 = ?(double)(1/2) = ?(double)(3/2 + 1) + 1 = ?

Page 53: Clases Completas 1era parte (Vanny Smith)

5353

Expresiones Aritméticas

Módulo m%n• Es el resto de la división de m divido por n.

• Útil para cuando queremos saber si un número es divisible por otro, pues el resto es cero.

• Tiene la misma precedencia que *, /

• Si m o n son negativos entonces se calcula l m l % l n l y se conserva el signo de m.

Ejemplos7%3 = 1

4%2 = 0 -13%7 = -6

13%-7 = 6

Page 54: Clases Completas 1era parte (Vanny Smith)

5454

Expresiones Aritméticas

Precedencia hasta ahora( )  cast *  /  % +  -

Le podemos asignar el valor de una expresión aritmética a una variable.

¿Qué pasa si declaramos a la variable a como un int?

class Ejemplo{ public static void main(String[] args) { double a; a = 6 + 4.0*3; System.out.println(a); }}

Page 55: Clases Completas 1era parte (Vanny Smith)

5555

Expresiones Aritméticas

En una expresión aritmética también podemos usar otras variables.

El valor de las variables que están en el lado derecho del signo = no cambiarán su valor.

Ejemplos:• a = b*3;

• a = b;

• a = (int)*12.2 – c*b;

• b = a*5-4;

Page 56: Clases Completas 1era parte (Vanny Smith)

5656

Expresiones Aritméticas

1. Variables 2. Imprimir el valor de variables en pantalla.3. Cálculos.

class Doble{

public static void main(String[] args) {

int numero; int doble;

numero = 4; doble = 2*numero;

System.out.println(“El doble del número ” + numero + “ es: ” + doble ); }}

Page 57: Clases Completas 1era parte (Vanny Smith)

5757

Expresiones Aritméticas

Finalmente, tomemos el ejemplo y veamos que pasa con las variables y las expresiones aritméticas.

int numero; ?

int doble; ?

numero = 4; ?

doble = 2*numero; ?

Page 58: Clases Completas 1era parte (Vanny Smith)

5858

Expresiones Aritméticas: char

Los char son tipos de datos que nos permiten representar los caracteres que conocemos: las letras (mayúsculas y minúsculas), los dígitos, los símbolos etc.

Estos se representan con bits. Usamos 16 bits para representar cada carácter (216= 65536).

Por ejemplo ‘B’ se representa como:0000 0000 0100 0010 = ?

Page 59: Clases Completas 1era parte (Vanny Smith)

5959

Expresiones Aritméticas: char

Si tenemos int a= ‘B’ ;Java guardará el valor numérico correspondiente a ‘B’ en la variable a.

Lo contrario también es posible. Pero, ¿Qué creen que pasará si: char c = 70; ? char c = ‘7’; ?

Podemos ir de char a int, long , float y double, pero no podemos tratar de asignarle un valor numérico a una variable de tipo char.

char c = ‘B’; c = c+1;

a ?

Esto produce un error

Page 60: Clases Completas 1era parte (Vanny Smith)

6060

Expresiones Aritméticas: char

En Unicode, los códigos de las letras del alfabeto son sequenciales tanto para mayúsculas como para minúsculas.

También son sequenciales los códigos de los dígitos.

Por ejemplo:• El valor numérico de ‘A’ es 65, de ‘B’ es 66, de ‘C’ es

67 etc.

• El valor numérico de ‘a’ es 97, de ‘b’ es 98, de ‘c’ es 99 etc.

Page 61: Clases Completas 1era parte (Vanny Smith)

6161

Expresiones Aritméticas: char

char c = ‘a’ + 1; ?

char c = (char)(‘a’ + 1); ?

int a;char c;c= ‘9’;a = c – ‘1’; a = c – 1 ;

a = ‘A’ – ‘B’;

?

?

?

Page 62: Clases Completas 1era parte (Vanny Smith)

6262

Expresiones Aritméticas: char

Char

Dec

blank

32

! 33

” 34

# 35

$ 36

% 37

& 38

’ 39

( 40

) 41

* 42

Char

Dec

0 48

1 49

2 50

3 51

4 52

5 53

6 54

7 55

8 56

9 57

: 58

Char

Dec

@ 64

A 65

B 66

C 67

D 68

E 69

F 70

G 71

H 72

I 73

Z 90

Char

Dec

a 97

b 98

c 99

d 100

e 101

f 102

g 103

h 104

i 105

z 122

{ 123

Page 63: Clases Completas 1era parte (Vanny Smith)

6363

Ejemplo: De millas a kilómetros

Hagan un programa que:1. Cree dos variables, una llamada millas y otra

llamada kilómetros.2. Asignenle el valor 2 a la variable millas.3. kms = millas * 1.609.4. Finalmente impriman en pantalla el equivalente a

kilómetros usando las variables como argumentos de System.out.println()

Page 64: Clases Completas 1era parte (Vanny Smith)

6464

Ejemplo: De millas a kilómetros

class OperacionesBasicas0{

public static void main(String[] args) {

double millas, kms;millas = 2;

kms = millas * 1.609;System.out.println( millas + “ millas equivalen a ”

+ kms + “ kilómetros.”); }}

Page 65: Clases Completas 1era parte (Vanny Smith)

6565

Ejemplo: Area de un círculo

class Ejemplo {

public static void main(String[] args) {

double pi = 3.1415;double radio, area;

radio = 2;

area = pi * radio * radio; System.out.println("El area de un circulo de radio " +radio+ ": es " + area); }}

Page 66: Clases Completas 1era parte (Vanny Smith)

6666

Métodos Math

En Java existe una clase llamada Math que tiene una serie de métodos que nos sirven para calcular la raíz cuadrada, el valor absoluto etc.

Estos métodos reciben un argumento y devuelven un valor.

Por ejemplo: a = Math.abs(-3);• El argumento es -3.

• Retorna 3, este valor es almacenado en la variable a.

Page 67: Clases Completas 1era parte (Vanny Smith)

6767

Métodos Math

Math.abs• Retorna el valor absoluto de una expresión.

• El tipo de valor que retorna es el mismo tipo que el del argumento, el cual puede ser de cualquier tipo.

• Por ejemplo, si el argumento es de tipo double el valor que retorna también es de tipo double.

• Si el argumento es de un rango menor que int (por ejemplo short), retornará un valor de tipo int.

class Ejemplo { public static void main(String[] args) { double b =-3; int a = Math.abs(b); System.out.println(a); }}

¿Qué pasara?

Page 68: Clases Completas 1era parte (Vanny Smith)

6868

Métodos Math

Math.sqrt• Retorna la raíz cuadrada positiva del argumento, el

cual puede ser de cualquier tipo.

• Siempre retorna un valor de tipo double.

• Si el argumento es negativo retornará NaN (not a number)

• Ejemplo : Math.sqrt(4) 2.0

Page 69: Clases Completas 1era parte (Vanny Smith)

6969

Métodos Math

Math.pow• Calcula ab, donde a y b son los argumentos.

• Ejemplo: Math.pow(4,10).

• Siempre retorna un valor de tipo double.

int a = Math.pow(2,4); ¿Problema? double b = Math.pow(-5, 0.5);¿Problema?

Page 70: Clases Completas 1era parte (Vanny Smith)

7070

Métodos Math

class Ejemplo

{

public static void main(String[] args)

{

double a = 3, b = -0.5;

double c = Math.abs(b);

System.out.println(“ El valor absoluto de ”+b+ “es ”+c);

double d = Math.sqrt(a);

System.out.println(“La raiz cuadrada de ”+a+ “es ”+d);

double e = Math.pow(a,b);

System.out.println(a + “elevado a ”+b+ “es igual a ”+e);

}

}

Page 71: Clases Completas 1era parte (Vanny Smith)

7171

Expresiones lógicas (booleanas)

Se emplea para dirigir al programa por un determinado flujo de ejecución, dependiendo de si la evaluación de una expresión lógica da verdadero o falso.

Una expresión lógica puede ser verdadera o falsa. Tenemos tipos de datos llamados boolean que pueden ser true o false.

Operadores relacionales o de comparación:

== Igual ( No es lo mismo que =)!= Distinto< Menor<= Menor o igual> Mayor>= Mayor o igual

Page 72: Clases Completas 1era parte (Vanny Smith)

7272

Expresiones lógicas (booleanas)

5 > 6 ?

7 == 8 ?

15 <= 6 ?

Pero recuerden que podemos crear variables de tipo boolean y por lo tanto podemos asignarle el valor de una expresión lógica a una variable de tipo boolean.

Page 73: Clases Completas 1era parte (Vanny Smith)

7373

Expresiones lógicas (booleanas)

class Ejemplo {

public static void main(String[] args) {

boolean a = 3 > 5;System.out.println(a);

}}

Page 74: Clases Completas 1era parte (Vanny Smith)

7474

Expresiones lógicas (booleanas)

Conectivos lógicos binarios:&& Conjunción (y)|| Disyunción (o)

Conectivos lógico unario:! Negación (no) 

Precedencia: ! && ||

¿Cúando a && b es verdadero?¿Cúando a || b es verdadero?

Page 75: Clases Completas 1era parte (Vanny Smith)

7575

Expresiones lógicas (booleanas)

class Ejemplo {

public static void main(String[] args) {

boolean a = 3 > 5;boolean b = 4 < 7;boolean c = a && b;boolean d = a || b;

System.out.println("c: " +c + "\nd: " + d);

}}

Page 76: Clases Completas 1era parte (Vanny Smith)

7676

Expresiones lógicas (booleanas)

Precedencia:< <= >= >== !=

!&&||

Asociatividad: De izquierda a derecha.

Page 77: Clases Completas 1era parte (Vanny Smith)

7777

Ejemplos: Expresiones booleanas

x (numero > 5) && !y

true (numero == 1)

!x 5 == 6

true || x 4 >= 2

false (4 % 2 == 0) && false

false && x && 3>4 !(1< 2)

Page 78: Clases Completas 1era parte (Vanny Smith)

7878

Expresiones lógicas (booleanas)

Si tenemos una mezcla de expresiones lógicas y aritméticas en una expresión, los operadores aritméticos siempre tienen precedencia.

Por ejemplo: 2.0 + 3 > 4.5*1 2.0 +3 > 4.5 5.0 > 4.5

true

Page 79: Clases Completas 1era parte (Vanny Smith)

7979

Expresiones lógicas (booleanas)

La precedencia de todos los operadores

( ) 

! -

*  /  %

+  -

<  <=  >= > 

== !=

&&

||

=

Lo mejor es SIEMPRE usar paréntesis

Page 80: Clases Completas 1era parte (Vanny Smith)

8080

Expresiones lógicas (booleanas)

class Ejemplo

{

public static void main(String[] args)

{

boolean a =((3+7) >= (1/2 + 2*20/4)) && (true || !((3<5)==(4!=3)));

System.out.println(a);

}

}

¿Qué imprime?

Page 81: Clases Completas 1era parte (Vanny Smith)

8181

Expresiones lógicas (booleanas)

Del ejemplo anterior podemos ver que:• Valores de cualquier tipo pueden ser comparados,

excepto por los de tipo boolean. Booleans sólo se pueden comparar con booleans.

En el ejemplo teníamos: (3<5)==(4!=3)También podríamos tener: 1/2== 3/4Pero no podemos tener: 1/2== 4!=3

Page 82: Clases Completas 1era parte (Vanny Smith)

8282

Expresiones lógicas (booleanas)

También podemos incluir datos de tipo char en expresiones lógicas.

Cuando comparamos dos char, lo que vamos a comparar es si un char precede a otro según el código que tenga en Unicode.

Por lo tanto, según lo que ya hemos visto:‘A’ < ‘B’ < ‘C’ < ‘D’....‘a’ < ‘b’ < ‘c’ < ‘d’ ...‘0’ < ‘1’ < ‘2’ < ‘3’ ....

Page 83: Clases Completas 1era parte (Vanny Smith)

8383

Expresiones lógicas (booleanas)

También podemos mezclar datos de tipo char con tipos de datos numéricos (por ejemplo int o double).

Por ejemplo, podemos decirboolean a = 3 < ‘b’;

Page 84: Clases Completas 1era parte (Vanny Smith)

8484

Leer desde la pantalla

Hasta ahora los programas que hacíamos no interactuaban con un posible usuario del programa.

Por ejemplo en el programa:class OperacionesBasicas0{ public static void main(String[] args) { double millas, kms; millas = 2; kms = millas * 1.609; System.out.println( millas + “ millas equivalen a ”

+ kms + “ kilómetros.”); }}

Page 85: Clases Completas 1era parte (Vanny Smith)

8585

Leer

Si queremos saber a cuantos kilómetros equivalen 5 millas tendríamos que cambiar directamente el programa y decir millas = 5;

Sin embargo el usuario del programa no debería tener que él/ella cambiar el código, sino que deberíamos ser capaces de preguntarle a él/ella que es lo que quiere saber. En este caso, a cuantos kilómetros equivalen x millas, donde x va a ser proporcionado por el usuario.

Page 86: Clases Completas 1era parte (Vanny Smith)

8686

Leer

Leer valores directamente con las herramientas que ofrece Java es muy complicado, por lo que vamos a crear una clase llamada In (está basada en la del profesor John Carter) y la vamos a usar para leer los datos que entregue el usuario.

Esta clase tiene los siguientes métodos:readInt In.readIntreadDouble In.readDoublereadChar In.readCharreadLine In.readLinereadFloat In.readFloat

In.readInt

Indica la clase

Indica el métodode la clase

Page 87: Clases Completas 1era parte (Vanny Smith)

8787

Leer

class Ejemplo{ public static void main(String[] args) { double millas, kms;

System.out.println("Ingrese el número de millas");

millas = In.readDouble(); kms = millas * 1.609;

System.out.println( millas + " millas equivalen a " + kms + " kilómetros."); }}

Page 88: Clases Completas 1era parte (Vanny Smith)

8888

Comando if

if ( expresión-booleana ) {      Bloque de instrucciones}

Si la expresión es verdadera, se lleva a cabo el bloque de instrucciones.

Si el bloque de instrucciones es sólo una línea podemos omitir {}.

if ( expresión-booleana )       Instrucción

Page 89: Clases Completas 1era parte (Vanny Smith)

8989

Comando if

class Ejemplo {

public static void main(String[] args) {

int numero; System.out.println("Dime un número: "); numero = In.readInt();

if (numero < 0){

numero = -numero;} System.out.println("Valor absoluto: " +

numero); } }

Page 90: Clases Completas 1era parte (Vanny Smith)

9090

Comando if

if ( expresión-booleana ) {

Primer bloque de instrucciones} else {      Segundo bloque de instrucciones}

Si la expresión es verdadera, se lleva a cabo el primer bloque de instrucciones, y si no es verdadera entonces se lleva a cabo el segundo.

Page 91: Clases Completas 1era parte (Vanny Smith)

9191

Ejemplo: Par o impar

class Ejemplo {

public static void main(String[] args) {

int numero;

System.out.println("Dime un número: "); numero = In.readInt();

if (numero%2 == 0)System.out.println(“Es par");

else System.out.println ("Es impar");

} }

Page 92: Clases Completas 1era parte (Vanny Smith)

9292

Comando if

Hagan un programa que diga si un alumno aprobó un curso basado en las siguientes reglas:• Debe tener nota mayor o igual que 3.0 en el examen.

• El promedio entre el promedio de pruebas y el examen debe ser mayor que 4.0.

• Debe tener nota sobre 4.0 en (por separado):

- - promedio de las tareaspromedio de las tareas

- - promedio de los laboratoriospromedio de los laboratorios

- - promedio de las pruebaspromedio de las pruebas.. El programa debería pedirle al usuario que

ingrese lo que está en negrita.

Page 93: Clases Completas 1era parte (Vanny Smith)

9393

Comando if

class Ejemplo{ public static void main(String[] args) { double examen, prom_pruebas; double prom_tareas, prom_lab; System.out.println("Ingrese la nota del examen"); examen = In.readDouble(); System.out.println("Ingrese el promedio de las pruebas"); prom_pruebas = In.readDouble(); System.out.println("Ingrese el promedio de las tareas"); prom_tareas = In.readDouble(); System.out.println("Ingrese el promedio de los laboratorios"); prom_lab = In.readDouble();

Page 94: Clases Completas 1era parte (Vanny Smith)

9494

Comando if

double prueb_examen = (prom_pruebas + examen)/2; if (( examen >= 3.0) && (prom_pruebas > 4.0)&& (prom_tareas > 4.0) && (prom_lab > 4.0) && (prueb_examen > 4.0)) { System.out.println ("El alumno aprobó el curso"); }

else { System.out.println ("El alumno no aprobó el curso"); } }}

Page 95: Clases Completas 1era parte (Vanny Smith)

9595

Variación: if/else if/else

A veces tenemos más de dos opciones:

if ( expresión-booleana ) {      Bloque de instrucciones} else if ( expresión-booleana ) {      Bloque de instrucciones} else {      Bloque de instrucciones}

Permite escoger entre varias ramas. Esta opción nos permite ser más eficientes y hacer menos

comparaciones (cada if representa una comparación).

Page 96: Clases Completas 1era parte (Vanny Smith)

9696

Variación: if/else if/else

class Ejemplo { public static void main(String[] args) {

//El siguiente programa pide la nota de un

//alumno y le dice si aprobó(>=4.0), aprobó destacado(>=5.5),

//reprobó(<4.0) o reprobó con derecho a examen recuperativo (>=3.8) double nota; System.out.println("Ingrese la nota");

nota= In.readDouble();

if (nota >= 5.5) System.out.println("El alumno aprobo en forma destacada");

else if (nota >= 4.0) System.out.println("El alumno aprobo"); else if (nota >= 3.8) System.out.println("El alumno reprobo con derecho al recuperativo");

else System.out.println("El alumno reprobo");

} }

Page 97: Clases Completas 1era parte (Vanny Smith)

9797

Variación: if/else if/else

class Ejemplo {

public static void main(String[] args) {

//El siguiente programa le pregunta a un//usuario cual es el numero de la rifa que compro//y le dice si se gano alguno de los tres premios//donde el premio mayor se lo lleva el que compro//el numero 123, el segundo el que compro el 326 // y el tercero el que compro el 784

int num_rifa;int premio_mayor = 123;

int segundo_premio = 326; int tercer_premio = 784;

Page 98: Clases Completas 1era parte (Vanny Smith)

9898

Variación: if/else if/else

System.out.println("Ingrese su numero de la rifa");num_rifa= In.readInt();

if (num_rifa == premio_mayor) System.out.println("Usted gano el premio mayor: un mercedes");

if (num_rifa == segundo_premio) System.out.println("Usted gano el segundo premio: un viaje a Europa");

if (num_rifa == tercer_premio) System.out.println("Usted gano el tercer premio: 100.000 pesos");

if (num_rifa != 123 && num_rifa != 326 && num_rifa != 784) System.out.println("Lo siento, no gano esta vez");

} }

Page 99: Clases Completas 1era parte (Vanny Smith)

9999

Variación: if/else if/else

Escriban nuevamente este programa de una forma más eficiente

class Ejemplo { public static void main(String[] args) { //El siguiente programa le pregunta a un //usuario cual es el numero de la rifa que compro //y le dice si se gano alguno de los tres premios //donde el premio mayor se lo lleva el que compro //el numero 123, el segundo el que compro el 326 // y el tercero el que compro el 784

int num_rifa; int premio_mayor = 123; int segundo_premio = 326; int tercer_premio = 784;

Page 100: Clases Completas 1era parte (Vanny Smith)

100100

Variación: if/else if/else

System.out.println("Ingrese su numero de la rifa"); num_rifa= In.readInt();

if (num_rifa == premio_mayor) System.out.println("Usted gano el premio mayor: un mercedes");

else if (num_rifa == segundo_premio) System.out.println("Usted gano el segundo premio: un viaje a Europa");

else if (num_rifa == tercer_premio) System.out.println("Usted gano el tercer premio: 100.000 pesos"); else System.out.println("Lo siento, no gano esta vez");

} }

Page 101: Clases Completas 1era parte (Vanny Smith)

101101

Variación: if/else if/else

IMPORTANTE: un else siempre se asocia con el último if, a menos que usemos llaves {}.

La indentación no cambia el hecho de que un else siempre se asocia al último if. En este ejemplo, la indentación que usamos hace parecer que el else se está asociando al primer if.

if ( a < 5) if (a < 3) System.out.println (“Si”);else System.out.println(“No”);

Si a = 6¿Qué imprime esteprograma?

Page 102: Clases Completas 1era parte (Vanny Smith)

102102

Variación: if/else if/else

if ( a < 5){ if (a < 3) System.out.println (“Si”);}else System.out.println(“No”);

Si a = 6¿Qué imprime esteprograma?

Page 103: Clases Completas 1era parte (Vanny Smith)

103103

Variación: if/else if/else

En el primer ejemplo, podríamos haber usado {} para quede más claro a que if el else está haciendo referencia:

if ( a < 5) if (a < 3) System.out.println (“Si”);else System.out.println(“No”);

es equivalente

a

if ( a < 5){ if (a < 3) System.out.println (“Si”); else System.out.println(“No”); }

Pero también podemos indentarpara que visualmente quede claroa que if hace referencia el else.

(Estos 3 ejemplos son equivalentes)

if ( a < 5) if (a < 3) System.out.println (“Si”); else System.out.println(“No”);

Page 104: Clases Completas 1era parte (Vanny Smith)

104104

Strings

Hasta ahora hemos usado los tipos primitivos de datos (int, short, long, double, char etc) que en total son 8. Sin embargo, existen también tipos de objetos.

Java nos permite crear objetos de tipo String.

Un objeto String representa una cadena alfanumérica.

¿Para qué sirve?• Para hacer programas que manipulen texto.

Page 105: Clases Completas 1era parte (Vanny Smith)

105105

Strings

Declaración de un string: String s;

Declaración e inicialización de un string: String s = "Este es el valor inicial";

Crear un string a partir de otros: String s1 = "Hola, "; String s2 = " ¿qué tal?"; String s3 = s1 + s2;

Page 106: Clases Completas 1era parte (Vanny Smith)

106106

Strings

Cuando creamos una variable de tipo String lo que estamos creando es una referencia.

String s;

Cuando le asignamos un valor a una variable String estamos creando (recién) un objeto de tipo String, la variable s es una referencia al objeto que creamos.

s = “Hola”;

s

s“Hola”

Page 107: Clases Completas 1era parte (Vanny Smith)

107107

String

Con referencia queremos decir que s está apuntando a la ubicación en la memoria en la que se encuentra el objeto “Hola”.

En cambio cuando una variable es de uno de los tipos primitivos en la variable guardamos el valor que le asignamos.

int a = 3;

String s = “Hola”;

a3

s“Hola”

Page 108: Clases Completas 1era parte (Vanny Smith)

108108

Strings

Si tenemos:String s1 = “Hola”;

String s2 = s1;

Lo que estamos diciendo con = es que los dos hacen referencia al mismo objeto, es decir, ambos apuntan al mismo objeto.

s1“Hola”

s2

Page 109: Clases Completas 1era parte (Vanny Smith)

109109

Strings

¿Qué imprime esto?

String s1 = "Blanco";String s2 = "Azul";s1 = s2;s2 = "Rojo";System.out.println(s1 + " " + s2);

¿Qué imprime esto?

int a = 1;int b = 2;a = b;b = 4;System.out.println(a + " " + b);

Page 110: Clases Completas 1era parte (Vanny Smith)

110110

Strings

Tomando en cuenta que las variables de tipo String son referencias, debemos entender a que nos referimos si preguntamos si:

s1 == s2

En este caso el valor de la expresión va a ser true si ambas apuntan (o hacen referencia) al mismo objeto, y false en caso contrario.

s1“Hola”

s2

Page 111: Clases Completas 1era parte (Vanny Smith)

111111

Strings

¿Cúal es el valor de a?String s1 = “Rojo”;

String s2 = “Rojo”;String s2 = “Rojo”;

boolean a = (s1==s2boolean a = (s1==s2););

Ambas variables s1 y s2 apuntan a objetos que son idénticos en su contenido pero eso no quiere decir que apunten al mismo objeto. En este caso:s s

“Rojo” “Rojo”Por lo tantoa es false

Page 112: Clases Completas 1era parte (Vanny Smith)

112112

Strings

Para comparar si dos objetos de tipo String son iguales en contenido Java provee el método equals.

Este método compara si dos Strings son iguales y retorna true si lo son y false si son diferentes.

La forma de llamar al método es la siguiente:s1.equals(s2)

Donde s1 y s2 son Strings.

Page 113: Clases Completas 1era parte (Vanny Smith)

113113

Strings

class EjemploString{ public static void main(String[] args) { String s1 = "Sol", s2 = "Luna";

boolean a;

a = s1.equals(s2); System.out.println(a); a = s2.equals("luna"); System.out.println(a);

a = s2.equals("Luna"); System.out.println(a);

a = s2.equals(" Luna"); System.out.println(a);

}}

falsefalsetruefalse

Page 114: Clases Completas 1era parte (Vanny Smith)

114114

Strings

Para comparar el orden lexicográfico (orden en el diccionario) de dos objetos de tipo String Java provee el método compareTo.

La forma de llamar al método es la siguiente:s1.compareTo(s2)

Donde s1 y s2 son Strings.

Este método compara cada carácter de ambos Strings, de izquierda a derecha. Se detiene cuando alguno de los dos Strings tiene un carácter diferente al otro o uno (o ambos) de ellos se termina.

Page 115: Clases Completas 1era parte (Vanny Smith)

115115

Strings

Para determinar el orden lexicográfico, las reglas son:• Mayúsculas antes que minúsculas (por ejemplo, ‘A’

antes que ‘a’)

• Espacio antes que las letras (por ejemplo tala antes que talar)

• ‘A’ antes que ‘B’ antes que ‘C’ antes que ‘D’ ….

s1.compareTo(s2)• Retorna 0 si ambos Strings son idénticos.

• Un número negativo si s1 está antes de s2.

• Un número positivo si s1 está después de s2

Page 116: Clases Completas 1era parte (Vanny Smith)

116116

Stringsclass Ejemplo{ public static void main(String[] args) { String s1 = "Luna", s2 = "Lunas";

int a; a = s1.compareTo(s2); System.out.println(a);

a = s1.compareTo("luna"); System.out.println(a); a = s1.compareTo(" Luna"); System.out.println(a); a = s1.compareTo("Lun"); System.out.println(a); a = s1.compareTo("Luce"); System.out.println(a);

}}

-1-3244111

Imprime

Page 117: Clases Completas 1era parte (Vanny Smith)

117117

Instrucción while

while ( expresión-booleana ) {      ...      Bloque de instrucciones      ...}

Realiza una tarea mientras ocurre una cierta condición.

Podemos hacer un programa que itere.

Page 118: Clases Completas 1era parte (Vanny Smith)

118118

Instrucción while

class Contar{

public static void main(String[] args) {

//Este programa cuenta de 1 a n//donde n es dado por el usuarioint n, max;

System.out.println("Hasta que numero quiere contar? ");max = In.readInt();n=1;while ( n <= max ) {

System.out.println(n);n=n+1;

}}

}

Page 119: Clases Completas 1era parte (Vanny Smith)

119119

Instrucción while

Al ejecutarse la instrucción while, se evalua la expresión booleana en paréntesis, y si su valor es true, se ejecuta la o las sentencias subordinadas.

Una vez hecho esto, la condición es reevaluada y se procede de la misma manera.

Cuando la condición se vuelve false, en la siguiente evaluación se dará la instrucción while por terminada.

Las instrucciones subordinadas al while pueden ser compuestas, es decir, otras instrucciones while, if, etc.

Page 120: Clases Completas 1era parte (Vanny Smith)

120120

Instrucción while

Cuando usamos esta instrucción es útil saber que:n=n+1 es equivalente a n++n=n-1 es equivalente a n--

En el ejemplo anterior, podríamos haber escrito el while de la siguiente forma

while ( n <= max ) {

System.out.println(n);n++;

}

Page 121: Clases Completas 1era parte (Vanny Smith)

121121

Instrucción while

class Ejemplo {

public static void main(String[] args) {

int numero; System.out.println("Dime un número: "); numero = In.readInt();

if (numero < 0){

numero = -numero;} System.out.println("Valor absoluto: " + numero);

} }

¿Cómo lo podemos mejorar para que el usuariopregunte cuantas veces quiera?

Page 122: Clases Completas 1era parte (Vanny Smith)

122122

Instrucción while

class Ejemplo { public static void main(String[] args) { int numero = 1;

while (numero != 0) { System.out.println("Dime un número, para terminar ingrese 0 "); numero = In.readInt(); if (numero!=0) { if (numero < 0) { numero = -numero; } System.out.println("Valor absoluto: " + numero); } } System.out.println("Adios"); } }

Page 123: Clases Completas 1era parte (Vanny Smith)

123123

Instrucción while

¿Por qué debemos inicializar numero? Cuidado con los ciclos infinitos. Ver ventajas de usar indentación.

class Ejemplo {public static void main(String[] args) {int numero = 1;while (numero != 0){System.out.println("Dime un número, para terminar ingrese 0 ");numero = In.readInt();if (numero!=0){if (numero < 0){numero = -numero;}System.out.println("Valor absoluto: " + numero);} System.out.println("Adios");} }

•¿Cúal llave falta?•¿Qué instrucciones están dentro del while?

Page 124: Clases Completas 1era parte (Vanny Smith)

124124

Instrucción while

Calculadora de promedios(Guía): recibe una lista de notas (para terminar escribir “-1”) e imprime su promedio.

A veces usamos ciclos anidados. Por ejemplo un while dentro de un while.• Números Pitagóricos: Escribir un programa que

determine si para un número cualquiera (a) existen otros dos números (b y c) tales que: a2 = b2 + c2

Page 125: Clases Completas 1era parte (Vanny Smith)

125125

Ejemplo: Números Pitagóricos

class Pitagoricos

{

public static void main(String[] args)

{

int a, b, c;

boolean solucion = false;

System.out.println("Ingrese a");

a=In.readInt();

b=1;

c=1;

Page 126: Clases Completas 1era parte (Vanny Smith)

126126

Ejemplo: Números Pitagóricos

while (b < a && solucion == false){

c=1;while(c<a && solucion == false){

if(a*a == b*b + c*c ){

System.out.println("b = "+b+" y c = "+c);

solucion = true;}c=c+1;

}b=b+1;

}

if (solucion==false)System.out.println("No existe descomposicion");

}

}

Page 127: Clases Completas 1era parte (Vanny Smith)

127127

Instrucción for

Ocurre algo al inicio (inicialización). Mientras ocurre algo (expresión-booleana)

ejecuta el bloque de instrucciones. Al final de cada ciclo realiza una acción

(actualización).

for ( inicialización ; expresión-booleana ; actualización )

{      ...      Bloque de instrucciones      ...}

Page 128: Clases Completas 1era parte (Vanny Smith)

128128

Instrucción for

int i=0;

while (i<10)

{

System.out.println(i);

i++;

}

for(int i=0; i<10; i++)System.out.println(i);

int i;for(i=0; i<10; i++)

System.out.println(i);

Page 129: Clases Completas 1era parte (Vanny Smith)

129129

Instrucción for

Útil en ciclos en que se conoce de antemano el número de iteraciones a realizar.

Contar de 0 a 99:

¿Contar de 100 a 1?

for (int i = 0 ; i < 100 ; i++)        System.out.println("i = " + i);

Page 130: Clases Completas 1era parte (Vanny Smith)

130130

Instrucción for: Ejemplo1

class Ejemplo{

public static void main(String[] args) {

int i;//Cuenta hasta 10for (i = 0 ; i < 10 ; i++)

System.out.println("i = " + i);

int rep;//multiplos de 5 en forma ascendente//hasta 100System.out.println("Estos son los multiplos de 5 hasta 100 ");for (rep=0 ; rep<=100 ; rep=rep+5)

System.out.println(rep);

//Multiplos de 5 en forma descendente//desde 100System.out.println("Estos son los multiplos de 5 desde 100 ");for (rep=100 ; rep>=0 ; rep=rep-5)

System.out.println(rep); }}

Page 131: Clases Completas 1era parte (Vanny Smith)

131131

Instrucción for: Ejemplo2

class Ejemplo{

public static void main(String[] args) {

double base, resultado;int i,exponente;

System.out.println("Ingrese el valor de x: ");base = In.readDouble();System.out.println("Ingrese el valor de n: ");exponente = In.readInt();

resultado = 1;for(i = 1; i <= exponente ; i++)

resultado = resultado*base;

System.out.println("Resultado de " + base + "^" + exponente + " : " + resultado);

}}

Page 132: Clases Completas 1era parte (Vanny Smith)

132132

Instrucción for

Puedo crear expresiones más complejas.Por ejemplo:

for(i=2, j=3; i<=20 && j <=30; i=i+2, j=j+3)System.out.println(i + “ ” + j);

Esto imprime:2 3

4 6

6 9

8 12

10 15

12 18

14 21

16 24

18 27

20 30

Page 133: Clases Completas 1era parte (Vanny Smith)

133133

Instrucción for

for ( inicialización ; expresión-booleana ; actualización )

Por ejemplo:for(i=1, j=0, k=3; i<=2 && j<=5 && k<10; i++, j++, k++)

System.out.println(i+ “ ”+ j + “ ” + k);

Imprime1 0 32 1 4

Aquí puedo agregar las expresiones que quiera pero debo separar con comas.

Page 134: Clases Completas 1era parte (Vanny Smith)

134134

Arreglos

Los arreglos son estructuras de datos complejas (en el sentido de que no son atómicas)

Agrupan datos de un mismo tipo en particular, llamado el tipo base del arreglo.• El tipo base de un arreglo puede ser cualquiera de

los tipos primitivos de Java (int, double, float etc), incluso algunos tipos complejos (clases) como los String u otros arreglos.

Page 135: Clases Completas 1era parte (Vanny Smith)

135135

Arreglos: Declaración y Construcción

Declaración<tipo>[] <identificador>;

int[] a;

Construcción<identificador> = new <tipo>[<número-elementos>];

a = new int[20];

nombre

Arreglo

Page 136: Clases Completas 1era parte (Vanny Smith)

136136

Arreglos

La cantidad de elementos del tipo base que contiene el arreglo es fija: Debe especificarse al construirlo.

La sintaxis del lenguaje permite referirse a cada uno de los elementos que constituyen el arreglo empleando índices.

Los elementos del arreglo están numerados en forma jerárquica y consecutiva, empezando en 0.

10 21 32 83 23

0 1 2 3 n-1

Arreglo

valores

posición

Page 137: Clases Completas 1era parte (Vanny Smith)

137137

Arreglos: Declaración y Construcción

Declaración y Construcción<tipo>[] <identificador> = new <tipo>[<número-elementos>];

int[] a = new int[20];

Declaración y Construcción (con asignación)<tipo>[] <identificador> = {valor1, valor2, ...};

int[] edades = {17,19,21,20,18};

Page 138: Clases Completas 1era parte (Vanny Smith)

138138

Arreglos

La siguiente declaración:

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

es equivalente a:

String[] nombres;

nombres = new String[4];

nombres[0] = "Juan";

nombres[1] = "Pepe";

nombres[2] = "Pedro";

nombres[3] = "Maria";

Page 139: Clases Completas 1era parte (Vanny Smith)

139139

Arreglos

Declaración de un arreglo de 100 caracteres:

char[] B = new char[100];

Declaración e inicialización de un arreglo de 10 enteros:int[] C = { 2, 5, 8, 100, 1, 2, 100, 5, 5, 5 };

• Declaración e inicialización de un arreglo de 10 caracteres:char[] D = {'a','z','E','e',65,‘7','@','U','*',‘u'};

Asignando un valor a la sexta posición de un arreglo de enteros:A[5] = 200;

Page 140: Clases Completas 1era parte (Vanny Smith)

140140

Arreglos

Como dijimos antes, una vez que creamos un arreglo su cantidad de elementos (o tamaño) es fijo.

Para obtener el tamaño de un arreglo escribimos:

<identificador>.length

Por ejemplo, si tenemos:double[] peso = new double[25];int a = peso.length;

En a guardamos el valor 25.

Page 141: Clases Completas 1era parte (Vanny Smith)

141141

Arreglos

Leyendo del usuario el contenido de un arreglo, mediante un ciclo for:

double[] A = new double[10]; int i;

for (i=0; i< A.length; i++) {

System.out.println("Dime un número?");A[i] = In.readDouble();

}

Noten que el contador i comienza en 0 y llega sólo hasta 9 (A.length – 1), dado que en los arreglos comezamos a contar desde 0. En este caso los 10 índices del arreglo van de 0 a 9.

Page 142: Clases Completas 1era parte (Vanny Smith)

142142

Arreglos

Mostrando un arreglo mediante un ciclo for:

for (i=0; i<A.length; i++)

System.out.println(A[i]);

Sumando dos elementos de un arreglodouble a = A[1] + A[3];

Page 143: Clases Completas 1era parte (Vanny Smith)

143143

Arreglos

Guía 3: Crear un arreglo con cinco elementos dados por el usuario. Luego intercambiar el primer elemento con el último. Finalmente, imprimir en pantalla los elementos del arreglo.

Escriba un programa que reciba las notas de un curso que tiene como máximo 40 alumnos. Una vez recibidas las notas debe dar la siguiente información:• La nota máxima

• El número de notas bajo 4

• El promedio

• La diferencia entre la nota máxima y la mínima

Page 144: Clases Completas 1era parte (Vanny Smith)

144144

Arreglos

La solución para el segundo ejercicio que se dará a continuación no es la mejor, pues todo lo que se pide hacer (promedio, notas bajo 4, etc) se podría hacer de una sola vez, cuando el usuario ingresa los datos.

Page 145: Clases Completas 1era parte (Vanny Smith)

145145

Arreglos

class Ejemplo

{

public static void main(String[]args)

{

double[] notas = new double[40];

double max=0, min=7.0, suma=0, prom, diferencia;

int i=0;

int bajo_4=0, num_notas=0;

boolean terminar = false;

Page 146: Clases Completas 1era parte (Vanny Smith)

146146

Arreglos

while(terminar == false){

if(i == 40) { System.out.println("Ya no puede ingresar mas notas"+

" el maximo es 40"); terminar = true; } else {

System.out.println("Ingrese nota, para terminar ingrese -1"); notas[i]= In.readDouble();

if (notas[i] == -1) terminar = true;

else i++;

} } num_notas=i;

Page 147: Clases Completas 1era parte (Vanny Smith)

147147

Arreglos

//Ahora buscamos la nota máxima y la mínima //Fíjense que nuevamente usamos el contador i //por lo que debemos nuevamente inicializarlo en 0 for(i=0; i< num_notas; i++) { if (notas[i] < min) min = notas[i]; //Acá no usamos else pues puede ser //que todas las notas sean iguales en //cuyo caso min=max if (notas [i] > max) max = notas[i]; }

diferencia = max-min;

Page 148: Clases Completas 1era parte (Vanny Smith)

148148

Arreglos

//Notas bajo 4.0for(i=0; i< num_notas; i++){ if (notas[i] < 4.0) bajo_4++;}

//Promediofor(i=0; i< num_notas; i++){

suma= suma+notas[i];} prom= suma/num_notas;

Page 149: Clases Completas 1era parte (Vanny Smith)

149149

Arreglos

//Finalmente imprimimos todo, siempre y cuando se haya ingresado//al menos una notaif(notas[0]!=-1){

System.out.println("La nota maxima fue un "+ max);System.out.println("El promedio fue: "+ prom);System.out.println(bajo_4 + " notas estuvieron bajo 4.0");System.out.println("La diferencia entre la nota "+ "maxima y la minima fue: "+ diferencia);

}

else System.out.println("Adios");

}}

Page 150: Clases Completas 1era parte (Vanny Smith)

150150

Arreglos: Importante

El lenguaje Java controla la validez de los índices que se emplean para referenciar un arreglo.• La siguiente porción de código compila sin problemas (es

decir, sin errores sintácticos), pero se producirá un error en tiempo de ejecución al referenciar posiciones inexistentes del arreglo.

// Ejemplo de error por acceso fuera de rango a un arreglo// Posiciones con índices del 20 al 29 son inválidas.

int[] arreglo = new int[20]; for (i=0; i<30; i++) arreglo[i] = 0;

Mensaje ArrayIndexOutOfBoundsException

También es común cometer estos errores olvidando que las posiciones de los arreglos están numeradas a partir del índice cero.• En un arreglo de tamaño N, las posiciones van de 0 a N-1.

Page 151: Clases Completas 1era parte (Vanny Smith)

151151

Arreglos: Importante

Las dos siguientes notaciones son válidas y equivalentes para declarar un arreglo:

• int[] arreglo;

• int arreglo[];

No obstante, privilegiaremos utilizar la primera.

Page 152: Clases Completas 1era parte (Vanny Smith)

152152

Arreglos

Al igual que los Strings, los arreglos son objetos, por lo tanto cuando declaramos un arreglo

int[] peso;int[] peso;

Estamos creando la variable peso la cual es una referencia (apunta) a un arreglo de enteros. Sin embargo, hasta este momento no hemos creado un arreglo de enteros. peso

Page 153: Clases Completas 1era parte (Vanny Smith)

153153

Arreglos

Para crear un arreglo de 10 enteros necesitamos escribir:

peso = new int[10];

A diferencia de las variables primitivas (int, double etc) los arreglos se inicializan automáticamente cuando los creamos. • Tipos númericos se inicializan con 0 (ó 0.0 en los double)

• char se inicializan con el carácter nulo

• boolean se inicializan con false

peso

0 0 0 0 00 0 0 00

Page 154: Clases Completas 1era parte (Vanny Smith)

154154

Arreglos

Por lo tanto, que pasa si tenemos:

double[] A = new double[10];double[] B;B=A;A[4]= 4.5;System.out.println(B[4]);double[] C = {1.0,2.0,3.0};B=C;int i;for(i=0; i < B.length; i++)

System.out.println(B[i]);

Veamos paso a paso lo que hace este programa

Page 155: Clases Completas 1era parte (Vanny Smith)

155155

Arreglos

double[] A = new double[10];

Creamos una variable A que es una referencia a un arreglo (que también creamos) de 10 elementos de tipo double, cada elemento Java lo inicializa en 0.0.

double[] B;

Creamos una variable B que es una referencia a un arreglo de elementos de tipo double pero aún no creamos ningún arreglo al que apunte B.

B

A

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0 1 2 3 4 5 6 7 8 9

Page 156: Clases Completas 1era parte (Vanny Smith)

156156

Arreglos

B=A;

A y B harán referencia al mismo arreglo

A[4]= 4.5;

Cambiamos de 0.0 a 4.5 el 5to elemento del arreglo A.

A

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0.0

0 1 2 3 4 5 6 7 8 9 B

A

0.0

0.0

0.0

0.0

4.5 0.0 0.0 0.0 0.0 0.0

0 1 2 3 4 5 6 7 8 9 B

Page 157: Clases Completas 1era parte (Vanny Smith)

157157

Arreglos

System.out.println(B[4]);

¿Qué se imprime en pantalla?

double[] C = {1.0,2.0,3.0};Creamos una variable C que apunta a un arreglo de 3 elementos de tipo double.

4.5

C

1.0

2.0

3.0

0 1 2

Page 158: Clases Completas 1era parte (Vanny Smith)

158158

Arreglos

B=C;

B deja de hacer referencia al mismo arreglo que hace referencia A y ahora hace referencia al mismo arreglo que hace referencia C. Por lo tanto ahora B hace referencia a un arreglo de 3 elementos. Antes habíamos dicho que un arreglo tiene tamaño fijo, es decir, una vez asignado el tamaño este no puede cambiar. Sin embargo, aquí estamos cambiando a B, que es una variable que apunta a un arreglo, no estamos cambiando un arreglo.

A0.00.00.00.00.04.50.

00.0

0.0

0.0

0 1 2 3 4 5 6 7 8 9

B

C3.02.01.0

0 1 2

Page 159: Clases Completas 1era parte (Vanny Smith)

159159

Arreglos

int i;

for(i=0; i < B.length; i++)

System.out.println(B[i]);

¿Qué imprime esto?

En resumen el programa completo imprime

1.02.03.0

4.51.02.03.0

Page 160: Clases Completas 1era parte (Vanny Smith)

160160

Arreglos

Si tenemos:double[] B;

int [] C = {1,2,3};

B=C;

¿Qué pasa en este caso?Produciría un error

pues B puede hacer referencia sólo a un arreglo

de doubles

Page 161: Clases Completas 1era parte (Vanny Smith)

161161

Arreglos bidimensionales

Algunos datos vienen en dos dimensiones.• Tableros, mapas, áreas, imágenes (dibujos),

matrices, planillas de cálculo, etc.

Arreglos bidimensionales.• Dos índices en lugar de uno.

• Dimensión: n x m

• Fila, Columna: [x][y]

Ejemplo: Notas de alumnos

Page 162: Clases Completas 1era parte (Vanny Smith)

162162

Ejemplo: Notas de alumnos

Diaz, Bruno

Doe, John

Perez, Juan

Quiroz, Ana

Rios, Luis

Salas, Marco

Tapia, Jorge

Yang, Li

I1 I2 I3 I4 PromedioAlumnos

0

1

2

3

4

5

6

0 1 2 3 4

0 3.5

4.3

5.3

5.8

4.72

1 4.3

5.2

5.1

4.3

4.72

2 5.2

4.5

3.4

6.2

4.82

3 6.2

4.1

3.4

5.6

4.82

4 5.4

3.2

6.5

4.8

4.97

5 5.8

4.9

6.2

5.8

5.67

6 5.3

4.4

6.4

3.2

4.82

[4][2] 6.5

Page 163: Clases Completas 1era parte (Vanny Smith)

163163

Arreglos bidimensionales

Declaración• String[][] tablero;

Construcción• tablero = new String[16][16];

Podemos declarar y construir al mismo tiempo• String[][] tablero = new String[20][30];

Inicialización 2 x 3 • int[][] numero = {{1,3,5}, {3,6,7}};

Fila 1 Fila 2

Page 164: Clases Completas 1era parte (Vanny Smith)

164164

Arreglos bidimensionales

Leyendo del usuario el contenido de una matriz de 3X3:

class LeerMatriz {

public static void main(String[] args){

double[][] A = new double[3][3];int i,j;i=0;while ( i< 3){

j=0;while(j< 3){

System.out.println("Dime un número?");A[i][j] = In.readDouble();j++;

}i++;

}

}}

Page 165: Clases Completas 1era parte (Vanny Smith)

165165

Arreglos bidimensionales

Mostrando una matriz de 3X3:i=0;while ( i< 3){

j=0;

while(j< 3){ System.out.println(A[i][j]); j++;}

i++;}

Page 166: Clases Completas 1era parte (Vanny Smith)

166166

Arreglos bidimesionales

Recuerden que tanto en arreglos unidimensionales como en matrices podemos ver a cada elemento como una variable. La diferencia está en que cuando creamos un matriz:

double[][] altura = new double[20][30];

Estamos creando 20x30 elementos (que podemos ver como variables) de una sola vez.

Por lo tanto podemos tratar a cada elemento igual como tratamos a una variable. double a,b;a = A[1][2] + A[0][0] + 3;b = A[1][2]*A[0][0];

Page 167: Clases Completas 1era parte (Vanny Smith)

167167

Operaciones de matrices

A B

B

+ = C

A =

i,j i,j i,j

32* C 1 2 34

5

6

1*4 + 2*5 + 3*6 = 32i

j

jk

Page 168: Clases Completas 1era parte (Vanny Smith)

168168

Ejemplo: Suma de matrices

class Suma{

public static void main(String[] args){

int[][] A ={{1,2,3,4}, {5,6,7,8}};int[][] B ={{1,4,5,6}, {4,8,9,7}};int[][] C = new int[2][4];int i,j;

for(i = 0; i < 2 ; i++){

for(j = 0; j < 4 ; j++)C[i][j] = A[i][j] + B[i][j];

}//Ahora imprimos cada fila de Cfor(i = 0; i < 2 ; i++){

for(j = 0; j < 4 ; j++){

System.out.print(C[i][j]+" ");}System.out.println();

}

}}

Page 169: Clases Completas 1era parte (Vanny Smith)

169169

Ejemplo: Multiplicación de Matrices

class MultMatrices

{

public static void main(String[] args)

{

int[][] A = {{2,3,8},{9,5,4},{7,8,3}};

int[][] B = {{1,4,7},{2,5,8},{3,6,9}};

int[][] C = new int[3][3];

int i,j,k,suma=0;

Page 170: Clases Completas 1era parte (Vanny Smith)

170170

Ejemplo: Multiplicación de Matrices

for(i=0; i< 3; i++){

for(j=0; j< 3; j++){

for(k=0, suma=0; k< 3; k++)suma = suma + A[i][k]*B[k][j];

C[i][j]= suma;}

}

for(i=0; i< 3; i++){

for(j=0; j< 3; j++)System.out.print(C[i][j]+ " ");

//Despues que terminamos con una fila nos//saltamos a la siguiente lineaSystem.out.println();

}

}}

Page 171: Clases Completas 1era parte (Vanny Smith)

171171

Arreglos multidimesionales

Hasta ahora hemos visto arreglos unidimensionales y bidimensionales. Sin embargo, podemos tener arreglos con las dimensiones que uno desee.

Por ejemplo, podemos tener arreglos de 3, 4 ó 5 dimensiones.

Por ejemplo:boolean[][][] A = new boolean[2][3][6];

Aquí hemos creado 2X3X6 elementos de tipo boolean.

int[][][][] B = new int[2][2][2][2];

Aquí hemos creado 2x2x2x2 elementos de tipo int.

Page 172: Clases Completas 1era parte (Vanny Smith)

172172

Strings: más métodos

Los métodos que veremos a continuación pueden ser útiles para hacer la tarea 1. Esto no quiere decir que necesiten cada uno de ellos, todo depende de cómo implementen su solución.

length()• Para obtener la longitud de un String

• Forma de usarlo s1.length()Donde s1 es un String

• Devuelve el largo del String (devuelve un int)

Page 173: Clases Completas 1era parte (Vanny Smith)

173173

Strings: más métodos

• Por ejemplo:String s1 = “hola”;

int a = s1.length();

En a guardamos el valor 4.

• Importante: No confundir con “length” de los arreglos, donde para llamarlo usamos notas.length, sin paréntesis. En los Strings usamos paréntesis.

esto devuelve 4

Page 174: Clases Completas 1era parte (Vanny Smith)

174174

Strings: más métodos

charAt()• Para obtener el carácter que se encuentra en una posición

cualquiera. Los índices van de 0 a length-1, igual que en los arreglos.

H o l a

• Forma de usarlo s1.charAt(índice)Donde s1 es un String e índice indica la posición del caracter que queremos obtener. En el caso del String “Hola” índice puede ser 0,1,2 ó 3.

• Devuelve el carácter en la posición indicada (devuelve un char).

índice 0 índice 3

Page 175: Clases Completas 1era parte (Vanny Smith)

175175

Strings: más métodos

• Por ejemplo:String s1 = “hola”;

char c = s1.charAt(1);

En c guardamos el char ‘o’.

esto devuelve ‘o’

Page 176: Clases Completas 1era parte (Vanny Smith)

176176

Strings: más métodos

class Ejemplo{

public static void main(String[] args)

{

String s = "Hola, ¿como estas?";

int i;

for (i=0; i<s.length(); i++)

System.out.println("caracter= " + s.charAt(i));

}

}

Imprime:

caracter= Hcaracter= ocaracter= lcaracter= acaracter= ,caracter= caracter= ¿caracter= ccaracter= ocaracter= mcaracter= ocaracter= caracter= ecaracter= scaracter= tcaracter= acaracter= scaracter= ?

Page 177: Clases Completas 1era parte (Vanny Smith)

177177

Strings: más métodos

equalsIgnoreCase()• Lo mismo que equals() pero no tiene en cuenta

mayúsculas o minúsculas.

• Devuelve true o false.

• Por ejemplo:

String s1= “Estrella”;

String s2 = “estrella”;

boolean a = s1.equalsIgnoreCase(s2);

En a guardaremos true.

Page 178: Clases Completas 1era parte (Vanny Smith)

178178

Strings: más métodos

indexOf() • Para saber la posición de un caracter particular en

un String.

• Forma de usarlo:s1.indexOf(caracter)

Donde s1 es un String y caracter es el caracter que estamos buscando en s1.

• Retorna la primera posición (el índice) en la cual se encuentra caracter en s1. Si caracter no se encuentra en s1 el método retorna -1

Page 179: Clases Completas 1era parte (Vanny Smith)

179179

Strings: más métodos

• Por ejemplo:String s = "Camarada";

int indice1 = s.indexOf('a');

int indice2 = s.indexOf('e');

En indice1 guardamos el valor 1 y en indice2 el valor -1.

Page 180: Clases Completas 1era parte (Vanny Smith)

180180

Strings: más métodos

indexOf() 2da version • Para saber la posición de un caracter particular en

un String, a partir de cierta posición.

• Forma de usarlo:s1.indexOf(caracter, índice)

Donde s1 es un String, caracter es el caracter que estamos buscando en s1 y índice es la posición desde la cual buscamos (de izquierda a derecha) a caracter.

• Retorna la primera posición (el índice) en la cual se encuentra caracter en s1 a partir de la posición indicada. Si caracter no se encuentra el método retorna -1.

Page 181: Clases Completas 1era parte (Vanny Smith)

181181

Strings: más métodos

• Por ejemplo:String s = "Camarada";

int indice1 = s.indexOf('a',3);

int indice2 = s.indexOf('e',1);

En indice1 guardamos el valor 3 y en indice2 el valor -1.

Page 182: Clases Completas 1era parte (Vanny Smith)

182182

Strings: más métodos

• Como pueden ver, este método se llama igual que el anterior, la única diferencia es que le damos dos argumentos. El primer argumento es el char que estamos buscando y el segundo argumento es la posición desde la cual queremos empezar a buscar.

s.indexOf('a',3);

• Si llaman a este método con dos argumentos Java sabe que se refieren a esta segunda versión del método indexOf().

argumento1 argumento2

Page 183: Clases Completas 1era parte (Vanny Smith)

183183

Strings: más métodos

• Por ejemplo:String s = "Mi alfombra";

int indice1 = s.indexOf('a',4);

int indice2 = s.indexOf('a');

int indice3 = s.indexOf('f',7);

int indice4 = s.indexOf('f');

System.out.println(indice1 + " " + indice2 + " "+

indice3 + " "+

indice4);

Esto imprime: 10 3 -1 5

Page 184: Clases Completas 1era parte (Vanny Smith)

184184

Java

Java Sun provee las especificaciones de Java a través de la Web.

Por ejemplo, las especificaciones de todos los métodos de la clase de los Strings se puede encontrar en:

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/String.html

Page 185: Clases Completas 1era parte (Vanny Smith)

185185

Java

Page 186: Clases Completas 1era parte (Vanny Smith)

186186

Java

Cuando quieran conocer las especificaciones de los métodos de alguna clase vayan a Google y escriban:

Nombre de la clase + java 1.4

Hagan click en el primer link que les aparezca.

Por ejemplo, lo pueden hacer para la clase Math, para la clase de los arreglos (Array) etc.

Page 187: Clases Completas 1era parte (Vanny Smith)

187187

Métodos

Clase Principal{ Método principal () {....} Método1() {....} Método2() {....} :}

Page 188: Clases Completas 1era parte (Vanny Smith)

188188

Métodos

Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases.

• Reciben datos de entrada

• Generan datos de salida

Entrada Salida

Dos números X1,X2

SUMA

Método que suma dos números

X1+X2

Page 189: Clases Completas 1era parte (Vanny Smith)

189189

Métodos: Sintaxis

<ámbito> <tipo_retorno> <nombre_método> ( <lista_parámetros> ) {

<declaración_de_variables_locales> ;

<cuerpo_del_método> ;

return(<valor_retorno>) ;

}

En general, podemos clasificar los métodos en:• Aquellos que retornan un valor.

• Aquellos que no retornan nada.En estos casos se utiliza como tipo de retorno la palabra reservada void.

Page 190: Clases Completas 1era parte (Vanny Smith)

190190

Métodos

<ámbito> <tipo_retorno> <nombre_método> ( <lista_parámetros> )

<lista_paramétros>

• Valores que se entregan como entrada al método.

• Deben corresponder en cuanto a cantidad, posición y tipos a las variables que se definieron como parámetros de entrada en la definición del método.

• Si en la definición del método no se usó parámetro alguno, entonces en la llamada tampoco debe escribirse ninguna expresión o variable, pero los paréntesis deben aparecer.

Page 191: Clases Completas 1era parte (Vanny Smith)

191191

Métodos

Parámetros de entrada.• Materia prima con la que trabajará el método.

Valor de retorno• Resultado del procesamiento llevado a cabo por el

método.

Tanto los parámetros de entrada como el valor de retorno tienen un tipo de datos asociado.

Page 192: Clases Completas 1era parte (Vanny Smith)

192192

Métodos

Ejemplo de un método que no retorna nada:

public static voidpublic static void ImprimeSaludo ImprimeSaludo() ()

{{

System.out.println(“Hola”)System.out.println(“Hola”);;

}}

Instruccionesdel método

No tieneparámetros

NombreNo retorna nada,sólo imprime “Hola”en pantalla

Page 193: Clases Completas 1era parte (Vanny Smith)

193193

Métodos

Ejemplo de un método que retorna un valor:

public static public static doubledouble Area(double radio) Area(double radio)

{{

double area;double area;

area = 3.14 * radio * radio;area = 3.14 * radio * radio;

returnreturn area;area;

}}

retorna un valor de tipo double

Nombre

Tiene 1parámetrode tipo double llamado radio

Retorna el valor de area

Page 194: Clases Completas 1era parte (Vanny Smith)

194194

Métodos

Cuando creamos un método este debe estar dentro de una clase.

Por ejemplo, hasta ahora el tipo de clase que hemos usado es aquella donde tenemos al método principal.

Podemos incluir los métodos que creamos ya sea antes o después del método principal. El orden no importa.

Sólo podemos tener 1 método principal pues este es el que ordena la ejecución del programa.

Page 195: Clases Completas 1era parte (Vanny Smith)

195195

Métodos

class Ejemplo{

public static void main(String[] args){

....................

....................ImprimeSaludo();....................ImprimeSaludo();

}

public static void ImprimeSaludo() { System.out.println(“Hola”);}

}

Page 196: Clases Completas 1era parte (Vanny Smith)

196196

Métodos

Dependiendo de si el método retorna algo o no es como lo llamamos.

Con llamamos queremos decir que lo usamos. Si el método no retorna nada para llamarlo

simplemente escribimos el nombre del método seguido de paréntesis, como en el ejemplo anterior.

ImprimeSaludo();

Page 197: Clases Completas 1era parte (Vanny Smith)

197197

Métodos

class Ejemplo{

public static void main(String[] args){

ImprimeSaludo();ImprimeSaludo();

}

public static void ImprimeSaludo() { System.out.println(“Hola”);}

}

Hola

HolaImprime

Page 198: Clases Completas 1era parte (Vanny Smith)

198198

Métodos

Si el método retorna un valor lo podemos usar igual como usamos un valor o variable.

Por ejemplo:Le podemos asignar su valor a una variable:a= Area(2);

Podemos hacer operaciones:b= Area(2) + Area(3);

Podemos Imprimir:System.out.println(Area(5));

Page 199: Clases Completas 1era parte (Vanny Smith)

199199

Métodos

class Ejemplo{

public static void main(String[] args){

ImprimeSaludo();double a= Area(2);System.out.println(a);double b= Area(2) + Area(3);System.out.println(b);System.out.println(Area(5));

}

public static void ImprimeSaludo() { System.out.println("Hola");}

public static double Area(double radio) { double area; area = 3.14 * radio * radio; return area;}

}

Hola12.5640.8278.5

Imprime

Page 200: Clases Completas 1era parte (Vanny Smith)

200200

Métodos

public static double Celsius(double fahrenheit) {

double resultado;resultado= (fahrenheit-32.0)*(5.0/9.0);

return resultado;} public static double Fahrenheit(double celsius) { return((celsius*9.0/5.0)+32.0);}

Page 201: Clases Completas 1era parte (Vanny Smith)

201201

Ejemplos: Llamadas a métodos

double grados_celsius;

grados_celsius = Celsius(68) ; /* llamada */

double grados_farenheit ;

grados_farenheit = Fahrenheit(31) ; /* llamada */

 

 

double radio = 5.56 ;

double calculo_area ;

calculo_area = Area(5.56) ; /* llamada */

calculo_area = Area(radio) ; /* llamada */

Page 202: Clases Completas 1era parte (Vanny Smith)

202202

¿Para qué sirven los métodos?

No repetir lo mismo varias veces en el código.

Ordenar el código.

Comprender más fácilmente el código.

Separar trabajo entre programadores.

Realizar trabajos más complejos.

Page 203: Clases Completas 1era parte (Vanny Smith)

203203

Ejercicios

Desarrollar el siguiente método:

• Retorne 0 si un número es par y 1 si es impar.

Escriba el programa del Control 2 usando el método Factorial(). El cual recibe un número entero y retorna el factorial del número.

Page 204: Clases Completas 1era parte (Vanny Smith)

204204

Métodos: Orden de Instrucciones

Recuerden el orden en que se ejecutan las instrucciones, ya sean del método principal o los otros métodos:• Las instrucciones que se ejecutan en un programa

son aquellas del método principal. Estas se ejecutan de principio a fin.

• Las instrucciones de los métodos se ejecutan de principio a fin a menos que usemos return.

• Las instrucciones de otro método se ejecutan si en el método principal se llama a este otro método (este método a la vez puede llamar a otro).

Page 205: Clases Completas 1era parte (Vanny Smith)

205205

Métodos: Orden de Instrucciones

public static boolean esPar (int numero)

{

if(numero%2==0)

return true;

else

return false;

}

Si numero es par las instrucciones en este métodose terminan aquí

Si numero es impar las instrucciones en este métodose terminan aquí

Page 206: Clases Completas 1era parte (Vanny Smith)

206206

Métodos: Orden de Instruccionesclass Ejemplo{

public static void main(String[] args){

int num,resultado; 1System.out.println("Ingrese un numero"); 2num=In.readInt(); 3resultado= factorial(num); 8System.out.println("El factorial de "+ num+ " es " + 9

resultado);}

public static int factorial(int numero){

int factorial=1; 4for(int i =1; i<=numero; i++) 5

factorial= factorial*i; 6

return factorial; 7

}}

Los números indican el orden en que se ejecutan las instruccionesdel programa

Page 207: Clases Completas 1era parte (Vanny Smith)

207207

Métodos: return

• Si el método no retorna nada y queremos terminar la ejecución de sus instrucciones podemos usar simplemente:

return;

• Este tipo de return no lo podemos usar si el método devuelve algo pues nos daría un error de compilación. Si el método devuelve algo siempre debemos retornar un valor. Por ejemplo:

return 25;

Page 208: Clases Completas 1era parte (Vanny Smith)

208208

Métodos: return

Aca tenemos una versión del método factorial que no retorna nada, pues dentro del mismo método se le dice al usuario cual es el factorial del número que ingresó:

public static void factorial(int numero){

if (numero < 0) {

System.out.println("Debe ingresar un entero mayor que 0");

return; }

int factorial=1;for(int i =1; i<=numero; i++)

factorial= factorial*i;

System.out.println("El factorial de "+ numero+ " es "+ factorial);

}

Sin embargo,se recomienda, si se puede,usar una versióndel método quese ejecute de principio a fin

Page 209: Clases Completas 1era parte (Vanny Smith)

209209

Métodos: return

Esta versión se ejecuta de principio a fin (no necesariamente todas las instrucciones):

public static void factorial(int numero){

if (numero < 0)System.out.println("Debe ingresar un entero mayor que

0");

int factorial=1;

//Si numero < 0 las instrucciones del for no se ejecutan//pues i parte en 1, por lo tanto i no es menor que numerofor(int i=1; i<=numero; i++)

factorial= factorial*i;

if(numero>=0)System.out.println("El factorial de "+ numero+

" es "+ factorial);

}

Page 210: Clases Completas 1era parte (Vanny Smith)

210210

Métodos: return

Este ejemplo nos daría en error de compilación, pues en el encabezado estamos diciendo que el método va a devolver un int:

public static int factorial(int numero){

if (numero < 0) { System.out.println(“Debe ingresar un entero

mayor que 0”);return;

}

int factorial=1; for(int i =1; i<=numero; i++)

factorial= factorial*i; return factorial;

}

Page 211: Clases Completas 1era parte (Vanny Smith)

211211

Métodos: Parámetros

Ejemplo:

public static double exponente(double base, int exponente){

double resultado = 1;int i;for(i = 1; i <= exponente ; i++) resultado = resultado*base;

return resultado;}

Cuando decimos (double base, int exponente) estamos especificando la lista de parámetros del método. En este caso los parámetros son base y exponente.

Page 212: Clases Completas 1era parte (Vanny Smith)

212212

Métodos: Parámetros

Cuando llamamos al método, los valores con los que lo llamamos se le asignan a los parámetros del método en el orden respectivo:

double a= exponente (2.5, 6);

public static double exponente (double base, int exponente)

Page 213: Clases Completas 1era parte (Vanny Smith)

213213

Métodos: Parámetros

También podemos llamar a los métodos con variables o expresiones:

double a=4.5;int b=3;

double c= exponente (a,(b*2));

public static double exponente (double base, int exponente)

Page 214: Clases Completas 1era parte (Vanny Smith)

214214

Métodos: Parámetros

En Java los valores, variables o expresiones que usamos para llamar a un método primero se evalúan (en el caso de expresiones) y luego una copia de estos valores se le asigna a los parámetros.

A esto se le llama paso por valor. Importante: Por lo tanto cuando llamamos a

un método y usamos variables como argumentos lo que le estamos pasando al método es el valor de la variable NO LA VARIABLE.

Page 215: Clases Completas 1era parte (Vanny Smith)

215215

Métodos: Parámetrosclass EjemploParametros{

public static void main(String[] args){

double a, resultado;int b;System.out.println("Ingrese la base");

a=In.readDouble();System.out.println("Ingrese el exponente");

b=In.readInt();resultado= exponente(a,b);System.out.println("El resultado es "+ resultado);

}

public static double exponente(double base, int exponente){

double resultado = 1;int i;for(i = 1; i <= exponente ; i++) resultado = resultado*base;return resultado;

}}

Page 216: Clases Completas 1era parte (Vanny Smith)

216216

Métodos: Parámetros

Veamos que sucede paso a paso:

double a, resultado;

int b;

Creamos tres variables

a b resultado

Page 217: Clases Completas 1era parte (Vanny Smith)

217217

Métodos: Parámetros

System.out.println("Ingrese la base");

a=In.readDouble();

System.out.println("Ingrese el exponente");

b=In.readInt();

Le asignamos un valor a “a” y “b”, dependiendo de lo que ingrese el usuario. Por ejemplo:

3.0 4

a b

Page 218: Clases Completas 1era parte (Vanny Smith)

218218

Métodos: Parámetros

resultado= exponente(a,b);

public static double exponente(double base, int exponente)

Llamamos al método exponente y luego le

asignamos a resultado el valor que devuelva este método.

Al llamar al método le asignamos a los argumentosdel método los valores de las variables a y b.3.0

4

a

b

3.0

4

base

exponente

Page 219: Clases Completas 1era parte (Vanny Smith)

219219

Métodos: Parámetros

Finalmente le asignamos a resultado lo que devuelva para este caso exponente.

¿Por qué es importante saber que significa paso por valor?

Porque si dentro del método cambiamos el valor de los parámetros del método esta acción no cambiará el valor de las variable que usamos como argumentos del método.

81.0

resultado

Page 220: Clases Completas 1era parte (Vanny Smith)

220220

Métodos: Parámetros

class EjemploParametros{

public static void main(String[] args){

double a, resultado;System.out.println("Ingrese el numero");a=In.readDouble();resultado= dobleNum(a);System.out.println("El doble del numero es "+

resultado);}

public static double dobleNum(double numero){ numero= 2*numero;

return numero;}

}

En este ejemplo la variable a es el argumento con el que llamamos al método.

El parametro del metodo es numero.

Page 221: Clases Completas 1era parte (Vanny Smith)

221221

Métodos: Parámetros

double a, resultado;

System.out.println("Ingrese el numero");a=In.readDouble();

a resultado

a El usuario le asigna un valor a a8.5

Page 222: Clases Completas 1era parte (Vanny Smith)

222222

Métodos: Parámetros

resultado= dobleNum(a);

public static double dobleNum(double numero)

Primero se llama al método y luegose le asigna lo que retorna a resultado

a numero

8.5 8.5

numero ahoratiene el mismovalor de a

Page 223: Clases Completas 1era parte (Vanny Smith)

223223

Métodos: Parámetros

numero= 2*numero;

return numero;

resultado= dobleNum(a);

a numero

8.5 17.0numero ahora cambia su valorpero a no cambió su valor

resultado numero

17.0 17.0Finalmente a resultado se le asigna lo que retornael método. En este casolo que retorna el método es elvalor de numero

Page 224: Clases Completas 1era parte (Vanny Smith)

224224

Ámbito de las variables

El ámbito de una variable es aquel donde se reconoce a la variable.

Una variable es reconocida dentro del block donde se le declaró.

Un block es determinado por llaves. Ejemplo de blocks:

class Ejemplo{

}

public static void main (String[] args){

}

while(n!=-1){

}

Page 225: Clases Completas 1era parte (Vanny Smith)

225225

Ámbito de las variables

Es decir, si yo declaro una variable dentro de un while, esta variable es reconocida sólo dentro del while. Fuera del while es como si nunca hubiese existido.

class Ejemplo{

public static void main(String[] args){

int i =0;while (i<10){

int resultado= 1;resultado= resultado +i;

}

System.out.println(resultado);}

}

Sólo aquí sereconocea la variableresultado

Por lo tanto estoproduce un error

Page 226: Clases Completas 1era parte (Vanny Smith)

226226

Ámbito de las variables

Cuando compilamos este programa nos encontramos con este mensaje:

resultado cannot be resolved También podemos afirmar que una variable

creada dentro de un método sólo es reconocida dentro del método.

Es por esta razón que podemos tener dos variables con el mismo nombre en el método principal y en otro método.

En este caso lo que sucede es que tenemos dos variables distintas que se llaman igual, pero entre ellas no hay ninguna relación.

Page 227: Clases Completas 1era parte (Vanny Smith)

227227

Ámbito de las variables

class EjemploParametros{

public static void main(String[] args){

double numero, resultado;System.out.println("Ingrese el numero");

numero=In.readDouble();resultado= dobleNum(numero);System.out.println("El doble del numero es "+

resultado);System.out.println(numero);

}public static double dobleNum(double numero){ numero= 2*numero;

return numero;}

}

Si el usuario ingresa 3:

¿Qué se imprime aquí?

¿3 ó 6?Se imprime 3 pues la variable numero del main y la variable numero del método dobleNum son dos variables distintas.

Page 228: Clases Completas 1era parte (Vanny Smith)

228228

Ámbito de las variables

double numero, resultado;

System.out.println("Ingrese el numero");numero=In.readDouble();

numero resultado

numero El usuario le asigna un valor a numero8.5

Page 229: Clases Completas 1era parte (Vanny Smith)

229229

Ámbito de las variables

resultado= dobleNum(numero);

public static double dobleNum(double numero)

Primero se llama al método y luegose le asigna lo que retorna a resultado

numero numero

8.5 8.5

Ambas variables sellaman igual y ahoratienen el mismo valorpero son dos variables distintas y lo que le pase auna no afectará a la otra

método dobleNum

main

Page 230: Clases Completas 1era parte (Vanny Smith)

230230

Ámbito de las variables

numero= 2*numero;

return numero;

resultado= dobleNum(numero);

numero numero

8.5 17.0numero ahora cambia su valorpero la variable numerodel main no cambió su valor

resultado numero

17.0 17.0Finalmente a resultado se le asigna lo que retornael método. En este casolo que retorna el método es elvalor de numero

main

8.5

main

Page 231: Clases Completas 1era parte (Vanny Smith)

231231

Ámbito de las variables

System.out.println(numero);

Aquí se imprime 8.5 pues estamos haciendo referencia a la variable que el que es reconocida en el método main.

8.5main

Page 232: Clases Completas 1era parte (Vanny Smith)

232232

Métodos que llaman a otros métodos

El método principal (main) puede llamar a otros métodos y estos a su vez pueden llamar a otros.

En el ejemplo de la guía que vimos hoy tenemos

class Loteria{ public static void main(String[]args) {

} public static double combinaciones(int n, int k) {

}

public static double factorial (int numero) { }}

Page 233: Clases Completas 1era parte (Vanny Smith)

233233

Métodos y Arreglos

Como vimos anteriormente, cuando llamamos a un método. Java usa el paso por valor

Pero los objetos que conocemos hasta ahora no guardan un valor.

Los objetos que conocemos hasta ahora son los Strings y los Arreglos.

Entonces ¿Cúal es el valor que estamos pasando cuando pasamos un objeto?

Page 234: Clases Completas 1era parte (Vanny Smith)

234234

Métodos y Arreglos

Una variable que es declarada como un arreglo en realidad es una referencia a un arreglo. Por lo tanto esta variable el valor que guarda es una referencia.

Cuando uno de los parámetros de un método es un arreglo ( ya sea unidimensional o multidimensional) lo que le estamos pasando al método es una referencia a ese arreglo.

El siguiente método recibe un arreglo e intercambia los elementos de las posiciones i y j.

public static void swap(double[] A, int i, int j){

double temp;temp= A[i];A[i]= A[j];A[j]=temp;

}

Page 235: Clases Completas 1era parte (Vanny Smith)

235235

Métodos y Arreglos

class Ejemplo{

public static void main(String[] args){

double[] a= {1.0, 2.4, 5.6, 4.5, 6.7};int i;swap(a,0,3);for(i=0; i< a.length; i++)

System.out.print(a[i]+ " ");}public static void swap(double[] A, int i, int j){

double temp;temp= A[i];A[i]= A[j];A[j]=temp;

}}

¿Qué imprime este método?

Page 236: Clases Completas 1era parte (Vanny Smith)

236236

Métodos y Arreglos

double[] a= {1.0, 2.4, 5.6, 4.5, 6.7};

Creamos una variable a y un arreglo de cinco elementos. La variable a hace referencia al arreglo.

1.0 2.4 5.6 4.5 6.7a

Page 237: Clases Completas 1era parte (Vanny Smith)

237237

Métodos y Arreglos

swap(a,0,3);

public static void swap(double[] A, int i, int j)

1.0 2.4 5.6 4.5 6.7a

A

0 3i j

Page 238: Clases Completas 1era parte (Vanny Smith)

238238

Métodos y Arreglos

double temp;

temp= A[0];

A[0]= A[3];

A[3]=temp;

4.5 2.4 5.6 1.0 6.7a

A

Page 239: Clases Completas 1era parte (Vanny Smith)

239239

Métodos y Arreglos

for(i=0; i< a.length; i++)

System.out.print(a[i]+ " ");

Imprime el arreglo a, el cual hace referencia al mismo arreglo A del método swap. Por lo tanto los elementos de a en las posiciones 0 y 3 fueron intercambiados. El programa imprime:

4.5 2.4 5.6 1.0 6.7

Page 240: Clases Completas 1era parte (Vanny Smith)

240240

Matrices como arreglos

Cuando creamos una matriz en realidad lo que estamos creando es un arreglo de arreglos.

Por ejemplo, si escribimos:int[][] a;Lo que creamos es una variable a que hace referencia a un arreglo, no a una matriz.

a

Page 241: Clases Completas 1era parte (Vanny Smith)

241241

Matrices como arreglos

Luego cuando escribimos:a= new int[3][4];Lo que creamos es un arreglo de tres elementos, a[0], a[1], a[2].

a

a[0]

a[1]

a[2]

Page 242: Clases Completas 1era parte (Vanny Smith)

242242

Matrices como arreglos

Donde cada elemento a[i] hace referencia a un arreglo de 4 elementos de tipo int. Estos elementos Java los inicializa en 0 automáticamente.

0 0 0 0

a

a[0]

a[1]

a[2]

0 0 0 0

0 0 0 0

Aquí está lamatriz

Page 243: Clases Completas 1era parte (Vanny Smith)

243243

Matrices como arreglos

Por este motivo, podemos referirnos a la primera fila de una matriz como si nos refiriéramos a un arreglo.

En el ejemplo anterior la primera fila de la matriz a sería a[0], donde a[0] hace referencia a un arreglo de 4 elementos tipo int. 0 0 0 0a[0]

Page 244: Clases Completas 1era parte (Vanny Smith)

244244

Matrices como arreglos

class Ejemplo{

public static void main(String[] args){

int[][] A={{1,2,3}, {4,5,6}, {7,8,9}};int[] b= A[0];

int i;for(i=0; i< b.length; i++)System.out.println(b[i]);

}} Veamos paso a paso lo que sucede durante la

ejecución de este programa

Page 245: Clases Completas 1era parte (Vanny Smith)

245245

Matrices como arreglos

int[][] A={{1,2,3}, {4,5,6}, {7,8,9}};

1 2 3

A

A[0]

A[1]

A[2]

4 5 6

7 8 9

Creamos una variable A que hace referencia a un arreglode tres elementos A[0], A[1] y A[2]. Cada uno de estos elementos a su vez hace referencia a un arreglo de tres elementos de tipo int.

Page 246: Clases Completas 1era parte (Vanny Smith)

246246

Matrices como arreglos

int[] b= A[0];Luego creamos una variable b que hace referencia al mismo arreglo que hace referencia A[0], es decir la primera fila de la Matriz A.

1 2 3

A

A[0]

A[1]

A[2]

4 5 6

7 8 9

b

Page 247: Clases Completas 1era parte (Vanny Smith)

247247

Matrices como arreglos

int i;for(i=0; i< b.length; i++)System.out.println(b[i]);

Finalmente imprimimos el arreglo b. Este programa imprime:123

Page 248: Clases Completas 1era parte (Vanny Smith)

248248

Matrices como arreglos

class Ejemplo{

public static void main(String[] args){

int[][] A={{1,2,3,4}, {5,6,7,8}, {9,1,2,3}};int i, j;for(i=0; i< A.length; i++){

for(j=0; j< A[0].length; j++){

System.out.print(A[i][j]+" ");}System.out.println();

}

}} Veamos paso a paso lo que sucede durante la ejecución de

este programa

Page 249: Clases Completas 1era parte (Vanny Smith)

249249

Matrices como arreglos

int[][] A={{1,2,3,4}, {5,6,7,8}, {9,1,2,3}};

1 2 3 4

A

A[0]

A[1]

A[2]

5 6 7 8

9 1 2 3

Page 250: Clases Completas 1era parte (Vanny Smith)

250250

Matrices como arreglos

for(i=0; i< A.length; i++)

Fijamos la fila i para empezar a movernos por la matriz. Usamos el largo de A, pues este largo nos indica el numero de filas que tiene la matriz.

1 2 3 4A A[0]

A[1]

A[2]

5 6 7 8

9 1 2 3Este es el largo al que hacemosreferencia al decir A.length

Page 251: Clases Completas 1era parte (Vanny Smith)

251251

Matrices como arreglos

for(j=0; j< A[0].length; j++)Una vez fijada la fila i, fijamos la columna j. Para saber el número de columnas usamos el largo del arreglo A[0] pues este largo nos indica el número de columnas que tiene la matriz A. Podríamos haber usado A[1] o A[2] en vez de A[0], cualquiera de los tres nos habría servido.

1 2 3 4A A[0]

A[1]

A[2]

5 6 7 8

9 1 2 3

Page 252: Clases Completas 1era parte (Vanny Smith)

252252

Matrices como arreglos

System.out.print(A[i][j]+" ");

}

System.out.println();

Finalmente imprimimos uno a uno los elementos de la matriz saltándonos a la siguiente línea cuando terminamos con una fila. Esto imprime:

1 2 3 4 1 2 3 4

5 6 7 8 5 6 7 8

9 1 2 3 9 1 2 3

Page 253: Clases Completas 1era parte (Vanny Smith)

253253

Matrices como arreglos

En resumen lo que necesitamos saber es que:1.Podemos ver cada fila de la matriz como una arreglo

en caso de que lo necesitemos, como por ejemplo en la segunda parte de la Pregunta 2 de la tarea.

2.El número de filas es igual a: nombre_matriz.length. Por ejemplo:

A.lengthA.length

3.El número de columnas se obtiene especificando una fila. Por ejemplo:

A[0].lengthA[0].length

Page 254: Clases Completas 1era parte (Vanny Smith)

254254

Strings: método valueOf

Hasta ahora hemos conocido los métodos:• equals()

• equalsIgnoreCase()

• compareTo()

• chatAt()

• indexOf()

• length()

Hoy vamos a conocer el método valueOf()Este método nos permite convertir un tipo de dato primitivo (char, int, double, boolean) a un String. También nos permite convertir un arreglo de caracteres a un String.

Este método se vuelve útil más adelante cuando queramos escribir o leer en un archivo.

Page 255: Clases Completas 1era parte (Vanny Smith)

255255

Strings: método valueOf

En los métodos anteriores, no necesitábamos especificar que los métodos eran de la clase String pues los llamábamos con un objeto de tipo String. Por ejemplo:

String s= "Botella";

int a= s.length();

char b= s.charAt(2);

int c= s.indexOf(a);

Este es nuestroobjeto de tipoString

Aquí ocupamosal String s parallamar a estosmétodos de la clase String

Page 256: Clases Completas 1era parte (Vanny Smith)

256256

Strings: método valueOf

Sin embargo, cuando ocupamos el método valueOf lo que vamos a hacer es llamar al método con un argumento que es de tipo primitivo (int, double, char, boolean etc) o con un arreglo de caracteres. Por lo que sí debemos especificar la clase donde se encuentra este método.

String.valueOf(a)

Donde a es un tipo de dato primitivo, un arreglo de caracteres, etc (existen más versiones de este método pero no las veremos aquí). Este método devuelve un String.

Page 257: Clases Completas 1era parte (Vanny Smith)

257257

Strings: método valueOf

Por ejemplo:int a= 345;

String s1= String.valueOf(a);

Lo que estamos haciendo es asignarle al String s1 lo que devuelve el método valueOf(), como el método devuelve un String (mejor dicho una referencia a un objeto String), lo que devuelve se lo podemos asignar a s1 sin problemas.

345

“345”

a s1

Page 258: Clases Completas 1era parte (Vanny Smith)

258258

Strings: método valueOf

class Ejemplo{

public static void main(String[] args){

int a= 345;String s1= String.valueOf(a);System.out.println(s1);

double b= 3.456;String s2= String.valueOf(b);System.out.println(s2);

Fíjense que para elmétodo valueOf()debemos especificarla clase

Page 259: Clases Completas 1era parte (Vanny Smith)

259259

Strings: método valueOf

char c= 'a';

String s3= String.valueOf(c);

System.out.println(s3);

boolean d= true;

String s4= String.valueOf(d);

System.out.println(s4);

char[] e={'a','b','c','d'};

String s5= String.valueOf(e);

System.out.println(s5);

}

}

Este programa imprime:3453.456atrueabcd