Sie sind auf Seite 1von 41

Mdulo I | Captulo I

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

Libreras de clases de Java

1.0.1 Los orgenes de Java


La innovacin de los lenguajes informticos es impulsada por dos factores: las mejoras en el arte de la programacin y los cambios en el entorno informtico. Java no es la excepcin. Sobre la base de el rico legado heredado de C y C + +, Java aade mejoras y caractersticas que reflejan el estado actual de la tcnica en la programacin. En respuesta al aumento de los entornos en lnea, Java ofrece caractersticas que simplifican la programacin en una arquitectura altamente distribuida. Java fue concebido por James Gosling, Patrick Naughton, Chris Warth, Ed Frank, y Mike Sheridan en Sun Microsystems en 1991. Este lenguaje se llam inicialmente "Roble", pero pas a llamarse "Java" en 1995. Sorprendentemente, el impulso original de Java no fue la Internet, en su lugar, la motivacin principal era la necesidad de un lenguaje independiente de la plataforma que podra ser utilizado y crear software para ser embebido en dispositivos electrnicos de consumo distintos, tales como tostadoras, hornos de microondas y controles remotos. Como usted puede darse cuenta probablemente, muchos tipos de CPU se utilizan como controladores. El problema era que la mayora de lenguajes informticos estaban diseados para ser compilados con un objetivo especfico, por ejemplo C + +. A pesar de que es posible compilar un programa C + + para casi cualquier tipo de CPU, se requiere de un compilador completo de C++ especifico para este CPU. El problema, sin embargo, es que los compiladores son caros y requiere mucho tiempo para crear. En un intento de encontrar una solucin mejor, Gosling y otros trabajaron en un porttil, lenguaje multi-plataforma que podra producir cdigo que funcionar en una variedad de CPU bajo ambientes diferentes. Este esfuerzo en ltima instancia condujo a la creacin de Java.

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.

Cmo Java se relaciona con C y C++?


Java est directamente relacionado con C y C + +. Hereda su sintaxis de C. Su modelo de objetos es adaptado de C + +. La relacin de Java con C y C + + es importante por varias razones. En primer lugar, muchos programadores estn familiarizados con la sintaxis de C / C++. Esto hace que sea fcil para un programador de C / C + + aprender Java y, en el caso contrario, para un programador de Java aprender C / C + +. En segundo lugar, los diseadores de Java no "reinventan la rueda". En su lugar, perfeccionan un paradigma de programacin de gran xito. La era moderna de la programacin se inici con el lenguaje C. Se traslad a C++, y ahora en Java. Al heredar y construir sobre ese rico patrimonio, Java proporciona un potente entorno, programacin de coherencia lgica que toma lo mejor del pasado y aade nuevas caractersticas requeridas para el entorno en lnea. Tal vez lo ms importante, debido a sus similitudes, C, C++ y Java definen un marco conceptual comn para el programador profesional. Los programadores no se enfrentan a importantes divisiones cuando se cambia de un lenguaje a otro. Una de las filosofas de diseo de C y C++ es que el programador se encuentra a cargo, Java tambin hereda esta filosofa. Con excepcin de las restricciones impuestas por el Internet el medio ambiente, Java le da al programador el control total. Si se programa bien, los programas lo reflejan. Si se programa mal, sus programas tambin reflejarn eso. Dicho de otra manera, Java no es un lenguaje para programadores iniciales. Es un lenguaje para programadores profesionales. Java tiene un atributo ms en comn que C y C++: se ha diseado, probado y refinado por los programadores reales de trabajo. Es un lenguaje basado en las necesidades y experiencias de las personas que lo idearon. No hay mejor manera de producir un lenguaje de programacin profesional de alto nivel.

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.

Cmo se relaciona Java con C #?


