Java - Que es mas rapido utilizar un switch o un if con varios else if

 
Vista:
Imágen de perfil de Anthony
Val: 11
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Que es mas rapido utilizar un switch o un if con varios else if

Publicado por Anthony (4 intervenciones) el 15/01/2021 21:29:01
Hola buenas quería peguntarles que es mejor, utilizar un switch o un if con varios else if a la hora de valorar esta duda se me plantea a la hora por ejemplo de leer un carácter y visualizar si se trata de una vocal o consonante
creo un if que si el carácter introducido no es igual a "a" entre en un else if que valore si es igual a "e" y asi sucesivamente con las vocales y si no es ninguna de esas terminar con un else que diga que es una consonante, o por otro lado crear un switch con default consonante por si no se cumple ninguno de los case.

Es mi primera consulta en este foro y estoy aprendiendo a programar muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Que es mas rapido utilizar un switch o un if con varios else if

Publicado por Tom (1831 intervenciones) el 15/01/2021 22:02:40
En general es más rápido el switch, o eso dicen. No creo ni que se pueda apreciar la diferencia ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 166
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Que es mas rapido utilizar un switch o un if con varios else if

Publicado por Cesar (52 intervenciones) el 15/01/2021 22:25:37
Hola.

En efecto, es más rápido switch.

Si depuras por pasos tu programa, observarás que con IFs el programa evalúa todos los IFs, hasta que encuentra el que cumple. Y con SWITCH, brinca directamente a la condición.

En tiempo real, como indican, no se aprecia mucho la diferencia, ya que son milisegundos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Que es mas rapido utilizar un switch o un if con varios else if

Publicado por Kabuto (1381 intervenciones) el 16/01/2021 00:29:54
Al margen de la velocidad de procesado, un switch es más cómodo de leer a ojos del programador, y también de escribir.
Tú mismo puedes comparar los dos códigos que propones y verás que el switch es más cómodo y elegante.

Por otra parte, en realidad no necesitarías tantos else if para comprobar si un carácter es vocal.
Podrías resolverlo así:

1
2
3
4
if (caracter == 'a' || caracter == 'e' || caracter == 'i' || caracter == 'o' || caracter == 'u')
    System.out.println("Es vocal");
else
    System.out.println("No es vocal);

Aun así, prefiero el switch. Además si quisiéramos tener en cuenta las vocales mayúsculas, con el switch sigue quedando igual de elegante.
Con el ejemplo anterior, si ya es fea la expresión con 5 comparaciones, imagínate con 10...

Así que por norma general, un switch siempre es más recomendable antes que un if con demasiadas condiciones y/o muchos else if.

Sin embargo, el switch tiene algunas limitaciones.
Los case no contemplan comparaciones de "mayor que", "mayor o igual", "menor que" o "menor o igual."

Un ejercicio donde por ejemplo quisiéramos evaluar rangos de edad, inevitablemente hay que usar if else if:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (edad < 3)
    System.out.println("Eres un bebé");
else if (edad >= 3 && edad <13)
    System.out.println("Eres un niño");
else if (edad >= 13 && edad <18)
    System.out.println("Eres un adolescente");
else if (edad >= 18 && edad <35)
    System.out.println("Eres un adulto joven");
else if (edad >= 35 && edad <65)
    System.out.println("Eres un adulto de mediana edad");
else if (edad >= 65 && edad <=99)
    System.out.println("Eres un anciano");
else if (edad >99)
    System.out.println("Eres una momia");
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de Anthony
Val: 11
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Que es mas rapido utilizar un switch o un if con varios else if

Publicado por Anthony (4 intervenciones) el 20/01/2021 22:33:13
Muchísimas gracias por la explicación.
Me ha servido mucho espero que me ayudes con próximas dudas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar