Documentos de Académico
Documentos de Profesional
Documentos de Cultura
int a = 3, b = 4;
El resto de operandos se aplican igual, salvo los de nivel de bits, que tendremos que hacer
primero la conversión, tal y como vimos en la página anterior y después el cálculo de la
operación y la asignación del resultado.
Tipos de Cash.
¿Qué es un cash en java?
Cash Implícito.
Cash Explícito.
Cash implícito
En el caso de Cash Implícito., Java nos resuelve el problema, ya que al ser una
conversión de un tipo de variable de menor tamaño a uno de mayor tamaño, esto se realiza
sin pérdida de datos y de forma automática por Java.
Ejemplo
int var1=14;
float var2;
// al ser una asignación de una variable tipo int a una tipo float que reserva mayor tamaño
de memoria, no hace falta aplicar ningún "cash", java se encarga de hacerlo de manera
implícita y la variable var2 añadiría el coma flotante, resultando:
var2 == 14.0
Cash explícito
En el caso de Cash Explícito., Java no resuelve el problema, ya que al ser una conversión
de un tipo de variable de mayor tamaño a uno de menor tamaño, hay una pérdida de datos,
por tanto debemos aplicar el correspondiente cash para que java sepa cómo actuar.
Ejemplo:
int var1;
float var2=25.6;
// Al ser una asignación de una variable tipo float a una tipo int que reserva menor tamaño
de memoria, hay que aplicar un "cash", resultando:
var1 == 25 // Solo se conserva la parte entera del número, desechando la decimal.
Condicional switch.
El condicional swich es una sentencia que nos permite al igual que la sentencia if else,
tratar esos casos donde se deban evaluar varias condiciones, pero a diferencia de if else la
sintaxis empleada es más clara. Lo único es que el resultado de la condición o expresión
evaluada debe ser un entero. (A partir de Java 7, se permiten resultados tipo String) La
sintaxis empleada es la siguiente:
switch ( ExprPrincipal ) {
case Expr1:
Sentencias;
case Expr2:
Sentencias;
case Expr3:
Sentencias;
case Expr4:
Sentencias;
case Expr5:
Sentencias;
default :
Sentencias;
}
int a = 10;
int b = 14;
switch ( b - a ) {
case 1:
System. out.println ("El resultado está en el 'primer case'.");
case 2:
System. out.println ("El resultado está en el 'segundo case'.");
case 4:
System.out.println ("El resultado está en el 'tercer case'.");
Este ejemplo es muy sencillo de entender. Se han declarado dos variables tipo int a las
que hemos asignado unos valores. Después se ha utilizado como expresión la diferencia
de "b" menos "a", que dará un valor determinado, en concreto da como resultado "4",
aunque bien podríamos no saberlo y dejar a la instrucción que busque entre los "case" a
ver si coincide alguno (Esta es otra forma de utilizarlo.). Por otro lado, hemos incluido en
cada case una simple sentencia, que permite ver por consola una cadena de texto. Tras la
ejecución del programa, el único case que coincide con el resultado "4" es el tercer case,
“case 4:”. Por tanto, se ejecutaría el código que este tenga en su bloque, que sería:
System.out. println ("El resultado está en el 'tercer case'.");
Pero, que ocurriría si tras el último case tuviésemos otro case, por ejemplo:
int a = 10;
int b = 14;
switch ( b - a ) {
case 1:
System.out.println ("El resultado está en el 'primer case'.");
case 2 :
System.out.println ("El resultado está en el 'segundo case'.");
case 4 :
System.out.println ("El resultado está en el 'tercer case'.");
case 5 :
System.out.println ("El resultado está en el 'cuarto case'.");
el resultado sería que se ejecutarían la sentencia del tercer case, case 4: y la del case o
cases que le siguiesen, en este caso case 5:
int a = 10;
int b = 14;
switch ( b - a ) {
case 1 :
System.out.println ("El resultado está en el 'primer case'.");
break;
case 2 :
System.out.println ("El resultado está en el 'segundo case'.");
break;
case 4 :
System.out.println ("El resultado está en el 'tercer case'.");
break;
case 5 :
System.out.println ("El resultado está en el 'cuarto case'.");
De esta manera aseguramos de que solo se ejecute las sentencias del case que realmente
coincide con el resultado de la condición del switch. En el último case no es necesario
poner un break.
Como pueden observar dentro de esa cadena aparece un marcado con comillas simples
('): las cadenas 'primer case', 'segundo case'...Esto es con la intención de que veamos cómo
debemos incluir el texto dentro o junto a otra cadena de texto, para que el compilador de
java no muestre error de compilación.
Hay varias formas posibles de incluir un texto entrecomillado dentro de otro texto, estas
son:
Si lo que se desea es presentar texto entre comillas dobles (".......") y que estas aparezcan
en consola, también hay varias formas:
int a = 10;
int b = 14;
char c = ' " '; // Incluimos el caracter que queremos presentar, entre comillas
simples.
switch ( b - a ) {
case 1:
System. out.println ("El resultado está en el"+c+ 'primer case'+c+".");
case 2:
System.out.println ("El resultado está en el"+c+ 'segundo case'+c+".");
case 4:
System.out.println ("El resultado está en el"+c+ 'tercer case'+c+".");
int a = 10;
int b = 14;
int c = 34; // 34 es el valor decimal del caracter (").
switch ( b - a ) {
case 1:
System.out.println ("El resultado está en el"+(char)c +"primer case"+
(char)c +".");
case 2:
System.out.println ("El resultado está en el"+(char)c +"segundo case"+
(char)c+".");
case 4:
System.out.println ("El resultado está en el"+ (char)c +"tercer
case"+(char)c +".");
// Aplicando un "(cash)" a la variable tipo int "c" para convertirla en tipo "char".
}
Esto es solo una pequeña forma del trabajo con cadenas, para familiarizarse con las
mismas.
Bucle while
Bucle do while
Bucle for
Bucle while
El bucle while evalúa una condición y tras esta, puede o no, ejecutar el código o
instrucciones de su bloque un número determinado de veces que oscila de 0 a infinitas
veces, dependiendo de si el bucle está controlado o no por una sentencia condicional o
condición.
while (condición)
{
sentencias o instrucciones
}
Bucle for
El bucle for ejecuta el bloque de instrucciones controladas por un contador, mientras se
cumpla una determinada condición hasta que la condición evaluada retorne false,
momento en el cual se saldrá del bucle for
Por último decir que los bucles pueden anidarse, es decir, incluir bucles unos dentro de
otros, para conseguir resultados determinados:
Bucle do while
El bucle do while ejecuta el bloque de instrucciones del do y después evalúa la condición
de la instrucción while. Esta hará que las instrucciones del bloque do sigan o no sigan
ejecutándose. El bucle do while asegura que el bloque de instrucciones controladas por el
do, se ejecuten al menos una vez.
do
{
sentencias o instrucciones
} while (condición) ;
El while del bucle do while a diferencia del bucle while debe acabar en punto y coma (;),
es importante no olvidarlo. El esquema de funcionamiento de esta instrucción es como el
siguiente:
las instrucciones del do se ejecutan primero, después se evalúa la condición del while. Si
esta resulta true, vuelven a ejecutarse las instrucciones del bloque do y repite mismo
proceso hasta que la condición del while resulte false, momento en que el programa saldrá
del bucle y seguirá su curso después de él.
Consola, println
El significado de esta sentencia es: Utilizamos el método println, llamado por el objeto
out, que pertenece a la clase System, para mostrar una información en la consola. En caso
de utilizar "Netbeans", dicha información aparece en un apartado del mismo programa.
Entrada de Datos
Java está diseñado para trabajar bajo Entorno Gráfico, aunque es posible introducir datos
con el teclado en un programa que los solicite y que estos aparezcan por consola aplicando
los métodos de una clase, que anteriormente hemos creado y que situaremos, bien dentro
de la misma clase que contiene al método main, ó tal y como es lo habitual y
recomendable, situaremos aquella clase en un fichero aparte, en el mismo paquete donde
se encuentre la clase que contiene el programa principal.
Como de momento no hemos tratado el tema de las clases, ni métodos, ni paquetes, etc.,
nos limitaremos a copiar la clase, dentro de la clase que contiene el programa principal,
para poder realizar la entrada de datos.
El código que tiene la siguiente clase, que después se pondrá en el cuerpo de la clase del
programa principal. Dicha clase que he llamado EntDatos, tiene el siguiente código:
import java.io.*;
Los ARRAY
Array unidimensionales
En el segundo caso, hemos creado la matriz "notas" de tipo int y hemos asignado a la
misma "7" valores, por tanto hemos creado "7 elementos" automáticamente. Por supuesto
al igual que en el caso anterior, a cada elemento le corresponde su respectivo índice
(0...6), que nos dará total acceso al dato guardado en aquel.
A veces en los programas que se crean, necesitamos expresar de alguna manera, el tamaño
o elementos que tiene una matriz que utilicemos, incluso cuando sabemos perfectamente
el tamaño de la misma, al haberla declarado y creado anteriormente. Para ello en Java
disponemos de la palabra reservada length, que devuelve un entero, con el número de
elementos que tiene dicha matriz. Se utiliza de la siguiente manera:
Con esta sentencia hemos asignado el valor "10" al elemento de la matriz con índice 2.
Por ejemplo cogiendo los valores que hemos asignado antes a la matriz notas:
Quedarían así al visualizar la matriz completa (Asunto que aún no hemos tratado):
int a =10;
notas [ 2 ] = a ;
double a =10.3;
notas [ 2 ] = ( int ) a ; // Aplicando un cast.
Matrices multidimensionales
Con esta sentencia hemos creado una matriz multidimensional de dos dimensiones. El
primer corchete [2], indica el número de matrices de una sola dimensión o
unidimensionales que hay, por tanto su tipo de dato es int [ ]. En este caso hay 2 matrices
unidimensionales. El segundo corchete [3], indica el número de elementos que tiene cada
una de las dos matrices unidimensionales anteriores y su tipo de dato es int. Los índices
de esta matriz creada quedarían de la siguiente manera:
notas [ 0 ] [ 0 ] = 10 ;
notas [ 1 ] [ 2 ] = 9 ;
Como se puede observar se ha declarado dos variables lim_0 y lim_1, para saber el
tamaño de cada matriz unidimensional y establecer límites a los bucles. Las variables "k"
y "l" representan las filas y las columnas de la matriz bidimensional.
Para asignar datos a la matriz se puede utilizar la clase EntDatos y su método entero( )
para introducir números enteros por teclado. Esta clase debe de estar en el mismo paquete,
donde utilicemos la llamada a la misma, o en su defecto (no aconsejable) en la clase donde
se sitúe el programa principal (contiene el método main( )) desde donde efectuemos la
llamada al método de la clase EntDatos.
Matrices tridimensionales
Hasta ahora en esta página nos hemos centrado en trabajar con una matriz de dos
dimensiones o bidimensional, compuesta de una dimensión filas (eje y) y una dimensión
columnas (eje x). Para crear una matriz tridimensional hay que añadir un eje más (eje
Z) a la síntexis de la tabla o matriz:
La tabla podría representarse con el siguiente dibujo, donde podemos ver los índices
que tendrían cada elemento de la misma:
Para asignar valores a este tipo de matriz, se haría así, para un ejemplo:
cubo [ 0 ] [ 0 ] [ 0 ] = 10 ;
cubo [ 2 ] [ 2 ] [ 0 ] = 20 ;
cubo [ 1 ] [ 2 ] [ 2 ] = 5 ;
Se puede utilizar, también bucles anidados for para asignar y ver los valores de la matriz
tridimensional después:
Dato
Nombre Descripción Parámetros
devuelto
Busca un valor que le Un array y un valor. Los dos del
pasamos por parámetro, mismo tipo. Estos pueden ser un
binarySearch int
devuelve su posición. byte, char, double, float, int, long,
Debe estar ordenado. short u objecto.
Dato
Nombre Descripción Parámetros
devuelto
Un array y la longitud. Si se pasa
del tamaño del array original, array del
Copia un array y lo
rellena los con ceros las posiciones mismo tipo
copyOf devuelve en un nuevo
sobrantes. Estos pueden ser un que se
array.
byte, char, double, float, int, long, introduce
short u objecto.
Copia un array y lo
Un array, posición origen y destino. array del
devuelve en un nuevo
Estos pueden ser un byte, char, mismo tipo
copyOfRange array. Le indicamos la
double, float, int, long, short u que se
posición de origen y de
objecto. introduce.
destino.
Indica si dos arrays son
equals Dos arrays del mismo tipo. true o false
iguales.
Un array y el valor a rellenar.
Rellena un array con un
Estos pueden ser un byte, char, No devuelve
fill valor que le indiquemos
double, float, int, long, short u nada
como parámetro.
objecto.
Un array.
Estos pueden ser un byte, char, No devuelve
sort Ordena el array.
double, float, int, long, short u nada
objecto.
Devuelve una
Muestra el contenido del Un array. Estos pueden ser un
cadena con el
toString array pasado como byte, char, double, float, int, long,
contenido del
parámetros short u object.
array.
1 import java.util.Arrays;
2 public class PruebaApp {
3
public static void main(String[] args) {
4 int num[]={8, 10, 15, 20, 21, 25, 30, 32, 40, 41};
5
6 //Devuelve un 4
7 System.out.println("Metodo binarySearch:
8 "+Arrays.binarySearch(num, 21));
//Copia el array num hasta la quinta posicion(este último no
9 incluido), devuelve un array
10 int num2[]=Arrays.copyOf(num, 4);
11
12 System.out.println("Metodo copyOf ");
13 //Lo recorremos para ver que lo realiza correctamente
14 muestraArray(num2);
15
16devuelve//Copia
un array
el array num de la tercera hasta la octava posicion,
17 int num3[]=Arrays.copyOfRange(num, 2, 6);
18 System.out.println("Metodo copyOfRange");
19 muestraArray(num3);
20
21 //Compara si num1 y num2 no son iguales
System.out.println("Metodo equals: "+Arrays.equals(num,
22num2));
23
24 System.out.println("Metodo fill");
25 Arrays.fill(num3, 5);
26 muestraArray(num3);
27
28 System.out.println("Metodo toString");
System.out.println(Arrays.toString(num));
29 }
30
31 public static void muestraArray(int num[]){
32
33 for (int i=0;i<num.length;i++){
34 System.out.println(num[i]);
35 }
36
}
37}
38
39