Sei sulla pagina 1di 19

EXPRESIONES

Java

Expression
Cul es el valor utilizado para inicializar x?
int x = 4 + 2 * 5;

Cul es el valor desplegado?


System.out.println(5/2.0);

x=
14
2.5

Algunas reglas de Java


Cada operador tiene un nivel de precedencia y
asociatividad
Los operadores con precedencia ms alta se operan
primero

Cuando el punto flotante es utilizado el resultado


ser tambin real
Hayde Mndez

Programacin 2

Expression
Calcular la siguiente instruccin el promedio de
tres variables double?
double d = a + b + c/3.0;

S, no? Por qu?


No, calcular otra cosa. Esto es debido a que el
primero realizar la divisin y luego realizar la
suma de los tres valores (Java utiliza la jerarqua
estndar de operadores)
Hayde Mndez

Programacin 2

System.out.println
Sirve para imprimir mensajes a pantalla
System.out.println(hola mundo);

Se puede desplegar ms de un mensaje


utilizando el operador +
int i = 8;
System.out.println(i = + 8);

Tambin el System.out.print imprime, pero no


agrega un salto de lnea al final
System.out.print(hola );
System.out.println(mundo);
Hayde Mndez

Programacin 2

hola mundo
4

Imprimiendo caracteres especiales


Para imprimir algunos caracteres especiales Java
utiliza las siguientes secuencias
\b backspace
\n newlin
\t
tab
\r
carriage return
\\
backslash
\
double quote
\
single quote
Hayde Mndez

Programacin 2

Ejemplo
Cul ser la salida de las siguientes instrucciones?
System.out.println("Person\tHeight\tShoe
size");
System.out.println("=====================");
System.out.println("Hannah\t51\"\t7");
System.out.println("Jenna\t5'10\"\t9");
System.out.println("JJ\t6'1\"\t14");

Salida
Person Height Shoe size
=========================
Hannah 51"
7
Jenna
5'10"
9
JJ
6'1"
14
Hayde Mndez

Programacin 2

Interesante
System.out.println (result: + 3/5);
Qu se imprime?
result: 0

System.out.println (result: + 5 % 3);


Qu se imprime?
result: 2

System.out.println (result: + 3/5.0);


Qu se imprime?
result: 0.6

System.out.println (result: + 3+4.0);


Qu se imprime?
result: 34.0

System.out.println (result: + (3+4.0));


Qu se imprime?
result: 7.0

Hayde Mndez

Programacin 2

Leyendo valores del


teclado
Para poder leer valores desde el teclado, primero
debe crearse un objeto Scanner
Para realizar esto usaremos el siguiente cdigo

Scanner stdin = new Scanner(System.in);

Hayde Mndez

Programacin 2

Scanner API
public Scanner(InputStream in) // Scanner(): convenience
// constructor for an InputStream
public Scanner(File s)
// Scanner(): convenience
// constructor for a filename
public int nextInt()

// nextInt(): next input value as an int

public short nextShort() // nextShort(): next input value as a short


public long nextLong()

Hayde Mndez

// nextLong(): next input value as a long

Programacin 2

Scanner API
public double nextDouble() // nextDouble(): next next input
// value as a double
public float nextFloat() // nextFloat(): next next input value
// as a float
public String next()
string

// next(): get next whitespace-free

public String nextLine() // nextLine(): return contents of input


// line buffer
public boolean hasNext() // hasNext(): is there a value to next
Hayde Mndez

Programacin 2

10

Ejemplo
int x = stdin.nextInt();
double d = stdin.nextDouble();
String s = stdin.next();
String s = stdin.nextLine();

Hayde Mndez

Programacin 2

11

Ejemplo
import java.util.*;
public class ScannerUsage {
public static void main (String args[]) {
Scanner stdin = new Scanner (System.in);
System.out.println (Ingrese un numero");
int x = stdin.nextInt();
int y;
System.out.println (Ingrese otro numero");
y = stdin.nextInt();
int z = x + y;
System.out.println(La suma de + x + y +

y + es " + z);

Hayde Mndez

Programacin 2

12

Casting
Es un procedimiento para transformar una
variable primitiva de un tipo a otro, o transformar
un objeto de una clase a otra, siempre y cuando
haya relacin de herencia entre ellas
Se distinguen dos clases de casting:
Implcito: no necesita cdigo para llevarse a cabo.
Ocurre cuando se realiza una conversin ancha.
Explcito: si es necesario cdigo para llevarse a
cabo. Ocurre cuando se realiza una conversin
estrecha.
Hayde Mndez

Programacin 2

13

Casting
Consideremos el siguiente cdigo:
double d = 3.6;
int x = Math.round(d);

Java mostrar un error


possible lost of precision

Por qu?
Math.round() devuelve un valor tipo long no int

Cmo arreglarlo?
double d = 3.6;
int x = (int) Math.round(d);
Hayde Mndez

Programacin 2

14

Ejemplo
Consideremos los siguiente ejemplos:
int n = 100;
long l = n;

Ocupa 4 bytes
encaja
automticamente

long l = 100;

Casting
implcito

int num1=100;
short num2=(short)num1;

Ocupa 4 bytes
casting explcito

Hayde Mndez

Programacin 2

15

Ejemplos
int num1=1000000;
short num2=(short)num1;
double num1=25.5;
float num2=(float)num1;

Compila pero
produce valores
incongruente ya
que se sale del
rango del tipo short
Funciona
perfectamente
Casting explcito

float num1=25.5;

Funciona?

float num1=(float)25.5;

No! Pero esto s

Hayde Mndez

Programacin 2

16

Ejemplos extraos
long num1 = 10000000000;

Esto no
funciona

long num1 = (long)10000000000;

Esto
tampoco..

long num1 = 1000000000L


long num1 = 1000000000l
byte num = 10;
byte num = (byte)10;

Hayde Mndez

Cualquiera
de estos
dos s
Cul es la
forma
correcta?

Ambos entonces porque no funciona


igual en el float quin sabe Java
rules
Programacin 2
17

Algunas notas
No es posible realizar casting entre booleanas y
cualquier otra variable primitiva.
S es posible realizar casting entre una variable
char y una variable primitiva que almacene
enteros.
Tambin en el caso contrario es posible. Debe
utilizarse un casting explcito en ambos casos.

Hayde Mndez

Programacin 2

18

Tarea
Debe realizar un programa, que lea del teclado
un valor entero, el cul representa una
temperatura dada en grados Celsius, gurdelo
con el nombre de temp, si no cumple con este
requisito, tendr como nota 0.
Su programa debe convertir esta temperatura a
su equivalente en grados Farenheit
TempF = 32 + (9* tempC)/5
Hayde Mndez

Programacin 2

19

Potrebbero piacerti anche