Recientemente, un nuevo lenguaje llamado C# ha llegado a la escena. Creado por Microsoft para apoyar su Framework .NET, C# est estrechamente asimilado a Java. De hecho, muchas de las caractersticas de C# eran directamente una adaptacin de Java. Java y C# comparten el mismo estilo de sintaxis general de C++, el apoyo de programacin distribuida y utiliza el mismo modelo de objetos. Pero, por supuesto, hay diferencias entre Java y C#, aunque el "look and feel" general de estas lenguas es muy similar. Esto significa que si usted ya sabe C#, el aprendizaje de Java ser especialmente fcil. A la inversa, si C# est en tu futuro, tus conocimientos de Java sern muy til. Dada la similitud entre Java y C#, en forma natural podra preguntarse: "C# reemplaza a Java?" La respuesta es No. Java y C# se han optimizado para dos tipos diferentes de ambientes de computacin. Al igual que C++ y Java, coexistirn por un largo tiempo, tambin lo harn C# y Java.

1.0.2 Contribucin de Java a Internet


El Internet ayud a Java en el primer plano de la programacin, y Java, a su vez, ha tenido un profundo efecto en Internet. La razn de esto es bastante simple: Java se expande en el universo de los objetos que se pueden mover libremente en el ciberespacio. En una red, hay dos muy amplias categoras de objetos que se transmiten entre el servidor y el ordenador personal: Informacin pasiva y programas dinmicos y activos. Por ejemplo, cuando usted lee su correo electrnico, est viendo los datos en modo pasivo. Incluso cuando se descarga un programa, el cdigo del programa sigue siendo slo datos pasivos hasta que lo ejecutan. Sin embargo, un segundo tipo de objeto puede ser transmitido al equipo: un enfoque dinmico, auto-ejecucin del programa. Dicho programa es un agente activo en el equipo cliente, sin embargo, es iniciado por el servidor. Por ejemplo, un programa puede ser proporcionado por el servidor para mostrar correctamente los datos que estn enviando. Tan deseables son los programas dinmicos en la red, tambin presentan serios problemas en las reas de seguridad y portabilidad. Antes de Java, el ciberespacio se cerr a la mitad de las entidades que ahora viven all. Como se ver, Java se ocupa de esas preocupaciones y, al hacerlo as, ha definido una nueva forma de programar: El applet.

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.

1.0.3 La Magia de Java: el bytecode


La clave que permite a Java resolver tanto la seguridad y los problemas de portabilidad que acabamos de describir es que la salida de un compilador de Java no es cdigo ejecutable. Ms bien, es de cdigo de bytes. El Bytecode o cdigo de bytes es un conjunto altamente optimizado de instrucciones destinadas a ser ejecutadas por sistema de tiempo de ejecucin de Java, de nombre mquina virtual Java (JVM). Es decir, la mquina virtual de Java es un intrprete de bytecode. Esto puede venir como un poco de sorpresa. Como ustedes saben, los ms modernos lenguajes, como C++, estn diseados para ser compilados, no interpretados, sobre todo debido a problemas de rendimiento. Sin embargo, el hecho de que un programa Java se ejecute en la JVM ayuda resolver los problemas ms importantes asociados con la descarga de programas a travs de Internet, he aqu por qu. La traduccin de un programa Java en bytecode hace que sea mucho ms fcil de ejecutar el programa en una amplia gama de variedad de ambientes. La razn es sencilla: slo se necesita que la mquina virtual de Java se aplique en cada plataforma. Una vez que el paquete de tiempo de ejecucin existe para un sistema dado, cualquier programa Java puede correr en l. Recordemos que aunque los detalles de la JVM difieren de una plataforma a otra, todos entienden el mismo bytecode de Java. Si un programa Java se compila en cdigo nativo, entonces diferentes versiones del mismo programa tendran que existir para cada tipo de CPU conectado a Internet.

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.

1.0.4 El Buzzwords de Java


El concepto de Java an no est completo sin un vistazo a las palabras de moda de Java. Aunque las fuerzas fundamentales que motivaron la invencin de Java son la portabilidad y la seguridad, otros factores jugaron un papel importante en el moldeo de la forma final del lenguaje. Las principales consideraciones fueron resumidas por el equipo de diseo de Java en la siguiente lista de palabras de moda. Simple Seguro Portable Java consiste en un paquete de caractersticas que lo hacen fcil de aprender y usar. Java provee un medio seguro para la creacin de aplicaciones para internet. Los programas Java pueden ejecutarse es cualquier entorno donde se encuentre el sistema run-time de Java. Java se basa en la moderna filosofa de la programacin orientada a objetos. Java alienta a la programacin libre de errores, siendo estrictamente escrito y ejecutado con controles en tiempo de ejecucin. Java provee soportes integrados para programacin multiproceso. Java no est orientada a una arquitectura de mquina o sistema operativo. Java soporta el paso por diversas plataformas mediante el uso del cdigobyte. El cdigobyte de Java est altamente optimizado para una ejecucin veloz. Java fue diseado con el entorno distribuido de internet en mente. Los programas Java llevan con ellos cantidades sustanciales de tipo de informacin en tiempo de ejecucin que se utiliza para verificar y resolver los accesos a los objetos en tiempo de ejecucin.

