Comentario en una lnea: //Comenta una lnea Comentar una o ms lneas
/*Estas dos lneas estn comentadas */
Comentarios usados para documentacin automtica (javadoc)
/** Este comentario es usado por javadoc para generar documentacin automtica */
Ejemplo 2.1: Comentando un programa en Java /************************************************ * Esta aplicacin visualiza Hola desde Java! * Autor: Jess Cceres * Importaciones: ninguna *Parmetros: argumentos de la lnea de comandos * Retorno: ninguno * Fecha de creacin: 1/1/05 * ltima actualizacin: 1/10/06 ***********************************************/
public class HolaJava {
public static void main(String[] args) { System.out.println(Hola desde Java!); }
Curso de Java
Jess Cceres Tello Pg. 2 - 23
Tipos de datos
En Java toda variable declarada ha de ser de un tipo, adems, antes de poder utilizarla se ha de inicializar a un valor, si no es as, el compilador no generar el fichero .class. Java es ms particular para mantener la integridad de los tipos que C++, por ejemplo; en C++ se puede asignar un nmero en coma flotante a un entero ya que C++ gestiona la conversin de tipos. En Java se tienen que utilizar las tcnicas de conversin de tipos.
Enteros
Almacenan como su propio nombre indica nmeros enteros, sin parte decimal. Por razones de portabilidad todos los datos en Java tienen el mismo tamao y formato. En Java hay cuatro tipos de enteros:
Tipo Tamao (bytes) Rango Int 4 -2147483648 al 2147483647 Short 2 -32768 al 32767 Long 8 -9223372036854775808 al 9223372036854775807 Byte 1 -128 al 127
Para indicar que una constante es de tipo long lo indicaremos con una L: 23L
Reales
Almacenan nmeros reales, es decir nmeros con una parte fraccionario. Hay dos tipos:
Tipo Tamao (bytes) Rango Float 4 +3.40282347E+38 Double 8 +179769313486231570E+308
Para indicar que una constante es flotante: ej. 2.3 se ha de escribir: 2.3F, por defecto ser double.
Curso de Java
Jess Cceres Tello Pg. 3 - 23
Carcter
En Java hay un nico tipo de carcter: char. Cada carcter est codificado en formato Unicode, en este formato cada carcter ocupa 2 bytes, frente a la codificacin ASCII, donde cada carcter ocupa un solo byte, dando cabida a 256 smbolos distintos. Con esa cantidad de caracteres no se puede soportar algunos alfabetos como el chino, japons o ruso, para lo cual se cre el formato Unicode. Al igual que en C se distingue entre la representacin de los datos char y los de cadenas de caracteres. Los primeros, los char, van entre comillas simples: char ch=a; mientras que las cadenas de caracteres usan comillas dobles.
Boolean
Es un tipo de datos que nicamente puede tomar dos valores: true o false. Se utiliza para realizar chequeos sobre condiciones
Las Variables
En Java, al igual que en C, es obligatorio declarar los tipos de todas las variables empleadas. La sintaxis de declaracin es la siguiente:
int i; double d; foat f; char c;
Adems en Java es necesario inicializar todas las variables antes de usarlas, de lo contrario el compilador generar un mensaje de error. Se puede inicializar y asignar un valor a una variable en la misma lnea o en lneas diferentes:
int i=0; int i; i = 0;
Tambin es posible la declaracin mltiple de variables en una nica lnea:
int i,j,k;
Conversin automtica entre los tipos de datos.
Cuando se asigna un tipo de datos a una variable de otro tipo, Java convertir el dato al nuevo tipo de variable de forma automtica siempre que se cumplan las siguientes condiciones:
Los tipos de datos y de las variables son compatibles El tipo de destino tiene un rango mayor que el de origen
Este tipo de conversin se llama extensin de conversiones. La jerarqua de conversiones va de mayor a menor, es decir:
double << float << long <<int << short << byte
Curso de Java
Jess Cceres Tello Pg. 4 - 23
Es posible convertir un dato de jerarqua superior a uno de jerarqua inferior, pudiendo producirse una prdida de informacin en el cambio. Este tipo de operacin (almacenar el contenido de una variable de jerarqua superior en una de jerarqua inferior) se denomina cast o casting. El cast o casting recibe el nombre de estrechamiento de conversin. En este caso hay una prdida de precisin en la conversin y Java no lo hace automticamente. El formato de un cast es el siguiente:
este otro caso lo que se produce es una reduccin de la Veamos un ejemplo:
Ejemplo 2.2: Ejemplo de utilizacin del cast para cambio de tipos de datos.
Operadores
Los operadores bsicos de Java son + , - , * , / para la suma, resta, multiplicacin y divisin. El operador / representa la divisin de enteros si ambos operandos son enteros. Su mdulo, es decir, el resto de la divisin, puede obtenerse mediante el operador %.
Adems existen los operadores de incremento y decremento: ++ y --. La operacin que realizan es la de incrementar y decrementar en una unidad a la variable a la que se aplican. Su accin es distinta segn se apliquen antes (++a) o despus (a++) de la variable.
public class ejemplo2 {
public static void main(String[] args) { int i = 9,k; float j = 47.9F; prt(i: + i + j: + j); k = (int)j; //empleo de un cast prt(j: + j + k: + k); j = k; //No necesita cast prt(j: + j + k: + k); float m = 2.3F; //float m = 2.3; dara un error al compilar prt(m: + m); }
public static void main(String[] args) { Int i = 1; prt(i: + i);
//Pre-incremento. Primero incrementa y despus imprime en consola prt(++i : + ++i);
//Post-incremento. Primero imprime en consola y despus incrementa i prt(i++ : + i++);
//Pre-decremento. Primero decrementa y despus imprime en consola prt(--i : + --i);
//Post-decremento. Primero imprime en consola y despus decrementa i prt(i-- : + i--);
//Por ltimo se imprimir i con valor 1 prt(i : + i); }
//El siguiente mtodo nos ahorrar teclear e invocndolo a la impresin por pantalla static void prt(String s) { System.out.println(s); } }
Ejemplo 2.3: Ejemplo de operadores de incremento y decremento
Exponenciacin
En Java no existe el operador de exponenciacin. Tampoco existen operadores como Seno o Coseno. Para realizar estas operaciones se recurre a la clase Math de Java.lang. Estos mtodos son estticos, por lo que no es necesario crear un objeto de dicha clase. Su sintaxis es la siguiente:
Ejemplo 2.4: Ejemplo utilizacin de la clase Math de Java.lang
Math.metodo(argumentos);
public class ejemplo4 {
public static void main(String[] args) { int i = 45, j=2; //Imprime por consola los resultados prt(Cos i : + Math.cos(i)); prt(Sen i : + Math.sin(i)); prt(j ^ i : + Math.pow(j,i)); }
Operador Operacin que realiza ! Not lgico == Test de igualdad != Test de desigualdad < Menor que > Mayor que <= Menor o igual que >= Mayor o igual que && And lgico || Or lgico
Ejemplo 2.5: Ejemplo de operadores de incremento y decremento public class ejemplo5 {
public static void main(String[] args) { int i = 45, j=2; //Imprime i y j por consola prt(i : + i); prt(j : + j);
//Imprime diversas operaciones binarias sobre i y j, junto con el resultado de stas. prt(i > j es + (i>j)); prt(i < j es + (i<j)); prt(i >= j es + (i >= j)); prt(i <= j es + (i <= j)); prt(i == j es + (i == j)); prt(i != j es + (i != j));
En Java no hay ningn tipo predefinido para cadena de caracteres, al igual que en C++, en su lugar hay una clase, llamada String, que es la que soporta todas las operaciones con las cadenas de caracteres.
Su definicin es la siguiente:
Algunas operaciones bsicas con cadenas son las siguientes:
Concatenacin
Se realiza a travs de la operacin +, es decir, sumando cadenas
saluda_pepe = saludo + nombre; //saluda_pepe toma el valor holaPepe
En Java si se intenta encadenar un String con otro tipo de variable, automticamente se convierte el resultado a String. Veamos el siguiente ejemplo:
String saludo = Hola; int n=65;
saludo = saludo + + n //saludo toma el valor Hola 65
Subcadenas
Uno de los mtodos que posee la clase String permite la extraccin de una subcadena de caracteres de otra ya existente. Su sintaxis es la siguiente:
Nombre_ String.substring( int posicin_ inicial, int posicin_ final) ;
donde posicion_inicial y posicion_final son repectivamente la posicin del primer carcter que se desea extraer y la posicin del primer carcter que ya no se desea extraer. String s; //Definicin de un string no inicializado
String s=; //Inicializado a cadena vaca
String s=Hola Java; //Inicializacin y asignacin en la misma lnea
Curso de Java
Jess Cceres Tello Pg. 8 - 23
Ejemplo:
String saludo = Hola; String subsaludo = ; subsaludo = saludo.substring(0,2); //subsaludo toma el valor Ho
Tambin se puede extraer un nico char de la cadena. Para esto se utiliza el mtodo charAt(posicin) donde posicin es la posicin del carcter que se desea extraer.
Comparacin de Cadenas
Para la comparacin de cadenas se utiliza el mtodo equals cuya sintaxis es la siguiente:
cadena1.equals(cadena2);
Este mtodo devuelve true si son iguales y false si no lo son. Otro mtodo, si cabe, ms utilizado y til es el siguiente:
boolean equalsIgnoreCase(String str)
que comprueba si dos cadenas son iguales ignorando las maysculas.
Todas estas operaciones se vern ms claramente en el siguiente ejemplo:
Ejemplo 2.6: Ejemplo de algunas operaciones con String
public class ejemplo6 {
public static void main(String[] args) { //Declaracin de variables String saludo = Hola; String saludo2 = hola; int n = 6;
//Imprime por consola la subcadena formada por los caracteres // comprendidos entre el caracter 0 de la variable saludo y el //carcter 2, sin incluir el ltimo
prt(subcadena : + saludo.substring(0,2));
//Concatena saludo con un espacio en blanco y el valor de la //variable n prt(nuevo saludo: + saludo + + n);
//Imprime el resultado del test de igualdad entre saludo y saludo2.
Otros mtodos para el manejo de cadenas son los siguientes:
int length() : Devuelve la longitud de la cadena, incluyendo espacios en blanco
int indexOf(String str, int indice) : Devuelve el ndice en el que aparece por primera vez la cadena str. Recordar que un String est indexado, si el ndice a partir del que se inicia la bsqueda no existe o la cadena str no aparece, se devuelve -1. Es un mtodo muy usado.
int indexOf(char ch): devuelve el ndice en el que aparece por primera vez el carcter que se le pasa como parmetro. Si no se encuentra se devuelve -1. Mtodo sobrecargado.
String replace(char viejoChar, char nuevoChar): Cambia el carcter asociado al primer argumento por el que se le pasa como segundo argumento generando una nueva cadena. La cadena sobre la que se aplica el mtodo no cambia, simplemente se crea otra nueva.
String toLowerCase(): Devuelve una nueva cadena convirtiendo todos los caracteres de la cadena en minsculas.
String toUpperCase(): Devuelve una nueva cadena convirtiendo todos los caracteres de la cadena en maysculas.
boolean startsWith(String str): Comprueba que la cadena sobre la que se aplica comienza con la subcadena pasada como argumento.
boolean endsWith(String str): Comprueba que la cadena sobre la que se aplica acaba con la subcadena pasado como argumento.
String s=pato; int longitud = s.length(); System.out.println(longitud);
String trim(): Devuelve una cadena sin espacios en blanco al principio y al final. No elimina los espacios en blanco situados entre las palabras.
String substring(int indiceInicio, int indiceFinal): Devuelve una cadena obtenida a partir del ndice inicial incluido y del ndice final excluido. Se comporta como un intervalo semiabierto [indiceInicial, indiceFinal). Si el ndice final sobrepasa la longitud de la cadena, se lanza una excepcin IndexOutOfBoundsException. Muy usado.
char charAt(int indice): devuelve el carcter asociado al ndice que se le pasa como argumento de la cadena sobre la que se aplica el mtodo. Si el ndice no existe se lanza una excepcin StringIndexOutOfBoundsException. Muy usado.
La clase StringBuffer En Java las cadenas se tratan de forma diferente a C/C++, donde las cadenas son matrices de caracteres en las que se indica el final de la cadena con un carcter de valor \0. En Java las cadenas son objetos de las clases predefinida String o StringBuffer, que estn incluidas en el paquete java.lang.*. Siempre que aparecen conjuntos de caracteres entre comillas dobles, el compilador de Java crea automticamente un objeto String. Si slo existieran cadenas de slo lectura (String), durante una serie de manipulaciones sobre un objeto String habra que crear un nuevo objeto para cada uno de los resultados intermedios. El compilador es ms eficiente y usa un objeto StringBuffer para construir cadenas a partir de las expresiones, creando el String final slo cuando es necesario. Los objetos StringBuffer se pueden modificar, de forma que no son necesarios nuevos objetos para albergar los resultados intermedios. La creacin de objetos StringBuffer se realiza usando los constructores de la clase, bien indicndole el nmero de caracteres iniciales del objeto o bien crendolo a partir de una cadena de tipo String ya existente: String str=hola como estas; System.out.println(str.length()); String strBis = str.trim(); System.out.println(strBis.length()); String str=cocodrilo; System.out.println(str.substring(2,7));
Curso de Java
Jess Cceres Tello Pg. 11 - 23
Entre los mtodos que posee destacan la cantidad de mtodos sobrecargados que posee el mtodo append el cual permite aadir un carcter o conjunto de ellos al StringBuffer creado. Veamos un ejemplo de la utilizacin de alguno de sus mtodos:
Ejemplo 2.7: Ejemplo de creacin del objeto StringBuffer
Matrices Arrays
En Java los arrays son objetos. Como tales se deben crear mediante el comando new. La sintaxis de la definicin de una array es la siguiente:
tipo_dato es el tipo de datos que se almacenarn en el array (int, char, String o cualquier objeto), tamao_array es el nmero de elementos que se quiere que contenga dicho array. El tamao de los arrays no puede cambiar en tiempo de ejecucin como puede producirse en otros lenguajes.
Ejemplo:
char[] arrayCaracteres = new char[10];
La declaracin de un array tambin se puede hacer en dos lneas de cdigo diferentes, la primera para definirla y la segunda para su creacin (es un objeto). El ejemplo anterior quedara de la siguiente forma:
char arrayCaracteres[]; arrayCaracteres = new char[10];
StringBuffer cadena = new StringBuffer(int legth); StringBuffer cadena = new StringBuffer(String str);
Los arrays se enumeran desde el elemento cero, que sera el primer elemento, hasta el tamao-1, que sera el ltimo elemento. Es decir, si tenemos un array de diez elementos, el primer elemento sera el que ocupe la posicin cero y el ltimo el que ocupe la posicin nueve.
Para acceder a un elemento se har utilizando los corchetes:
char x = arrayCaracteres[2]; Aunque el objeto Array no existe como tal, posee una variable, .length, que devuelve el nmero de elementos que posee el array. Es una variable de solo lectura por lo que no se pueden realizar asignaciones a esta variable.
int longitud = arrayCaracteres.length;
Esta variable tendr un valor indudable en recorridos por el array mediante la utilizacin de bucles como ya se ver ms adelante.
Se pueden declarar arrays de varios subndices, pudiendo tener arrays de dos, tres, cuatro niveles, si bien es a partir del tercer nivel cuando se pierde la perspectiva geomtrica.
Para declarar e inicializar un array de varios subndices se har de la siguiente forma:
Tipo_datos[][] nombre_array = new Tipo_datos[tamao1][tamao2];
o bien:
Tipo_datos nombre_array[][]; nombre_array = new Tipo_datos[tamao1][tamao2];
De esta forma se puede declarar una matriz de 2x2 de la siguiente forma:
int matriz[][]; matriz = new int[2][2];
El acceso se hara de la misma forma:
int x = matriz[1][1]; //Para leer el contenido de un elemento matriz[1][1] = x; //Para asignar un valor
Para la inicializacin de un array con contenidos se utilizan las llaves de la siguiente forma:
Una vez definida en el cdigo una variable, sta dejar de existir cuando se acabe el bloque donde ha sido definida. Los bloques en Java empiezan por { y finalizan con }.
Veamos un ejemplo:
Hay un caso digno de mencin y se produce a la hora de declarar una misma variable en dos mbitos diferentes. Este caso es ac eptado en C++, sin embargo en Java, se pens que sera ms claro el cdigo si no se permitiesen declaraciones como la siguiente:
Control de Flujo
La ejecucin de un programa en Java ante la ausencia de sentencias de control de flujo es secuencial, es decir, las instrucciones se ejecutan una detrs de otra y slo se ejecutarn una vez. Esto constituye una limitacin a la hora de realizar programas, por lo que se introducen las llamadas estructuras de control de flujo.
{ int x = 12
/* slo est disponible x */
{ int q = 96;
/* disponible x y q */ }
/* slo disponible x. q queda fuera de mbito */
} { int x = 12
{ int x = 96;
/* Error en Java, permitido en C++ */ }
}
Curso de Java
Jess Cceres Tello Pg. 14 - 23
Sentencias Condicionales
If then Else
Su sintaxis puede ser cualquiera de las siguientes:
Ejemplo 2.8: Ejemplo de la sentencia if - else if - else
if (condicin) { Grupo de sentencias }
if (condicin) { Grupo de sentencias 1} else { Grupo de sentencias 2}
if (condicin) { Grupo de sentencias 1} else if (condicion2) { Grupo de sentencias 2} else if (condicion3) { Grupo de sentencias 3} . . . else { Grupo de sentencias n}
public class ejemplo8 { //Mtodo que devuelve -1 si a>b, 1 si a<b y 0 si son iguales static int test(int a, int b) { int result = 0; if (a <b) result = 1; else if (a>b) result = 1; else result = 0; return result; }
Se podra decir que es una estructura comparativa mltiple ya que compara el valor de una variable con una serie de valores.
Estos valores nicamente podrn ser char o cualquier otro tipo de valor entero exceptuando long. No se puede comparar con reales ni con cadenas de caracteres, etc. Esta es una limitacin muy criticada en esta estructura ya que no ha evolucionado desde C++.
Igualmente se dice que es una estructura comparativa mltiple porque nicamente acepta la igualdad, no admite la desigualdad. Por ltimo necesita de una sentencia break para romper la ejecucin secuencial ya que de no ponerla se ejecutara todo el cdigo posterior aunque no se cumpliese la condicin. Su sintaxis es la siguiente:
Ejemplo 2.9: Ejemplo de la sentencia switch case public class ejemplo9 { //Mtodo que imprime vocal si se introduce un carcter vocal y //consonante si se introduce otro carcter static int test(char c) { switch (c) { case a: case e: case i: case o: case u: prt(VOCAL); break; default : prt(CONSONANTE); } }
public static void main(String[] args) { prt(test(a)); prt(test(b)); prt(test(e)); }
switch(variable) {
case valor 1 : Grupo de sentencias 1; break; case valor 2 : Grupo de sentencias 2; break; case valor 3 : Grupo de sentencias 3; break; ... case valor n : Grupo de sentencias n; break;
default: Sentencias que se ejecutan si no se ha cumplido ninguna condicin; break;
}
Curso de Java
Jess Cceres Tello Pg. 16 - 23
Estructuras de Iteracin
Son instrucciones que permiten la repeticin de un cdigo mientras se cumple una condicin. En Java podemos encontrarnos con tres estructuras de este tipo.
Bucle While
Para su ejecucin se comprueba previamente la condicin. Su sintaxis es la siguiente:
Ejemplo 2.10: Ejemplo con bucle iterativo while
Bucle do while
Su funcionamiento es similar al anterior con la salvedad que la condicin se evala al final del bloque de cdigo por lo que se cumpla o no la condicin de la estructura, el bloque de cdigo se ejecutar como mnimo una vez.
while (condicin) {
Grupo de sentencias 1; }
public class ejemplo10 { //Mtodo que imprime un nmero elegido al azar hasta mientras que sea menor que 1
public static void main(String[] args) { double r = 0;
while (r<0.99d) { r = Math.random(); System.out.println(r);
} } }
do{
Grupo de sentencias 1;
}while(condicin)
Curso de Java
Jess Cceres Tello Pg. 17 - 23
Ejemplo 2.11: Ejemplo con la estructura iterativa do - while
Bucle for
Su sintaxis es la siguiente:
donde:
expresin1 es una asignacin inicial a la variable del bucle. expresin2 es la condicin que se impone para que se ejecute el cdigo. expresin3 es la operacin que se realiza en cada iteracin con la variable del bucle.
Ejemplo 2.12: Ejemplo con la estructura iterativa for
public class ejemplo11 { //La clase es similar a la anterior pero en este caso no hace falta la //inicializacin de la variable r ya que coger su valor directamente dentro del //bucle do - while
public static void main(String[] args) { double r;
do{ r = Math.random(); System.out.println(r);
} while (r<0.99d) } }
for(expresin1;expresin2;expresin3){
Grupo de sentencias;
} public class ejemplo12 { //Imprime las cadenas introducidas como parmetros de entrada
public static void main(String[] args) { for( int i=0; i<arts.length; i++) System.out.println(Argumento +i+ : +args[i]); } }
Curso de Java
Jess Cceres Tello Pg. 18 - 23
Sentencias de Control de Flujo
Java tiene tres sentencias de salto para controlar el flujo de ejecucin de un programa: break, continue y return
Break
En Java, la sentencia break tiene tres usos:
Permite terminar una secuencia de sentencias en un switch. Se puede utilizar para salir de un bucle. Se puede utilizar como una forma civilizada de goto.
Veamos un ejemplo:
Ejemplo 2.13: Ejemplo con la sentencia break
Continue
Algunas veces es til salir anticipadamente de una iteracin de un bucle, es decir, continuar con el bucle pero dejar sin procesar el resto del cdigo en esta iteracin en concreto. Esto se puede lograr mediante el uso de la sentencia continue
Ejemplo 2.14: Ejemplo con la sentencia continue public class ejemplo13 { //Imprime las cadenas introducidas como parmetros de entrada
public static void main(String[] args) { for( int i=0; i<100; i++) { if (i==10) break; System.out.println(i); } System.out.println(Bucle completado...); } } public class ejemplo14 { //Imprime las cadenas introducidas como parmetros de entrada
public static void main(String[] args) { for( int i=0; i<10; i++) { System.out.println(i+ ); if (i%2 == 0) continue; System.out.println( ); } } }
Curso de Java
Jess Cceres Tello Pg. 19 - 23
Return
Sus funciones son las mismas que en C++. Cuando se llama a un procedimiento (en POO se llamar mtodo) la sentencia return devolver el valor especificado al cdigo que hizo la llamada a ese mtodo. Se puede decir que termina el control de flujo de un mtodo para devolverlo al cdigo que realiz la llamada.
Curso de Java
Jess Cceres Tello Pg. 20 - 23
Laboratorio
A continuacin se presentan una serie de ejemplos que hacen uso de los tpicos cubiertos en este captulo; declaracin y asignacin de variables, arreglos, operadores, condicionales y bucles. Codifique y ejecute los siguientes ejemplos a fin de conocer un poco ms acerca del comportamiento de los elementos y estructuras bsicas que conforman a Java.
Condicionales
A continuacin se presenta un programa completo, que hace uso de la sentencia if- else para determinar en qu estacin se encuentra un mes en particular, asumiendo que se presentan las cuatro estaciones: invierno, primavera, verano, otoo.
public class Estaciones {
public static void main(String[] args) { int mes = 4; String razon; if (mes==12 || mes ==1 || mes==2) { razon = el invierno; } else if (mes ==3 || mes==4 || mes==5) { razon = la primavera; } else if (mes == 6 || mes == 7 || mes==8) { razon = el verano; } else if (mes ==9 || mes==10 || mes==11) { razon = el otoo } else { razon = Mes inexistente; } System.out.println(El mes + mes + esta en + razon); } }
Curso de Java
Jess Cceres Tello Pg. 21 - 23
Bucles
El siguiente programa hace uso del bucle for y del condicional switch para contar el nmero de lneas, palabras y caracteres de una cadena de texto dada.
public class CuentaPalabras {
static String text = Estamos aprendiendo a programar en Java\n; static int longitud = text.length();
public static void main(String[] args) { boolean enPalabra = false; int numCar = 0; int numPal = 0; int numLin = 0;
for(int i=0;i<longitud;i++) { char c = text.charAt(i); numCar++; switch(c) { case \n: numLin++; // Continua case \t: //Continua case : if(enPalabra) { numPal++; enPalabra = false; } default: enPalabra = true; }
El prximo ejemplo crea una matriz de cinco por cinco doubles, que se inicializa con los valores de la diagonal (i=j) a 1.0, dejando todos los otros elementos de la matriz a cero.
Observar que no se necesita inicializar los valores que se desea ajustar a cero. Java establece a cero o a valores nulos todas las variables que no se asignen.
public class Matriz {
public static void main(String[] args) { double m[][]; m = new double[5][5];
Crear un programa llamado PrintArg que muestre por pantalla el listado de los argumentos pasados en la lnea de comando. Si no han sido pasados parmetros, el programa debe indicarlo con un mensaje por pantalla.
Crear una clase pblica de nombre CuentaString que contenga slo al mtodo main y partiendo del String "En mi proxima vida sere ganadero y cuidare vacas en el campo" declarada e inicializada, mostrar por consola lo siguiente:
Su longitud El carcter asociado al ndice 7 La subcadena "ganadero" El ndice que ocupa el carcter 'x' La cadena transformada en maysculas Por ltimo, comprobar si el primer carcter de la String es 'E' y mostrar por consola un mensaje que lo indique.
Crear un programa que cuente el nmero de veces que aparece la letra l en la siguiente cadena: Pablo clav un clavo en la cabeza del calvo
Crear un programa en Java que determine si dos cadenas de caracteres son iguales comparndolas carcter a carcter
Crear un programa en Java que genere los 80 primeros nmeros mltiplos de 5 que a su vez sean impares.