While y For conversion de Estructura

Hola a todos, estoy empezando a penas con JAVA, y estoy estudiando de manera virtual, me dejaron investigar las siguientes preguntas, que espero que con su experiencia mes den sus observaciones para ir conociendo mejor este lenguaje y saber que usar y en casos cada instruccion. Les agradezco a todos su apoyo que de verdad ocupo.

1. ¿Toda estructura for se puede convertir a while? ¿y viceversa? (Sí/No,
¿por qué?)

2. ¿Cuál será la desventaja en el uso de casting?

Saludos

Ramón Jacobo
rjacobo@hotmail.com
ramon.jacobo@gruposacsa.com.m

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

casos

Pues según yo el   y el   siempre son intercambiables, la diferencia es que a veces es más fácil implementar un for que un while.

Algunos ejemplos de equivalencias muy simples, en donde hay una condición que siempre se resuelve a lo mismo (siempre da true, o siempre da false):

 

Si quieres un ciclo donde tengas un contador, pues un   es más conveniente porque ya tiene esa funcionalidad incluida:

 

Incluso usando iteradores sobre algunas colecciones, es más compacto el for (aunque ya ni for ni while conviene en esos casos, sino usar mejor el nuevo for de iterador en Java, a menos que necesites modificar la colección dentro del ciclo):

 

En cuanto al uso de casting, siento que tu pregunta es demasiado abierta, no sé qué quieran ver con eso. Supongo que si tuvieras un programa donde todas las variables son tipo Object y te la pasas haciendo casting todo el tiempo, pues tienes dos desventajas: primero que nada, mucho más código por tanto casting. Segunda, que pueden ocurrir excepciones en tiempo de ejecución si resulta que invocas un método en un objeto que no lo tiene, o si tratas de asignar un objeto de un tipo en una variable de otro tipo.

Si la pregunta va orientada al uso de colecciones (lo pienso tal vez por la naturaleza de la primera pregunta), entonces pues la bronca es esa; que puedes tener colecciones heterogéneas y realmente no sabes qué traen adentro; con el uso de los Generics ya no es necesario hacer tanto cast porque puedes definir colecciones que van a contener elementos del mismo tipo y ya con eso no tienes que hacer tanto casting y muchos problemas se resuelven en tiempo de compilación (y es mucho más rápido corregir defectos encontrados en tiempo de compilación, que en tiempo de ejecución).

1. ¿Toda estructura for se

1. ¿Toda estructura for se puede convertir a while? ¿y viceversa? (Sí/No,
¿por qué?)

Si. Porque ambos evaluan una condición para detenerse. El for hace más fácil definir el estado inicial y el incremento.

2. ¿Cuál será la desventaja en el uso de casting?

Que se puede tener errores en tiempo de ejecución si el objeto al que se castea no es de la clase esperada.

 

Fallará si se ejecuta:
 
O para acabar pronto, cualquier otra cosa que no sea un string:

 

O sea que la verificación estática ( en frio y por el compilador ) es echada por la borda.

Otra desventaja ( para el que programa claro ) es que tienes que escribir más código para hacer el cast.

Imagen de Ramon Jacobo

Casos

Hola, agradezco tus atenciones y tus respuestas, y en cuanto al for y While, en que casos para los dos no aplicaria hacer la conversion?

Saludos y gracias de nuevo..

Ramon Jacobo

Ambas son palabras

Ambas son palabras reservadas, pero tienen un significado ( en inglés ) entonces, hay que usar cada una cuando lo que querramos decir sea "mientras" o sea "para"..

Me explico. Si por ejemplo queremos hacer un bucle, mientras haya más datos, usamos un while

 

Si queremos hacer un bucle, para ciertas datos usamos un for
 

Esto ser leería: ( while ) "mientras, haya más datos... haz lo siguiente: " y el segundo: ( for ) "para cada elemento d en la colecion getData haz lo siguiente".

y
 

Se leería: ( for ) "para una i que vale 100 hasta que sea menor que mil avanzando de diez en diez, has lo siguiente"

Como ambos son intercambiables, se usa uno u otro dependiendo de lo que queramos decir.

Por ejemplo para iterar 10 veces

 

Se lee:

"declarar una variable i e incializarla en 0
mientras y sea menor que 10,
incrementar y en uno
y hacer lo siguiente.
"

Mientras que:
 

Se podría leer:

"Para cada i , mientra que i sea menor que diez, incrementando de uno en uno, haz lo siguiente"

Hay veces que un for es más natural, hay veces que un while es más natural. Entonces depende del escenario.

Imagen de ezamudio

otro for

Te falta el otro for, que sigue vigente (el de inicialización, condición, operador).