10
Rafael García Maliga | 1º DAW | September 27, 2012 Listado de ejercicios JAVA BÁSICO

Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

Embed Size (px)

Citation preview

Page 1: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

Rafael García Maliga | 1º DAW | September 27, 2012

Listado de ejercicios JAVA BÁSICO

Page 2: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 1

1. Los tipos de datos “primitivos” tienen un tratamiento especial, ya que no son objetos (no

se crean con new) y se usan frecuentemente en los programas. La razón para el

tratamiento especial es que crear un objeto con new -especialmente variables pequeñas y

simples- no es eficiente porque new coloca el objeto en el montículo (trozo de memoria

RAM). Para estos tipos, Java crea una variable "automática" que no es una referencia. La

variable guarda el valor, y se coloca en la pila (otro trozo de memoria RAM más rápida y

eficiente) para que sea más eficiente. Java determina el tamaño de cada tipo primitivo.

Estos tamaños no varían de una plataforma a otra Indica los bits (no bytes) que ocupan y

rango de valores posibles.

Tipo de variable Bytes que ocupa Rango de valores

boolean 2 true, false

byte 1 -128 a 127

short 2 -32.768 a 32.767

int 4 -2.147.483.648 a 2.147.483.649

long 8 -9 · 1018 a 9 · 1018

double 8 -1,79 · 10308 a 1,79 · 10308

float 4 -3,4 · 1038 a 3,4 · 1038

char 2 Caracteres (en Unicode)

2. Crea la clase EjemploListaAnidada que muestre la siguiente salida. Para ello utiliza el

método System.out.print() con los caracteres \n y \t

Código:

/**

Crea la clase EjemploListaAnidada que muestre la siguiente salida. Para

ello utiliza el

método System.out.print() con los caracteres \n y \t

* @author Rafael García Maliga

* @version 0.1

*/

public class EjemploListaAnidada {

public static void main (String[] args) {

System.out.print("Ejemplo de lista anidad en HTML: ");

System.out.print("\n\t<ul>\n\t\t<li>\n\t\t<li>\n\t\t<li>\n\t\t\t<ul>\n\

t\t\t\t<li>\n\t\t\t\t<li>\n\t\t\t\t<li>\n\t\t\t<\\ul>\n\t<\\ul>\n");

}

}

Resultado:

Page 3: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 2

3. Crea la clase TablaAbecedarioMinusculas que muestre la siguiente salida. Para ello

utiliza el método System.out.print() con los caracteres \n y \t. Utiliza una variable char

con el código Unicode para mostrar la letra ñ. (no uses \udddd).

Código:

/**

Crea la clase TablaAbecedarioMinusculas que muestre la siguiente

salida. Para ello

utiliza el método System.out.print() con los caracteres \n y \t.

Utiliza una variable char

con el código Unicode para mostrar la letra ñ. (no uses \udddd)

* @author Rafael García Maliga

* @version 0.1

*/

public class TablaAbecedarioMinusculas {

public static void main (String[] args) {

char ene = 241; // Caracter ñ en unicode (\u00f1)

int contador = 0;

//Imprimir en pantalla el abecedario

System.out.print("Esto es una tabla con el abecedario en

minúsculas: \n");

//Arreglo que contiene el abecedario

String abecedario[] =

{"a","b","c","d","e","f","g","h","i","j","k","l","m","n",""+ene,"o","p"

,"q","r","s","t","u","v","w","x","y","z",""};

for (int ln=0; ln<=6; ++ln){

for (int i=0; i<=3; ++i){

System.out.print("\t"+abecedario[i+contador]);

}

contador=contador+4;

System.out.print("\n"); //Salto de linea

}

}

}

Resultado:

Page 4: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 3

4. Crea la clase CaracteresEspagnoles que muestre la siguiente salida. Para ello utiliza el

método System.out.print() con los caracteres \n y \t. Utiliza el formato de carácter

\udddd .

Código:

/**

Crea la clase CaracteresEspagnoles que muestre la siguiente salida.

Para ello utiliza el

método System.out.print() con los caracteres \n y \t. Utiliza el

formato de carácter

\udddd

* @author Rafael García Maliga

* @version 0.1

*/

public class CaracteresEspagnoles {

public static void main (String[] args) {

System.out.print("Esto carácteres son muy nuestros: \n");

System.out.print("\t\u00e1\t\u00ed\t\u00f3\t\u00fa\t\u00f1\t\u00d1\t\u0

0aa\t\u00ba\n");

}

}

Resultado:

5. Crea la siguiente clase y justifica los resultados.

Código:

/**

Crea la siguiente clase y justifica los resultados.

Page 5: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 4

* @author Rafael García Maliga

* @version 0.1

*/

public 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 conversión Explícita: " + b3);

//Conversión extensora

int n;

n= b1*b2*b1/100;

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

}

}

Resultado:

El resultado correcto de la operación es 10000. El primer resultado que nos arroja es incorrecto ya

que hacemos uso de una variable tipo “byte” (1 byte), y al ser el resultado de la operación un

número superior a 127 este no puede ser representado, sin embargo en la segunda solución es

correcta porque estamos haciendo uso de una variable de tipo “int” (32byte) que permite valores

desde -2.147.483.648 hasta 2.147.483.649.

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

Código:

/**

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

necesario:

* @author Rafael García Maliga

* @version 0.1

*/

public 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);

}

