Lista Ejercicios Java Básico Garcia Maliga Rafael

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

Listado de ejercicios

JAVA BSICO

Rafael Garca Maliga | 1 DAW | September 27, 2012

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 razn para el tratamiento especial es que crear un objeto con new -especialmente variables pequeas y simples- no es eficiente porque new coloca el objeto en el montculo (trozo de memoria RAM). Para estos tipos, Java crea una variable "automtica" que no es una referencia. La variable guarda el valor, y se coloca en la pila (otro trozo de memoria RAM ms rpida y eficiente) para que sea ms eficiente. Java determina el tamao de cada tipo primitivo. Estos tamaos no varan de una plataforma a otra Indica los bits (no bytes) que ocupan y rango de valores posibles.

Tipo de variable boolean byte short int long double float char

Bytes que ocupa 2 1 2 4 8 8 4 2

Rango de valores true, false -128 a 127 -32.768 a 32.767 -2.147.483.648 a 2.147.483.649 -9 1018 a 9 1018 -1,79 10308 a 1,79 10308 -3,4 1038 a 3,4 1038 Caracteres (en Unicode)

2. Crea la clase EjemploListaAnidada que muestre la siguiente salida. Para ello utiliza el mtodo System.out.print() con los caracteres \n y \t
Cdigo: /** Crea la clase EjemploListaAnidada que muestre la siguiente salida. Para ello utiliza el mtodo System.out.print() con los caracteres \n y \t * @author Rafael Garca 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 1

3. Crea la clase TablaAbecedarioMinusculas que muestre la siguiente salida. Para ello utiliza el mtodo System.out.print() con los caracteres \n y \t. Utiliza una variable char con el cdigo Unicode para mostrar la letra . (no uses \udddd).
Cdigo: /** Crea la clase TablaAbecedarioMinusculas que muestre la siguiente salida. Para ello utiliza el mtodo System.out.print() con los caracteres \n y \t. Utiliza una variable char con el cdigo Unicode para mostrar la letra . (no uses \udddd) * @author Rafael Garca 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 minsculas: \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 2

4. Crea la clase CaracteresEspagnoles que muestre la siguiente salida. Para ello utiliza el mtodo System.out.print() con los caracteres \n y \t. Utiliza el formato de carcter \udddd .
Cdigo: /** Crea la clase CaracteresEspagnoles que muestre la siguiente salida. Para ello utiliza el mtodo System.out.print() con los caracteres \n y \t. Utiliza el formato de carcter \udddd * @author Rafael Garca Maliga * @version 0.1 */ public class CaracteresEspagnoles { public static void main (String[] args) { System.out.print("Esto carcteres 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.


Cdigo: /** Crea la siguiente clase y justifica los resultados.

PAGE 3

* @author Rafael Garca Maliga * @version 0.1 */ public class ConversionExplicitaExtensora { public static void main (String[] args) { byte b1=100, b2=100, b3; //Conversin explcita b3= (byte) (b1*b2*b1/100); System.out.println("Con conversin Explcita: " + b3); //Conversin extensora int n; n= b1*b2*b1/100; System.out.println("Con conversin Extensora: " + n); } }

Resultado:

El resultado correcto de la operacin 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 operacin un nmero superior a 127 este no puede ser representado, sin embargo en la segunda solucin 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:


Cdigo: /** Crea la siguiente clase y justifica por qu el sufijo float (f F) es necesario: * @author Rafael Garca 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 4

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. Interprtalas y comntalas en el cdigo.
Cdigo: /** Crea la clase EsconditeConfuso con las siguientes sentencias. Interprtalas y comntalas en el cdigo * @author Rafael Garca 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 habamos declarado. Por tanto o bien le cambiamos el nombre de la variable (nueva variable) o eliminamos la declaracin (int). */ } } }

Resultado:

PAGE 5

8. Indica si es verdadero o falso:


a. El tamao del tipo boolean no est explcitamente definido; slo se especifica que debe ser capaz de tomar los valores true o false. Verdadero b. Todos los tipos numricos tienen signo, de forma que es intil tratar de utilizar tipos sin signo. Verdadero (Permiten el uso de signos + y segn 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 asignacin 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 tambin 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 conversin. Verdadero g. Java convierte automticamente un tipo de datos en otro cuando sea adecuado (de int a float, p.ej.).

PAGE 6

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 informacin. Falso (Se perderan los decimales). i. Hay representacin literal de nmeros binarios en Java. Falso j. Los sufijos de double, float y long pueden aparecer tanto en maysculas como en minsculas: 0d, 0D, 0f, 0F, 0l, 0L. Verdadero k. El prefijo hexadecimal 0x siempre ha de ir en minsculas. 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? Demustralo mediante un ejemplo. (VariableFueraDeRango).
Producira un error en el resultado, puesto que es incapaz de representar dicho valor. Cdigo: /** Si se asigna un valor a una variable fuera de rango (mayor de lo establecido), qu ocurre? Existe alguna manera de resolverlo? Demustralo mediante un ejemplo. (VariableFueraDeRango) * @author Rafael Garca Maliga * @version 0.1 */ public class VariableFueraDeRango { public static void main (String[] args) { { int i = 1500; byte b = (byte) i; //realizamos la conversin (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 7

10. Crea una clase AsignacionVariables con el siguiente cdigo. Corrgela si es necesario y comntala en el mismo cdigo fuente, indicando errores y valores de variables.
Cdigo: /** Crea una clase AsignacionVariables con el siguiente cdigo. Corrgela si es necesario y comntala en el mismo cdigo fuente, indicando errores y valores de variables. * @author Rafael Garca 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 conversin de tipo integer a byte.*/ byte b = (byte) i; //realizamos la conversin (cast) System.out.println(i); //mostramos el valor de i (int) System.out.println(b); //mostramos el valor de b (byte) } } }

Resultado:

PAGE 8

11. Como veremos ms adelante, para garantizar que un objeto ha sido inicializado existen los constructores. Existe algn 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 cdigo puesto que no posee ningn valor.

12. Qu tipo de problema puede existir con la asignacin de variables?


Que produzca un error al asignarle valores que estn 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.

PAGE 9

You might also like