Fundamentos de Java Modulo I - Cap I PDF
Fundamentos de Java Modulo I - Cap I PDF
Fundamentos de Java Modulo I - Cap I PDF
Captulo 0 FUNDAMENTOS DE JAVA 1.0.1 Los orgenes de Java Como se relaciona Java con C y C++ Como se relaciona Java con C# 1.0.2 Las contribuciones de Java a Internet Applets de Java Seguridad Portabilidad 1.0.3 La Magia de Java: El Bytecode 1.0.4 El Buzzwords de Java 1.0.5 Programacin Orientada a Objetos Encapsulacin Polimorfismo Herencia 1.0.6 Obteniendo el JDK (Java Development Kit) 1.0.7 El primer programa simple Codificando el programa Compilando el programa El primer programa de ejemplo lnea por lnea 1.0.8 Manejando errores de sintaxis 1.0.9 Un segundo programa simple 1.0.10 Otros tipos de datos Proyecto 1-1 Convirtiendo galones a litros 1.0.11 Dos sentencias de control Sentencia If El bucle For 1.0.12 Creando bloques de cdigos 1.0.13 Posicionamiento y punto y coma 1.0.14 Prcticas adicionales Proyecto 1-2 Mejoramiento del convertidor de galones a litros 1.0.15 Las palabras reservadas de Java 1.0.16 Identificadores en Java
1.0.17
Sobre el tiempo en que los detalles de Java se estaban elaborando, surgi un segundo, y en ltima instancia ms importante factor que se supo jugara un papel crucial en el futuro de Java. Esta segunda fuerza, es por supuesto, la World Wide Web (W W W). Si no hubiera tomado forma en la Web, Java podra haber seguido siendo un instrumento til pero un oscuro lenguaje de programacin de uso para aparatos electrnicos solamente. Sin embargo, con la aparicin de la Web, Java fue impulsado a la vanguardia del diseo de lenguaje de programacin, debido a que la Web, tambin, exiga programas portables. La mayora de los programadores aprenden temprano en sus carreras que los programas porttiles son tan elusivos como deseables. Si bien la bsqueda de una forma de crear eficiencia y portabilidad (independiente de la plataforma) es casi tan antigua como la disciplina de la programacin en s, que haba tomado un asiento trasero comparado con otros problemas ms acuciantes. Sin embargo, con el advenimiento de la Internet y la Web, el viejo problema de la portabilidad volvi con una venganza. Despus de todo, Internet se compone de un grupo diverso, un universo de poblacin distribuida con muchos tipos de ordenadores, sistemas operativos y CPUs. Lo que antes era un irritante, entonces un problema de baja prioridad se haba convertido en una necesidad de alto perfil. En 1993 se hizo evidente a los miembros del equipo de diseo de Java que los problemas de la portabilidad que suelen surgir durante la creacin de cdigos para controladores integrados tambin se encuentran al tratar de crear cdigo para Internet. Esta toma de conciencia hizo que el centro de Java pasara del consumo del rea electrnica a la programacin en Internet. As que, si bien era el deseo de un lenguaje de programacin con una arquitectura neutral que proporcionara la chispa inicial, que era el Internet y que finalmente condujo a gran escala el xito de Java.
Debido a las similitudes entre Java y C++, en especial su apoyo orientado a objetos, es tentador pensar de Java simplemente como la "versin para Internet de C++". Sin embargo, hacerlo sera un error. Java tiene importantes diferencias prcticas y filosficas. Aunque Java fue influenciado por C++, no es una versin mejorada de C++. Por ejemplo, no es ni hacia arriba ni hacia abajo compatible con C++. Por supuesto, las similitudes con C++ son importantes, y si usted es un programador de C++, usted se sentir como en casa con Java. Otro punto: Java no fue diseado para reemplazar a C++. Java fue diseado para resolver un determinado conjunto de problemas. C++ fue diseado para resolver un conjunto diferente de problemas. Ambos van a coexistir por muchos aos por venir.
Applets de Java
Un applet es un tipo especial de programa de Java que est diseado para ser transmitido a travs de Internet y automticamente ejecutado por un navegador web compatible con Java. Por otra parte, un applet es descargado en la demanda, al igual que una imagen, archivo de sonido o un vdeo clip. La diferencia importante es que un applet es un programa inteligente, no slo una animacin o archivo multimedia. En otras palabras, un applet es un programa que puede reaccionar a la entrada del usuario y cambiar dinmicamente, no slo ejecutar la misma animacin o sonido una y otra vez.
La emocin de los applets, no sera nada ms que una ilusin si Java no fuera capaz de abordar los dos problemas fundamentales asociados con ellos: la seguridad y la portabilidad. Antes de continuar, vamos a definir lo que significan estos dos trminos en relacin a Internet.
Seguridad
Como usted seguramente sabe, cada vez que descarga un programa "normal", se arriesga a una infeccin viral. Antes de Java, la mayora de usuarios no descargaban programas ejecutables con frecuencia, y los que lo hicieron, buscaban el virus antes de la ejecucin. Aun as, la mayora de los usuarios siguen preocupados por la posibilidad de infectar sus sistemas con un virus o permitir que un malintencionado programa funcione en sus sistemas. (Un programa malicioso puede obtener informacin privada, como nmeros de tarjetas de crdito, saldos de cuentas bancarias y contraseas mediante la bsqueda de los contenidos del sistema de archivos en su ordenador local.) Java responde a estas preocupaciones, proporcionando un servidor de seguridad entre una aplicacin de red y el ordenador. Cuando se utiliza un navegador web compatible con Java, es posible descargar de forma segura los applets de Java sin miedo a la infeccin viral. La forma en que Java logra esto es, limitando un programa Java al entorno de ejecucin Java y no permitiendo el acceso a otras partes del equipo (Usted ver cmo se logra esto, en breve) francamente, la posibilidad de descargar applets con la confianza de que ningn dao se llevar a cabo en el equipo cliente es el aspecto ms importante de Java.
Portabilidad
Como se ha comentado anteriormente, muchos tipos de ordenadores y sistemas operativos estn conectados a la Internet. Para los programas ser descargados dinmicamente a todos los diversos tipos de plataformas algunos medios de generacin de cdigo ejecutable porttil se necesitan. Como pronto se ver, el mismo mecanismo que ayuda a garantizar la seguridad tambin ayuda a crear la portabilidad. En efecto, Java da solucin a estos dos problemas a la vez, de manera elegante y eficaz.
Esto no es, por supuesto, una solucin viable. La interpretacin de bytecode es la forma ms fcil de crear programas realmente porttiles. El hecho de que un programa Java sea interpretado tambin ayuda a que sea seguro. Debido a que la ejecucin de cada programa Java est bajo el control de la JVM, la JVM puede contener el programa e impedir la generacin de efectos secundarios fuera del sistema. La seguridad tambin se ha mejorado para algunas restricciones que existen en el lenguaje Java. Cuando un programa es interpretado, por lo general se ejecuta sustancialmente ms lento que el mismo programa compilado en cdigo ejecutable. Sin embargo, con Java, la diferencia entre los dos no es tan grande. El uso de cdigo de bytes hace posible que el tiempo de ejecucin de Java ejecute programas mucho ms rpido de lo que se esperara. Aunque Java fue diseado para la interpretacin, no hay tcnicamente nada de Java que impida la compilacin en la marcha de cdigo de bytes en cdigo nativo. Por esta razn, Sun empez el suministro de su tecnologa HotSpot no mucho tiempo despus de la liberacin inicial de Java. HotSpot ofrece un equipo en conjunto de (Just In Time) para el compilador de bytecode. Cuando un compilador JIT es parte de la mquina virtual Java, se compila el bytecode en cdigo ejecutable en tiempo real en base a la demanda, pieza por pieza. Es importante entender que no es posible compilar todo un programa Java en cdigo ejecutable al mismo tiempo ya que Java realiza varias comprobaciones que se pueden realizar slo en tiempo de ejecucin. En su lugar, el JIT compila el cdigo que sea necesario, durante la ejecucin. Adems, no son compiladas todas las secuencias de cdigo de bytes, son slo aquellas que se beneficiarn de la compilacin. El resto del cdigo es simplemente interpretado. El enfoque de justo a tiempo todava produce un significativo aumento del rendimiento. Aun cuando la compilacin dinmica se aplica al cdigo de bytes, las caractersticas de portabilidad y la seguridad siguen siendo vlidas, porque el sistema en tiempo de ejecucin (que realiza la compilacin) todava estar a cargo del entorno de ejecucin.
Lenguajes estructurados se caracterizan por su apoyo a subrutinas autnomas, variables locales, construcciones ricas de control y su falta de confianza en el GOTO. Aunque los lenguajes estructurados son una herramienta poderosa, incluso aunque lleguen su lmite cuando un proyecto es demasiado grande. Considere esto: En cada hito en el desarrollo de la programacin, tcnicas y herramientas fueron creadas para permitir que el programador pueda hacer frente a la complejidad cada vez mayor. En cada paso, el nuevo enfoque tom los mejores elementos de los mtodos anteriores y segua adelante. Antes de la invencin de la programacin orientada a objetos, muchos proyectos estaban a punto donde el enfoque estructurado ya no funcionaba. Los mtodos orientados a objetos fueron creados para ayudar a los programadores de romper estas barreras. La programacin orientada a objetos tom las mejores ideas de la programacin estructurada y combin varios nuevos conceptos. El resultado fue una forma diferente de organizar un programa. En el sentido ms general, un programa se puede organizar en una de dos maneras: en torno a su cdigo (lo que est sucediendo) o alrededor de sus datos (lo que se est viendo afectado). Utilizando slo tcnicas de la programacin estructurada, los programas suelen estar organizados en torno al cdigo. Este enfoque puede ser considerado como "Cdigo que acta sobre los datos". Los programas orientados a objetos funcionan a la inversa. Se organiza en torno a los datos, con el principio clave "Los datos de control de acceso a cdigo." En un lenguaje orientado a objetos, se definen los datos y las rutinas que permiten actuar sobre esos datos. As, un tipo de datos define de forma precisa qu tipo de operaciones pueden ser aplicadas a esos datos. Para apoyar los principios de programacin orientada a objetos, todos los idiomas, incluyendo programacin orientada a objetos de Java, tienen tres caractersticas en comn: la encapsulacin, polimorfismo y la herencia. Vamos a examinar cada uno.
Encapsulacin
La encapsulacin es un mecanismo de programacin que une el cdigo y los datos que se manipulan, mantiene a salvo la interferencia externa y el uso indebido. En un lenguaje orientado a objetos, el cdigo y los datos pueden ser unidos entre s de tal manera que un cuadro negro autnomo se crea. Dentro del cuadro todos los datos y el cdigo son necesarios. Cuando el cdigo y los datos estn unidos entre s en esta forma, se crea un objeto. En otras palabras, un objeto es el dispositivo que soporta encapsulacin. Dentro de un objeto el cdigo, datos o ambos, podrn ser privados de ese objeto o con acceso al pblico. Un cdigo privado o los datos solo son accesibles solamente por otra parte del objeto. Es decir, el cdigo privado o los datos no pueden accederse por una pieza del programa que exista fuera del objeto. Cuando el cdigo o los datos son pblicos, otras partes de su programa pueden acceder a l a pesar de que se define dentro de un objeto. Tpicamente, las partes pblicas de un objeto se utilizan para proporcionar una interfaz controlada a los elementos privados del objeto. La unidad de la encapsulacin bsica de Java es la clase. Aunque la clase se examinar con ms detalle ms adelante, la breve discusin sera til ahora. Una clase define la forma de un objeto. En ella se especifica los datos y el cdigo que funcione con esos datos. Java utiliza una especificacin de clase para construir objetos. Los objetos son instancias de una clase. As, una clase es esencialmente un conjunto de planes que especifican cmo construir un objeto. El cdigo y los datos que constituyen una clase son llamados miembros de la clase. Especficamente, los datos definidos por la clase se conocen como variables miembro o variables de instancia. El cdigo en el cual los datos operan se conoce como mtodos miembro o mtodos simplemente. Los mtodos son subprogramas de Java. Si est familiarizado con C / C++, le puede ayudar a saber que lo que un programador en Java llama mtodo en C/C++ se le llama funcin.
Polimorfismo
Polimorfismo (del griego que significa "muchas formas") es la cualidad que permite a una interfaz acceder a una clase general de acciones. La accin especfica se determina por la naturaleza exacta de la situacin. Un ejemplo sencillo de polimorfismo se encuentra en el volante de un automvil. El volante (es decir, la interfaz) es el mismo sin importar qu tipo de mecanismo de direccin se utilice. Es decir, el volante funciona de la misma forma si su coche tiene direccin manual, direccin asistida o direccin de cremallera y pin. Por lo tanto, una vez que sabes cmo manejar el volante, puede conducir cualquier tipo de coche. El mismo principio puede aplicarse tambin a la programacin. Por ejemplo, considere una pila. Es posible que tenga un programa que se necesiten tres tipos de pilas. Una pila se utiliza para los valores enteros, una para valores de punto flotante y otra para personajes. En este caso, el algoritmo que implementa cada pila es el mismo, aunque los datos que se almacenan son diferentes. En un lenguaje no orientado a objetos, se ver obligado a crear tres conjuntos diferentes de rutinas de la pila, cada juego con diferentes nombres. Sin embargo, debido al polimorfismo, en Java se puede crear un conjunto general de las rutinas de la pila que funcione para las tres situaciones especficas. De esta manera, una vez que sepa cmo utilizar una pila, puede utilizar todas ellas. Ms en general, el concepto de polimorfismo se expresa a menudo por la frase "una interfaz, mltiples mtodos. Esto significa que es posible disear una interfaz genrica para un grupo de actividades relacionadas. El polimorfismo ayuda a reducir la complejidad al permitir la misma interfaz que se utiliza para especificar una clase de accin general. Es trabajo del compilador seleccionar la accin especfica (es decir, el mtodo) que se aplique a cada situacin. Usted, como programador, no necesitar hacer esta seleccin manualmente. Solo hay que recordar y utilizar la interfaz grfica.
Herencia
La herencia es el proceso mediante el cual un objeto puede adquirir las propiedades de otro objeto. Esto es importante porque es compatible con el concepto de clasificacin jerrquica. Si lo piensas bien, la mayor parte del conocimiento se hace manejable por clasificaciones jerrquicos (es decir, de arriba hacia abajo). Por ejemplo, una manzana Red Delicious es parte de la clasificacin manzana, que a su vez forma parte de la clase fruta, que est bajo alimento la cual es la clase ms grande. Es decir, la clase alimentos posee ciertas cualidades comestibles y nutritivas, etc. Dichas cualidades tambin, lgicamente, se aplican a su subclase, la fruta. Adems a estas cualidades, la clase de fruta tiene unas caractersticas especficas (jugosa, dulce, etc.) que la distinguen de otros alimentos. La clase manzana define las cualidades especficas de una manzana (crece en los rboles, no es tropical, etc.) Una manzana Red Delicious, a su vez, hereda todas las cualidades de todas las anteriores clases y slo las cualidades de la misma definen las cualidades que la hacen nica. Sin el uso de jerarquas, cada objeto tendra que definir explcitamente la totalidad de sus caractersticas. Con la herencia, un objeto slo tiene que definir las cualidades que lo hacen nico dentro de su clase. Puede heredar los atributos generales de su padre. As, es el mecanismo de herencia, hace posible que un objeto sea una instancia de un caso especfico.
/* Este es un programa simple en Java. Llame a este archivo Ejemplo.java. */ class Ejemplo { // Un programa Java inicia con una llamada a main(). public static void main(String args[]) { System.out.println("Fundamentos de Java!!!"); } }
Ahora realice los siguientes pasos: 1. Escriba el programa. 2. Compile el programa. 3. Corra el programa.
Codificando el programa
En Java, un archivo de origen se llama oficialmente una unidad de compilacin. Es un archivo de texto que contiene una o ms definiciones de clase. El compilador de Java requiere que un archivo de cdigo fuente utilice el nombre de archivo.Java de extensin. Tenga en cuenta que la extensin del archivo es de cuatro caracteres. Como puede imaginar, su sistema operativo debe ser capaz de soportar nombres de archivo largos. Esto significa que Windows 95, 98, NT, XP y 2000 funcionan bien, pero Windows 3.1 no lo hace. Como se puede observar, el nombre de la clase definida por el programa es tambin el Ejemplo. Esto no es una coincidencia. En Java, todo el cdigo debe residir dentro de una clase. Por convencin, el nombre de esa clase debe coincidir con el nombre del archivo que contiene el programa. Tambin debe asegurarse de que la capitalizacin del nombre de archivo coincida con el nombre de la clase. La razn de esto es que Java es sensible. En este punto, la convencin de los nombres de archivo que corresponden a los nombres de clase pueden parecer arbitrarios. Sin embargo, esta convencin hace que sea ms fcil mantener y organizar sus programas.
Compilando el programa
Para compilar el programa de ejemplo, ejecute el compilador, javac, especificando el nombre del archivo origen en la lnea de comandos, como se muestra aqu:
C:\>javac Example.java
El compilador javac crea un archivo llamado Ejemplo.class que contiene la versin cdigo de bytes del programa.
Recuerde, el cdigo de bytes no es ejecutable. El cdigo de bytes debe ser ejecutado por una Mquina virtual de Java (JVM). As, la salida de javac no ser cdigo que puede ser directamente ejecutado. Para ejecutar el programa en realidad, debe utilizar el intrprete de Java, java. Para ello, pase el nombre de la clase Ejemplo como un argumento de lnea de comandos, como se muestra aqu:
C:\>java Ejemplo
Cuando el programa est corriendo se mostrar una salida similar a la siguiente:
Fundamentos de Java!!!.
Cuando el cdigo fuente de Java es compilado, cada clase propia del archivo de salida se crea y con la extensin .class. Es por esto que es una buena idea darle a los archivos fuente de Java el mismo nombre que la clase que contiene el nombre del archivo de origen, es decir, que coincidan. Cuando se ejecuta el intrprete Java como acabamos de ver, estamos especificando el nombre de la clase que desea que el intrprete ejecute. El intrprete buscar automticamente un archivo con ese nombre y con la extensin .class. Si encuentra el archivo, ejecutar el cdigo contenido en la clase especificada.
class Ejemplo {
Esta lnea utiliza la palabra clave class para declarar que una nueva clase se est definiendo. Como se ha mencionado, la clase es la unidad de encapsulacin bsica de Java. Ejemplo es el nombre de la clase. La deficin de la clase comienza con la llave inicial ({) y termina con la llave de cierre (}). Los elementos entre los dos corchetes son miembros de la clase. Por el momento, no se preocupe demasiado sobre los detalles de una clase, salvo para destacar que en Java, todas las actividades del programa se produce dentro de una clase. Esta es una razn por la cual todos los programas en Java son orientados a objetos. La siguiente lnea en el programa es el comentario de una sola lnea, se muestra aqu:
El significado exacto de cada parte de esta lnea no se puede dar ahora, ya que implica una comprensin detallada de varias de las caractersticas de Java. Sin embargo, dado que muchos de los ejemplos utilizan esta lnea de de cdigo, vamos a echar un breve vistazo a cada parte. La palabra clave public es un especificador de acceso. Un especificador de acceso determina el modo en que otras partes del programa pueden acceder a los miembros de la clase. Cuando un miembro de la clase est precedido por public, entonces ese miembro puede ser accedido por cdigo fuera de la clase en la que se declara (Lo contrario de public es private, lo que impide a un miembro ser utilizado por cdigo definido fuera de su clase). En este caso, main() debe ser declarado como pblico, ya que deber ser llamado luego por cdigo fuera de su clase cuando se inicie el programa. La palabra clave static permite que main() pueda ser llamado antes de que un objeto de la clase sea creado. Esto es necesario puesto que main() es llamado por el intrprete de Java antes de que los objetos estn hechos. La palabra clave void simplemente le dice al compilador que main() no devuelve ningn valor. Como ya ver, los mtodos tambin pueden devolver valores. Si todo esto parece un poco confuso, no se preocupe. Todos estos conceptos se discutirn en detalle en mdulos siguientes. Como se ha indicado, main() es el mtodo llamado cuando se inicia una aplicacin Java. Toda la informacin que usted necesita para pasar a un mtodo que se reciba por las variables se especifica en el conjunto de parntesis que sigue el nombre del mtodo. Estas variables se denominan parmetros. Si no hay parmetros para un determinado mtodo, debe de incluir los parntesis vacos de igual forma. En main() no es slo un parmetro, String args[], declara un parmetro llamado args. Es una matriz de objeto de tipo String (Las matrices son colecciones de objetos similares). Los objetos de tipo String almacenan secuencias de caracteres. En este caso, args no recibe ningn argumento de lnea de comandos presentes cuando se ejecuta el programa. Este programa no hace uso de esta informacin, pero si otros programas que se mostrarn ms adelante.
El ltimo caracter de la lnea es la {. Esto seala el comienzo del cuerpo de main(). Todo el cdigo incluido en un mtodo se producir entre una llave de apertura del mtodo y su cierre una llave de cierre. La siguiente lnea de cdigo se muestra a continuacin. Esto es lo que ocurre dentro de main().
System.out.println("Fundamentos de Java!!!");
Esta lnea muestra la cadena " Fundamentos de Java!!!" seguido por una nueva lnea en la pantalla. La salida se realmente realizada por el mtodo println(). En este caso, println() muestra la cadena que se pasa al mismo. Como ver, println() tambin puede utilizarse para mostrar otros tipos de informacin. La lnea comienza con System.out. aunque es muy complicado explicar en detalle en este momento, brevemente, System es una clase predefinida que proporciona acceso al sistema, y Out es la salida que est conectada a la consola. Por lo tanto, es un objeto System.out que encapsula la salida a la consola. El hecho de que Java utilice un objeto para definir la salida de la consola es una prueba ms de su naturaleza orientada a objetos. Como habr notado, la salida de consola (y entrada) no se utilizan con frecuencia en el mundo real de los programas Java y applets. Dado que los entornos informticos ms modernos son ventanas grficas y en su naturaleza, la consola de E/S se utiliza sobre todo para los programas de servicios simples y para los programas de demostracin. Ms adelante, usted aprender otras maneras de generar salida en Java, pero por ahora, vamos a seguir utilizando los mtodos de E/S de consola. Observe que println() termina con un punto y coma. Todas las declaraciones de Java finalizan con un punto y coma. La razn de que las otras lneas en el programa no terminen en un punto y coma es que no son, tcnicamente declaraciones.
La primera llave } en el programa termina a main(), y la ltima } termina la definicin de clase Ejemplo. Un ltimo punto: Java es sensible a maysculas. Olvidar esto puede causar serios problemas. Por ejemplo, si escribe accidentalmente Main en lugar de main, o Println vez de println, el programa anterior ser incorrecto. Adems, aunque el compilador de Java compile clases que no contienen un mtodo main(), no tiene manera de ejecutarlos. Por lo tanto, si usted tena escrito main mal, el compilador compila el programa. Sin embargo, el intrprete de Java le informar de un error, porque sera incapaz de encontrar el mtodo main().
Ejemplo.java:8: ';' expected Public static void main(String args[]) ^ Example.java:11 'class' or 'interface' expected } ^ Example.java:13: 'class' or 'interface' expected ^ Example.java:8: missing method body, or declare abstract Public static void main(String args[]) ^
Claramente, el primer mensaje de error es completamente erroneo, porque lo que falta no es un punto y coma, sino una llave. El punto es que cuando el programa contiene un error de sintaxis, no necesariamente debe llevar los mensajes del compilador a su valor nominal. Los mensajes pueden ser inducir al error. Puede que tenga que "adivinar" un mensaje de error con el fin de encontrar la causa del problema. Tambin, busque en las ltimas lneas de cdigo en su programa que preceden a la lnea marcada el error. A veces un error no se inform hasta varias lneas despus de que el punto en el que el error realmente ocurri.
/* Esto demuestra el uso de variables Llame a este archivo Ejemplo2.java */ class Ejemplo2 { public static void main(String args[]) { Declara las variables. int var1; //declara una variable int var2; // declara otra variable Asigna un valor a la variable var1 = 1024; //asigna 1024 a var1 System.out.println("var1 contiene " + var1); var2 = var1 / 2; System.out.print("var2 contiene var1 / 2: "); System.out.println(var2); } }
Cuando el programa es interpretado muestra la siguiente salida:
tipo nombre-variable;
Aqu, tipo especifica el tipo de variable que ha sido declarada, y nombre-variable es el nombre de la variable. A parte de int Java soporta muchos tipos de datos. The following line of code assigns var1 the value 1024:
var2 = var1 / 2;
Esta lnea divide el valor de var1 entre 2 y luego lo asigna a var2. As, var2 contendr el valor 512. El valor de var1 no se modificar. Como la mayora de otros lenguajes informticos. Java es compatible con una amplia gama de operadores aritmticos, incluidos los que se muestran aqu: + * / Suma Resta Multiplicacin Divisin
double x;
Aqu, x es el nombre de la variable, que es de tipo double. Debido a que x es de tipo punto flotante, puede contener valores tales como 122.23, 0,034, o el -19,0.
/* Este programa muestra la diferencia entre int y double Llamelo Ejemplo3.java. */ class Ejemplo3 { public static void main(String args[]) { int var; // declara una variable de tipo int double x; // declara una variable de tipo punto flotante var = 10; // asigna 10 a var x = 10.0; // asigna 10.0 a x System.out.println("Valor original de var: " + var); System.out.println("Valor original de x: " + x); System.out.println(); // Imprime una linea en blanco //ahora, divide ambos entre 4 var = var / 4; x = x / 4; System.out.println("var despues de la division: " + var); System.out.println("x despues de la division: " + x); } }
La salida del programa ser:
Valor original de var: 10 Valor original de x: 10.0 var despues de la division: 2 x despues de la division: 2.5
Como puede ver, cuando var se divide entre 4, una divisin de nmeros enteros se lleva a cabo, y el resultado es 2, el componente fraccional se ha perdido. Sin embargo, cuando x se divide entre 4, la fraccin se conserva, y la respuesta correcta se muestra. Hay una cosa nueva en el programa. Para imprimir una lnea en blanco, simplemente llame a println() sin argumentos.
Paso a paso 1. Cree un archivo nuevo llamado GaltoLit.java. 2. Escriba el siguiente cdigo:
/* Proyecto 1-1 Este programa convierte galones a litros. Llame a este programa GalToLit.java. */ class GalToLit { public static void main(String args[]) { double galones; double litros; galones = 10; litros = galones * 3.7854; System.out.println(galones + " galones equivalen a: "+liters+ " litros."); } }
3. Compile el programa:
C>javac GalToLit.java
4. Crralo:
C>java GalToLit
Mostrar esta salida:
La sentencia if
Usted puede ejecutar selectivamente parte de un programa a travs del uso de la sentencia condicional de Java: if. La declaracin de Java if funciona de manera similar a la instruccin IF en cualquier otro idioma. Su forma ms simple se muestra aqu:
if(condicin) instruccin;
Aqu, la condicin es una expresin booleana. Si la condicin es verdadera, entonces se ejecuta la instruccin. Si la condicin es falsa, entonces la declaracin se pasa por alto. Aqu est un ejemplo:
/* Demostracin de if. Llamelo IfDemo.java. */ class IfDemo { public static void main(String args[]) { int a, b, c; a = 2; b = 3; if(a < b) System.out.println("a es menor que b"); // Esto no muestra nada if(a == b) System.out.println("Usted no vera este"); System.out.println(); c = a - b; // c contiene -1 System.out.println("c contiene -1"); if(c >= 0) System.out.println("c no es negativo"); if(c < 0) System.out.println("c es negativo"); System.out.println(); c = b - a; // c ahora contiene a 1 System.out.println("c contiene 1");
a c c c c
Tenga en cuenta otra cosa en este programa. La lnea int a, b, c; declara tres variables, A, B y C, mediante el uso de una lista separada por comas. Como se mencion anteriormente, cuando se necesita dos o ms variables del mismo tipo, pueden ser declaradas en un comunicado. Slo separe los nombres de las variables por comas.
El bucle for
Usted puede ejecutar varias veces una secuencia de cdigo mediante la creacin de un bucle. Java proporciona un poderoso surtido de construcciones de bucles. El que vamos a ver aqu es el bucle for. La forma ms simple del bucle se muestra aqu:
/* Demostracin de for. Llamelo ForDemo.java. */ class ForDemo { public static void main(String args[]) { int count; for(conteo = 0; conteo < 5; conteo = conteo+1) System.out.println("Este es conteo: " + conteo); System.out.println("Hecho!"); } }
La salida sera:
Este conteo: Este conteo: Este conteo: Este conteo: Este conteo: Hecho!
0 1 2 3 4
En este ejemplo, el recuento es la variable de inicializacin del bucle. Se coloca en cero la parte de inicializacin. Al comienzo de cada iteracin (incluyendo la primera), la prueba condicional mientras sea menor que cinco < 5 se lleva a cabo. Si el resultado de esta prueba es verdadero, entonces la sentencia println() se ejecuta, y luego la porcin de iteracin del bucle se ejecuta. Este proceso contina hasta que la prueba condicional sea falsa. Como punto de inters, casi nunca se ver la porcin de iteracin del bucle escrita como se muestr en el programa anterior. Es decir, rara vez vemos declaraciones como esta:
conteo = conteo + 1;
La razn es que Java incluye un operador de incremento especial que realiza esta operacin ms eficientemente. El operador de incremento es ++ (es decir, dos signos de ms unidos). El operador incremento incrementa su operando en uno. Mediante el uso del operador de incremento, la declaracin anterior puede ser escrita as:
conteo ++;
Por lo tanto, el en el programa anterior por lo general se escribe as: for(count = 0; count < 5; count++) Es posible que desee probar este. Como se ver, el bucle todava funciona exactamente igual que antes. Java tambin proporciona un operador de decremento, que se especifica como -. Este operador disminuye su operando en uno.
if(w < h) { v = w * h; w = 0; }
Aqu, si w es menor que h, ambos estados en el interior del bloque sern ejecutados.
As, las dos instrucciones dentro del bloque forman una unidad lgica, y una sentencia no puede ejecutarse sin la ejecucin de la otra. El punto clave aqu es que cada vez que se nesecite vincular lgicamente dos o ms declaraciones, se hace mediante la creacin de un bloque. Los bloques de cdigo permiten que los algoritmos puedan ser implementados con mayor claridad y eficiencia. Aqu hay un programa que utiliza un bloque de cdigo para evitar una divisin por cero:
/* Demostracion de un bloque de codigo Llamelo BloqueDemo.java. */ class BloqueDemo { public static void main(String args[]) { double i, j, d; i = 5; j = 10; if(i != 0) { System.out.println("no es igual a cero"); d = j / i; System.out.print("j / i es " + d); } } }
La salida sera:
Bloque de IF
En este caso, el destino de la instruccin if es un bloque de cdigo, y no slo una nica instruccin. Si el control de la condicin if es verdadera (como lo es en este caso), los tres estados dentro del bloque ser ejecutados. Pruebe colocando cero en i y observe el resultado. Como se ver ms adelante, los bloques de cdigo tienen otras propiedades y usos. Sin embargo, la principal razn de su existencia es la creacin de unidades de cdigo lgicamente inseparables.
Adems, los elementos individuales de una instruccin pueden estar en lneas separadas.
/* Proyecto 1-2 Muestra una tabla de conversin de galones a litros. Llame a este programa "GalToLitTabla.java". */ class GalToLitTable { public static void main(String args[]) { double galones, litros; int contador; contador = 0; for(galones = 1; galones <= 100; galones ++) { litros = galones * 3.7854; // Convierte a litros System.out.println(galones + " galones es " + litros + " litros."); contador++; // cada 10 lineas imprime una linea en blanco if(contador == 10) { System.out.println(); contador = 0; // reinicia el contador
} } } }
3. Compile el programa:
C>javac GalToLitTabla.java
4. Ejecute el programa:
C>java GalToLitTable
A continuacin una porcin de la salida que ver: 1.0 galones es 3.7854 litros. 2.0 galones es 7.5708 litros. 3.0 galones es 11.356200000000001 litros. 4.0 galones es 15.1416 litros. 5.0 galones es 18.927 litros. 6.0 galones es 22.712400000000002 litros. 7.0 galones es 26.4978 litros. 8.0 galones es 30.2832 litros. 9.0 galones es 34.0686 litros. ..
Tabla 1-1 abstract catch do finally import new short this Volatile assert char double Float Instanceof package static throw while boolean class else For Int private strictfp Throws break const enum Goto Interface protected super Transient byte continue extends If long public switch Try case default final implements native return synchronized Void
Recuerde, usted no puede iniciar un identificador con un dgito. Por ejemplo 12x no es vlido. No se puede utilizar cualquiera de las palabras clave de Java como nombres de identificadores. Adems, no se debe asignar el nombre de cualquier mtodo estndar, tales como println, a un identificador. Ms all de estas dos restricciones, la buena prctica de programacin dicta que se utilice nombres de identificadores que reflejan el significado o el uso del mismo.