Orientado a Objeto Robusto

Multiproceso Arquitecturaneutral Interpretado Alto rendimiento Distribuido Dinmico

1.0.5 Programacin orientada a objetos


El centro de Java es la programacin orientada a objetos (POO). La metodologa orientada a objetos es inseparable de Java y todos los programas hechos en Java, al menos en cierta medida, orientados a objetos. Debido a la importancia de la programacin orientada a objetos de Java, es til entender los principios bsicos de programacin orientada a objetos antes de escribir incluso un simple programa Java. La programacin orientada a objetos es una forma eficaz de abordar el trabajo de programacin. Las metodologas de programacin han cambiado dramticamente desde la invencin de la computadora, principalmente para dar cabida a la creciente complejidad de los programas. Por ejemplo, cuando se inventaron las computadoras en primer lugar, la programacin se llev a cabo alternando en las instrucciones de la mquina binarios usando el equipo de del panel frontal. Mientras que los programas eran slo unos cientos de instrucciones de plazo para este enfoque de trabajado. Como los programas crecieron, el lenguaje ensamblador fue inventado para que un programador pudiera hacer frente a mayores; programas cada vez ms complejos y el uso de instrucciones con representaciones simblicas de la mquina. Como los programas continuaron creciendo, los lenguajes de alto nivel fueron introducidos, lo que dio al programador ms herramientas con las cuales manejar la complejidad. El lenguaje generalizado primero fue, por supuesto, FORTRAN. A pesar de que FORTRAN fue un paso muy impresionante, no es un lenguaje que fomenta una programacin clara y fcil de entender. La dcada de 1960 dio a luz a la programacin estructurada. Este es el mtodo recomendado por lenguajes como C y Pascal. El uso de lenguajes estructurados ha permitido escribir programas moderadamente complejos con bastante facilidad.

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.

1.0.6 Obteniendo el Java Development Kit


Ahora que la base terica de Java se ha explicado, es el momento para empezar a escribir programas en Java. Antes de poder compilar y ejecutar esos programas, sin embargo, debe tener una aplicacin JDK (Java Development kit) instalada. El JDK proporciona dos programas de atencin primaria. El primero es javac.exe, que es el compilador de Java. El segundo es java.exe, que es el intrprete estndar de Java y tambin se conoce como el iniciador de aplicaciones. Otro punto: el JDK se ejecuta en el entorno de lnea de comandos. No es una aplicacin de ventana. Un programa simple Iniciaremos compilando y corriendo el pequeo ejemplo mostrado aqu.

/* 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.

El primer programa de ejemplo lnea por lnea


Aunque Ejemplo.java es bastante corto, incluye varias caractersticas clave que son comunes a todos los programas Java. Vamos a examinar de cerca cada parte del programa. El programa inicia con las siguientes lineas:

/* Este es un programa simple en Java. Llame a este archivo Ejemplo.java. */


Este es un comentario. Como la mayora de otros lenguajes de programacin, Java permite escribir comentarios en un programa de archivo de origen. El contenido de un comentario es ignorado por el compilador. Un comentario describe o explica el funcionamiento del programa a cualquier persona que est leyendo su cdigo fuente. En este caso, el comentario describe el programa y recuerda que el archivo de origen debe ser llamado Ejemplo.java. Por supuesto, en aplicaciones reales, los comentarios generalmente explican cmo una parte del programa funciona o una caracterstica especfica. Java soporta tres estilos de comentarios. El que se muestra en la parte superior del programa es llamado un comentario de varias lneas. Este tipo de comentario debe comenzar con / * y terminan con * /. Cualquier cosa entre estos dos smbolos de comentario es ignorado por el compilador. Como su nombre lo indica, un comentario de varias lneas puede ser de varias lneas de largo.