Page 6: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 5

}

Resultado:

El sufijo es necesario puesto que si no lo incluimos java lo considera por defecto de tipo “double” en

lugar de un valor float.

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

coméntalas en el código.

Código:

/**

Crea la clase EsconditeConfuso con las siguientes sentencias.

Interprétalas y coméntalas en el código

* @author Rafael García Maliga

* @version 0.1

*/

public class EsconditeConfuso {

public static void main (String[] args) {

int x = 17; //Se declara e inicializa la variable

{

int x = 77; /*Se vuelve a declarar y se le asigna un nuevo

valor.

Esto es incorrecto puesto que ya la habíamos declarado. Por tanto o

bien le cambiamos el nombre de la variable (nueva variable) o

eliminamos la declaración (int).

*/

}

}

}

Resultado:

Page 7: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 6

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 (Permiten el uso de signos + y – según se requiera).

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

Se delimita mediante corchetes [].

Falso (Se limita mediante claves {}).

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

Falso (Se mantiene en el ámbito al cual pertenece).

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

Falso (Solo está disponible dentro de su ámbito).

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

boolean, que no permite ninguna conversión.

Verdadero

g. Java convierte automáticamente un tipo de datos en otro cuando sea adecuado (de int a

float, p.ej.).

Page 8: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 7

Verdadero (si es de menor a mayor).

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

información.

Falso (Se perderían los decimales).

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

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

Falso (puede ir en ambas).

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).

Produciría un error en el resultado, puesto que es incapaz de representar dicho valor.

Código:

/**

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)

* @author Rafael García Maliga

* @version 0.1

*/

public class VariableFueraDeRango {

public static void main (String[] args) {

{

int i = 1500;

byte b = (byte) i; //realizamos la conversión (cast)

System.out.println("Valor dentro de rango (int)" + i);

//mostramos el valor de i (int)

System.out.println("Valor fuera de rango (byte)" + b);

//mostramos el valor de b (byte)

}

}

}

Resultado:

Page 9: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 8

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.

Código:

/**

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.

* @author Rafael García Maliga

* @version 0.1

*/

public class AsignacionVariables {

public static void main (String[] args) {

{

int i; //La variable no ha sido inicializada

/*

Para solucionar el error debemos de asignarle un

valor a la variable i

*/

i= 22; /* Le asignamos un valor dentro del rango

dentro del rango byte para que no produzca error

al realizar la conversión de tipo integer a byte.*/

byte b = (byte) i; //realizamos la conversión (cast)

System.out.println(i); //mostramos el valor de i (int)

System.out.println(b); //mostramos el valor de b (byte)

}

}

}

Resultado:

Page 10: Lista_ejercicios_Java_Básico_Garcia_Maliga_Rafael

PAGE 9

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

los constructores. ¿Existe algún problema si se intenta acceder al valor de una variable y

ésta no ha sido inicializada?

Si, en java es necesario inicializar las variables antes de ser usada. Si esta está declarada pero no

inicializada producirá un error en el código puesto que no posee ningún valor.

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

Que produzca un error al asignarle valores que estén fuera de su rango, por tanto hay que tener

muy en cuenta que tipo de valores va a ser necesario manejar y elegir un tipo en consecuencia.