listadobasico1 javierbenitezdelpozo

6

Click here to load reader

Upload: estudiante

Post on 13-Jun-2015

217 views

Category:

Software


2 download

DESCRIPTION

Unos cuantos problemas que pueden surgir en JAVA

TRANSCRIPT

Page 1: Listadobasico1 javierbenitezdelpozo

IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://informatica.iesgrancapitan.org [email protected]

IES Gran Capitán

Módulo: Desarrollo Web en entorno cliente

Ciclo Formativo de Grado Superior “Desarrollo de aplicaciones Web”

Listado Basico 1

Fecha entrega: 02/10/2014

Autores: Javier Benítez del Pozo

Page 2: Listadobasico1 javierbenitezdelpozo

Listado Básico 1 2

IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ [email protected]

5. Crea la siguiente clase y justifica los resultados.

class ConversionExplicitaExtensora{

public static void main(String[] args){

byte b1=100, b2=100, b3;

//conversión explícita

b3= (byte)(b1 * b2 * b1/100);

System.out.println("Con conversion Explicita: "+ b3);

//conversión extensora

int n;

n= b1 * b2 * b1/100;

System.out.println("Con conversion Extensora: "+ n);

}//final del main

}//Final de la clase

El resultado es el siguiente:

Con la conversión explicita (variable byte) sale el valor 16 porque solo guarda

un byte de información; mientras que con la conversión extensora, en este caso int

guarda hasta 4 bytes de información

6. Crea la siguiente clase y justifica por qué el sufijo float (f ó F) es necesario:

class PotenciaConversion{

public static void main(String[] args){

float f= 1e-39f;

double d= 1e-39;

System.out.println("float: "+ f);

System.out.println("double: "+ d);

}//final del main

}//Final de la clase

El resultado es el siguiente:

Si no se pusiese el sufijo float por defecto lo interpretaría como double

Page 3: Listadobasico1 javierbenitezdelpozo

Listado Básico 1 3

IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ [email protected]

7. Crea la clase EsconditeConfuso con las siguientes sentencias. Interprétalas y

coméntalas en el código.

class EsconditeConfuso{

public static void main(String[] args){

int x = 17;

{

int x = 77;

}

}//final del main

}//Final de la clase

Sale lo siguiente:

Da error porque no puede haber dos variables con el mismo nombre y x ya se

había declarado antes con el valor 17, es decir no se le podría asignar después otro valor

dentro de la misma clase

8. Indica si es verdadero o falso:

a. El tamaño del tipo boolean no está explícitamente definido; sólo se

especifica que debe ser capaz de tomar los valores true o false.

Verdadero.

b. Todos los tipos numéricos tienen signo, de forma que es inútil tratar de

utilizar tipos sin signo.

Verdadero, cuando se asigna una variable por ejemplo de tipo byte, esta abarca

los números desde el -128 hasta el 127

c. El ámbito determina tanto la visibilidad como la vida de los nombres

definidos dentro. Se delimita mediante corchetes []

Falso, el ámbito se delimita entre llaves ({}), no corchetes.

d. La asignación de una variable dentro de un ámbito se mantiene fuera del

ámbito.

Falso. Una variable solo funciona dentro de una clase o ámbito.

e. Una variable definida dentro de un ámbito está disponible también fuera de

su ámbito.

Falso. Una variable solo funciona dentro de una clase o ámbito.

f. Java permite convertir (casting) cualquier tipo primitivo en cualquier otro

tipo, excepto boolean, que no permite ninguna conversión.

Verdadero, porque boolean es una variable que sólo acepta dos valores,

verdadero o falso.

Page 4: Listadobasico1 javierbenitezdelpozo

Listado Básico 1 4

IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ [email protected]

g. Java convierte automáticamente un tipo de datos en otro cuando sea

adecuado (de int a float, p.ej.)

Verdadero, siempre que sea de una variable menor a otra de mayor rango

h. Con las conversiones reductoras (de float a int, p.ej.) nunca se corre el

riesgo de perder información.

Falso, se perderían decimales puesto que int sólo guarda números enteros

i. Hay representación literal de números binarios en Java.

Falso

j. Los sufijos de double, float y long pueden aparecer tanto en mayúsculas

como en minúsculas: 0d, 0D, 0f, 0F, 0l, 0L.

Verdadero, JAVA en ese aspecto no diferencia mayúsculas de minúsculas

k. El prefijo hexadecimal 0x siempre ha de ir en minúsculas

Falso, la x puede ir tanto en mayúscula como en minúscula

9. Si se asigna un valor a una variable fuera de rango (mayor de lo establecido),

¿qué ocurre? ¿Existe alguna manera de resolverlo? Demuéstralo mediante un

ejemplo. (VariableFueraDeRango)

Da error al compilar y habría que declarar otra variable de otro tipo que abarcase

el valor ese dentro de su rango

Solución:

Page 5: Listadobasico1 javierbenitezdelpozo

Listado Básico 1 5

IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ [email protected]

10. Crea una clase AsignacionVariables con el siguiente código. Corrígela si es

necesario y coméntala en el mismo código fuente, indicando errores y valores de

variables.

Nos da error porque hay que asignarle un valor a i

Ahora probamos dándole un valor a i:

Podremos comprobar que ya si compila y además asignándole un valor equivalente a

más de un byte de información nos saldrá un número reducido.

11. Como veremos más adelante, para garantizar que un objeto ha sido

inicializado existen los constructures. ¿Existe algún problema si se intenta acceder

al valor de una variable y ésta no ha sido inicializada?

Page 6: Listadobasico1 javierbenitezdelpozo

Listado Básico 1 6

IES Gran Capitán. C/. Arcos de la Frontera, S/N. 14014 – Córdoba. http://www.iesgrancapitan.org http://www.iesgrancapitan.org/blog04/ [email protected]

Se puede declarar una variale sin inicializar pero no sabremos con que valor se

guardará; y si inmediatamente le ponemos que nos muestre la variable con un

System.ou.prinln no nos compilará nuestro programa.

No compilar nuestro programa, es necesario inicializar la variable antes

12. Qué tipo de problema puede existir con la asignación de variables

Los errores principales serían declarar un valor fuera de rango a una variable,

declarar la misma variable con dos valores distintos o declarar el mismo valor para dos

variables distintas dentro de la misma clase