Java EXPRESIONESEXPRESIONES
Haydeé MéndezProgramación 2 2 Expression ¿Cuál es el valor utilizado para inicializar x? int x = * 5; ¿Cuál es el valor desplegado? System.out.println(5/2.0); Algunas reglas de Java Cada operador tiene un nivel de precedencia y asociatividad Los operadores con precedencia más alta se operan primero Cuando el punto flotante es utilizado el resultado será también real x =
Haydeé MéndezProgramación 2 3 Expression ¿Calculará la siguiente instrucción 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 división y luego realizará la suma de los tres valores (Java utiliza la jerarquía estándar de operadores)
Haydeé MéndezProgramación 2 4 System.out.println Sirve para imprimir mensajes a pantalla System.out.println(hola mundo); Se puede desplegar más de un mensaje utilizando el operador + int i = 8; System.out.println(i = + 8); También el System.out.print imprime, pero no agrega un salto de línea al final System.out.print(hola ); System.out.println(mundo); hola mundo
Haydeé MéndezProgramación 2 5 Imprimiendo caracteres especiales Para imprimir algunos caracteres especiales Java utiliza las siguientes secuencias \bbackspace \nnewlin \ttab \rcarriage return \\backslash \double quote \single quote
Haydeé MéndezProgramación 2 6 Ejemplo ¿Cuál 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é MéndezProgramación 2 7 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: ); ¿Qué se imprime? result: 34.0 System.out.println (result: + (3+4.0)); ¿Qué se imprime? result: 7.0
Haydeé MéndezProgramación 2 8 Leyendo valores del teclado Para poder leer valores desde el teclado, primero debe crearse un objeto Scanner Para realizar esto usaremos el siguiente código Scanner stdin = new Scanner(System.in);
Haydeé MéndezProgramación 2 9 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() // nextLong(): next input value as a long
Haydeé MéndezProgramación 2 10 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() // next(): get next whitespace-free string public String nextLine() // nextLine(): return contents of input // line buffer public boolean hasNext() // hasNext(): is there a value to next
Haydeé MéndezProgramación 2 11 Ejemplo int x = stdin.nextInt(); double d = stdin.nextDouble(); String s = stdin.next(); String s = stdin.nextLine();
Haydeé MéndezProgramación 2 12 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é MéndezProgramación 2 13 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 relación de herencia entre ellas Se distinguen dos clases de casting: Implícito: no necesita código para llevarse a cabo. Ocurre cuando se realiza una conversión ancha. Explícito: si es necesario código para llevarse a cabo. Ocurre cuando se realiza una conversión estrecha.
Haydeé MéndezProgramación 2 14 Casting Consideremos el siguiente código: 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 ¿Cómo arreglarlo? double d = 3.6; int x = (int) Math.round(d);
Haydeé MéndezProgramación 2 15 Ejemplo Consideremos los siguiente ejemplos: int n = 100; long l = n; long l = 100; int num1=100; short num2=(short)num1; Ocupa 4 bytes encaja automáticamente Casting implícito Ocupa 4 bytes casting explícito
Haydeé MéndezProgramación 2 16 Ejemplos int num1= ; short num2=(short)num1; double num1=25.5; float num2=(float)num1; float num1=25.5; float num1=(float)25.5; Compila pero produce valores incongruente ya que se sale del rango del tipo short Funciona perfectamente Casting explícito ¿Funciona? No! Pero esto sí
Haydeé MéndezProgramación 2 17 Ejemplos extraños long num1 = ; long num1 = (long) ; long num1 = L long num1 = l byte num = 10; byte num = (byte)10; Esto no funciona Esto tampoco.. Cualquiera de estos dos sí ¿Cuál es la forma correcta? Ambos… entonces porque no funciona igual en el float… quién sabe… Java rules
Haydeé MéndezProgramación 2 18 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. También en el caso contrario es posible. Debe utilizarse un casting explícito en ambos casos.
Haydeé MéndezProgramación 2 19 Ejercicio 1 Debe realizar un programa, que lea del teclado un valor entero, el cuál representa una temperatura dada en grados Celsius Su programa debe convertir esta temperatura a su equivalente en grados Farenheit Temp°F = 32 + (9* temp°C)/5