Esta es la siguiente lnea de cdigo:

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:

// Un programa Java inicia con una llamada a main().


Este es el segundo tipo de comentario de apoyo en el cdigo Java. Un comentario de una sola lnea comienza con / / y termina en el extremo de la lnea. Como regla general, los programadores utilizan comentarios de varias lneas para observaciones y comentarios de una sola lnea para resumen y lnea por lnea las descripciones. La siguiente lnea de cdigo muestra lo siguiente:

public static void main (String args[]) {


Esta lnea inicia el mtodo main(). Como se mencion anteriormente, en Java, una subrutina se llama mtodo. Como el comentario anterior lo sugiere, esta es la lnea en la que se iniciar el programa de ejecucin. Todas las aplicaciones Java inician la ejecucin mediante una llamada a main().

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

1.0.8 Manejo de Errores de sintaxis


Si no lo ha hecho todava, introduzca, compile y ejecute el programa anterior. Como su experiencia previa en programacin en poca, es bastante fcil escribir por accidente algo de manera incorrecta al ingresar el cdigo en el ordenador. Afortunadamente, si se introduce algo incorrecto en su programa, el compilador informar de un mensaje de error de sintaxis cuando intente compilar. El compilador de Java intenta dar sentido a su cdigo fuente no importa lo que haya escrito. Por esta razn, el error que se informe no siempre reflejar la verdadera causa del problema. En el programa anterior, por ejemplo, un omisin accidental de la llave de apertura despus del mtodo main() hace que el compilador informe la siguiente secuencia de errores.

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.

1.0.9 Un segundo programa sencillo


Tal vez ninguna otra construccin es tan importante para un lenguaje de programacin como la asignacin de un valor a una variable. Una variable es una ubicacin en la memoria con nombre al cual se le puede asignar un valor. Adems, el valor de una variable puede cambiar durante la ejecucin de un programa.

El siguiente programa crea dos variables llamadas var1 y var2.

/* 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:

var1 contiene 1024 var2 contiene var1 / 2: 512


Este programa tiene algunas cosas nuevas. Primero, la instruccin:

int var1; //declara una variable


Se declara una variable llamada var1 de tipo entero. En Java, todas las variables deben ser declaradas antes de que se utilicen. Adems, el tipo de valores que la variable puede contener tambin debe ser especificado. A esto se le llama el tipo de la variable. En este caso, var1 puede contener valores enteros. Se trata de todos los valores numricos. En Java, para declarar una variable de tipo entero, precede a su nombre la palabra clave int. Por lo tanto, la declaracin anterior declara una variable llamada var1 de tipo int.

La siguiente lnea declara una segunda variable llamada var2.

int var2; // declara otra variable


Ntese que esta lnea utiliza el mismo formato que la primera lnea, excepto que el nombre de la variable es diferente. Para declarar una variable por lo general se hace asi:

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:

var1 = 1024; //asigna 1024 a var1


En java el operador de asignacin es el signo de igual =. Asigna el valor de la derecha hacia el lado de la izquierda. La siguiente lnea de cdigo muestra el valor de var1 precedido por la cadena var1 contiene:

System.out.println("var1 contiene " + var1);


En esta declaracin, el signo ms + hace que el valor de var1 se muestre despus de la cadena que lo precede. Este enfoque se puede generalizar. Usando el operador +, se puede encadenar a muchos artculos en una sola declaracin println().

La siguiente lnea de cdigo asigna a var2 el valor de var1 dividido en 2:

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

Aqu estn las siguientes dos lneas en el programa:

System.out.print("var2 contiene var1 / 2: "); System.out.println(var2);


Dos cosas nuevas estn ocurriendo aqu. En primer lugar, el mtodo print() se utiliza para mostrar la cadena "var2 contiene var1 / 2". Esta cadena no es seguida de una nueva lnea. Esto significa que cuando la salida siguiente se genere, se iniciar en la misma lnea. El mtodo print() es igual a println(), excepto que no muestra una nueva lnea despus de cada llamada. En segundo lugar, en la llamada a println(), observe que solo se utiliza var2. Tanto print() como println() puede utilizarse para mostrar valores de cualquier tipo en Java. Un punto ms sobre la declaracin de variables antes de seguir adelante: es posible declarar dos o ms variables a travs de la misma instruccin de declaracin. Simplemente separe sus nombres con comas.

Por ejemplo, var1 y var2 podran haber sido declaradas as:

int var1, var2;

10.0.10 Otro tipo de datos


En el programa anterior, una variable de tipo int se utiliz. Sin embargo, una variable de tipo int puede contener slo nmeros enteros. Por lo tanto, no puede ser utilizada cuando un componente fraccional se requiere. Por ejemplo, una variable int puede contener el valor 18, pero no el valor 18,3. Afortunadamente, int es slo uno de varios tipos de datos definidos por Java. Para permitir los nmeros con componentes fraccionales, Java define dos tipos de coma flotante: float y double, que representan uno y dos valores de respectivamente. De los dos, doble es el ms utilizado comnmente. Para declarar una variable de tipo doubl utilice una declaracin similar a la mostrada aqu:

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.

Para entender mejor la diferencia entre int y double pruebe lo siguiente:

/* 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.

Prctica 1-1 Proyecto conversin de Galones a Litros


Aunque los programas de ejemplo anteriores ilustran varias caractersticas importantes del lenguaje Java, no son muy tiles. A pesar de que usted no sabe mucho ms acerca de Java en este momento, puede poner lo que ha aprendido a trabajar creando un programa prctico. En este proyecto, vamos a crear un programa que convierte los galones a litros. El programa trabajar declarando dos variables double. Uno llevar a cabo el nmero de los galones y el segundo contendr el nmero de litros despus de la conversin. Hay 3.7854 litros en un galn. As, para convertir galones a litros, el valor se multiplica por galn. El programa muestra tanto el nmero de galones y el nmero equivalente de litros.

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:

10.0 galones equivalen a 37.854 litros.

10.0.11 Dos Sentencias de control


Dentro de un mtodo, la ejecucin contina arriba hacia abajo. Sin embargo, es posible modificar dicho flujo a travs del uso de instrucciones de control de Java. Aunque vamos a ver de cerca las instrucciones de control ms tarde, brevemente las introducimos aqu porque las usaremos para escribir programas de ejemplo.

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:

if(10 < 11) System.out.println("10 es menor que 11");


En este caso 10 es menor que 11, la condicion es verdadera y println() se ejecutar. Considere lo siguiente:

if(10 < 9) System.out.println("Esto no ser mostrado");


En este caso 10 no es menor que 9. Por lo tanto la llamada a println() no se ejecutar. Java define un complemento de operadores relacionales que pueden ser utilizados para realizar expresiones. Aqu se muestran: Operador Significado < Menor que <= Menor o igual que > Mayor que >= Mayor o igual que == Igual que != Diferente de A continuacin un ejemplo de la sentencia if:

/* 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");

if(c >= 0) System.out.println("c no es negativo"); if(c < 0) System.out.println("c es negativo"); } }


La salida:

a c c c c

es menor que b contiene -1 es negativo contiene 1 no es negativo

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:

for(inicializacion; condicion; iteracion) instruccion;


En su forma ms comn, en la parte de inicializacin del bucle se establece una variable de control del bucle en un valor inicial. La condicin es una expresin booleana que pone a prueba la variable de inicializacin. Si el resultado de esa prueba es verdadero, el bucle de iteracin contina. Si es falso, el bucle termina. La expresin de iteracin determina como la variable de inicializacin del bucle cambia cada vez que el bucle se repite. Aqu est un pequeo programa que ilustra el ciclo for:

/* 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.

10.0.12 Creacin de bloques de cdigo


Otro elemento clave de Java son los bloques de cdigo. Un bloque de cdigo es una agrupacin de dos o ms declaraciones. Esto se hace encerrando entre llaves. Una vez que un bloque de cdigo se ha creado, se convierte en una unidad lgica que se puede utilizar cualquier lugar. Considere esta sentencia if:

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

i no es igual a cero j / i es 2.0

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.

10.0.13 Posicionamiento y Punto y coma


En Java, el punto y coma es un terminador de sentencia. Es decir, cada instruccin individual debe ser terminada con un punto y coma que indica el final de una entidad lgica. Como sabe, un bloque es un conjunto de enunciados lgicamente conectados que estn rodeados por llaves de apertura y cierre. Un bloque no termina con punto y coma. Un bloque es un grupo de estados con un punto y coma despus de cada declaracin y tiene sentido, un bloque no es terminado por un punto y coma, sino que el final del bloque se indica mediante la llave de cierre. Java no reconocer el final de la lnea hasta que encuentra un punto y coma. Por esta razn, no importa en que lnea ponga una instruccin. Por ejemplo:

x = y; y = y + 1; System.out.println(x + " " + y);


Es lo mismo si escribiera:

x = y; y = y + 1; System.out.println(x + " " + y);

Adems, los elementos individuales de una instruccin pueden estar en lneas separadas.

Proyecto 1-2 Mejora del convertidor de galones a Litros


Podemos utilizar el bucle for,para los bloques de instrucciones y crear una versin mejorada del convertidor de galones a litros que desarrollamos en el primer proyecto. Esta nueva versin va a imprimir una tabla de conversiones, a partir de 1 galn y terminando en 100 galones. Despus de cada 10 galones, una lnea en blanco saldr en la pantalla. Esto se logra mediante el uso de una variable contadora que cuenta el nmero de lneas que han sido mostradas. Preste especial atencin a su uso. Paso a paso 1. Cree un nuevo archivo, llmelo GalToLitTabla.java. 2. Coloque el siguiente programa dentro del archivo.

/* 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. ..

1.0.14 Las palabras reservadas de Java


Cincuenta palabras reservadas o clave se encuentran definidas en el lenguaje Java (ver Tabla 1-1). Estas palabras clave, combinadas con la sintaxis de los operadores y separadores, forman la definicin de Java. Estas palabras clave no se pueden utilizar como nombres para una variable, clase o mtodo. La palabra const y goto estn reservadas pero no se utilizan. En los primeros das de Java, varias palabras clave estaban reservadas para un posible uso futuro. Sin embargo, la especificacin actual de Java define slo las palabras clave que aparecen en la Tabla 1-1. La palabra clave enum es nueva. Fue aadida en J2SE 5. Adems de las palabras clave, Java se reserva lo siguiente: true, false y null. Estos son los valores definidos por Java. Usted no puede usar estas palabras para los nombres de las variables, clases, etc.

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

1.0.15 Identificadores en Java


En Java un identificador es un nombre dado a un mtodo, una variable o cualquier otro elemento definido por el usuario. Los identificadores pueden ser de uno a varios caracteres de largo. Los nombres de variables pueden comenzar con una letra del alfabeto, un subrayado o un signo de dinero, luego puede ser una letra, un dgito o un guin abajo. El subrayado se puede utilizar para mejorar la legibilidad de un nombre de variable, como en conteo_linea. Las maysculas y minsculas son diferentes, es decir, para Java mivar y MiVar son nombres distintos.

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.

1.0.16 Libreras de clases de Java


Los programas de ejemplo que utilizamos hacen uso de dos de los mtodos incorporados de Java: println() y print(). Estos mtodos son miembros de la clase System, que es una clase predefinida de Java que se incluye automticamente en sus programas. En un punto de vista ms amplio, el medio ambiente de Java se basa en varias funciones integradas de las bibliotecas de clases que contienen muchos mtodos integrados que prestan apoyo a cosas tales como el manejo de cadenas de E/S, trabajo en red y grficos. Las clases por defecto tambin proporcionan produccin de ventanas. As, Java en su totalidad es una combinacin del lenguaje en s, adems de sus clases normales. Como ver, las bibliotecas de clases proporcionan muchas de las funciones que vienen con Java. De hecho, parte de convertirse en un programador Java es aprendiendo a usar las clases estndar de Java. A lo largo de este curso, se describen diversos elementos de la biblioteca de clases estndar y los mtodos. Sin embargo, la biblioteca de Java es algo que tambin va a querer explorar ms por su cuenta.

Das könnte Ihnen auch gefallen