Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Aprendiendo java, Apuntes de Informática

Asignatura: Programación I, Profesor: , Carrera: Ingeniero Técnico en Informática de Gestión, Universidad: UPM

Tipo: Apuntes

2013/2014

Subido el 19/03/2014

hectorbellino
hectorbellino 🇪🇸

4.5

(10)

7 documentos

1 / 73

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Aprendiendo Java
y
Programación Orientada a Objetos
Gustavo Guillermo Pérez
www.compunauta.com
gustavo@compunauta.com
*Hasta que esta leyenda no desaparezca el libro no ha sido terminado, revisar:
http://compunauta.com/forums/linux/programacion/java/ebook.html
para las actualizaciones diarias o semanales y para descargar el código de los ejemplos.
ESTE LIBRO ES LIBRE Y GRATUITO, CONSIDERA HACER UNA PEQUEÑA
DONACIÓN EN LA WEB INDICADA ARRIBA.
*Para navegar el Índice con Adobe Acrobat Reader, abrir favoritos o bookmarks
Ultima actualización, lunes 11 de febrero de 2008
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49

Vista previa parcial del texto

¡Descarga Aprendiendo java y más Apuntes en PDF de Informática solo en Docsity!

Aprendiendo Java

y

Programación Orientada a Objetos

Gustavo Guillermo Pérez www.compunauta.com [email protected] *Hasta que esta leyenda no desaparezca el libro no ha sido terminado, revisar: http://compunauta.com/forums/linux/programacion/java/ebook.html para las actualizaciones diarias o semanales y para descargar el código de los ejemplos. ESTE LIBRO ES LIBRE Y GRATUITO, CONSIDERA HACER UNA PEQUEÑA DONACIÓN EN LA WEB INDICADA ARRIBA. *Para navegar el Índice con Adobe Acrobat Reader, abrir favoritos o bookmarks Ultima actualización, lunes 11 de febrero de 2008

INDICE DEL TEMARIO

Prólogo

Este libro se hizo con la idea de proveer a mis alumnos y cursos un material didáctico con qué trabajar (también es útil para profesores y otros cursos) y al mismo tiempo dar una idea concisa de lo que significan los objetos en Java. La programación orientada a objetos en Java no es tratada y enfocada en muchos textos tutoriales, manuales o libros sobre el tema y considero que es la etapa inicial del aprendizaje donde se falla en muchos cursos respecto a Java. Por otro lado los estudiantes que recién se inician en la programación, no podrán ir muy lejos si no se les inculca los conceptos básicos, entonces este material no avanzara de lleno sobre la programación orientada a objetos, sino hasta que los conceptos de programación básicos, como tomas de decisión, bucles, variables etc, estén fijados lo suficiente. Java es un lenguaje muy útil debido a la opción multiplataforma que provee (desde PC, Linux, Windows, hasta MAC, teléfonos, pocket PCs, etc.) y veremos en el transcurso de este texto como se puede optimizar la ejecución de una aplicación Java para que se aproxime a la ejecución de un binario nativo como los que se compilan con gcc. Por lo tanto suponer que el alumno posee conocimientos avanzados de programación orientada a objetos o de otros lenguajes de programación no siempre suele ser la mejor opción, en este libro dejaremos en claro que el lenguaje de programación Java tiene sus operadores matemáticos básicos y tipos de datos básicos sin importar que estos mismos existan o no en otros lenguajes de programación. Este libro se distribuye bajo la licencia GNU GPL v2, con la excepción que está prohibido hacer impresiones modificadas del texto, si alguien tiene una sugerencia o una modificación para sugerir, puede enviar al correo electrónico indicado la información, para una futura actualización o corrección. Las sugerencias son bienvenidas.

I. TEMAS INTRODUCTORIOS

La Máquina Virtual de Java (JVM, Java Virtual Machine)

La máquina virtual de Java se denomina al procesador o entorno virtual que se utiliza para interpretar los bytecodes de los binarios de Java, ya que como sabemos Java se hizo para correr en cualquier plataforma sin recompilar los binarios. De esta manera este entorno virtual se puede obtener para nuestra arquitectura y sistema operativo sin modificaciones a nuestro programa original (esto no es cierto si utilizamos una mala dinámica de programación). Podemos entonces generar un binario y este podrá Correr en Linux, MAC OSX, FreeBSD, Solaris, o Windows, y para las arquitecturas disponibles en las que podamos obtener la JVM, como ser AMD64, SPARC, PIV, etc. etc. La máquina virtual de Java ha tenido la característica de ser un entorno de ejecución pesado en términos de recursos del procesador y memoria, que por medio de una administración rigurosa del sistema operativo estos podrían llegar a ser insuficientes y las aplicaciones ejecutarse de manera muy lenta. Esto no es cierto en la actualidad, existen alternativas a la JVM provista por Sun Microsystems que permiten una velocidad comparable a una aplicación compilada en C++ nativa en la arquitectura, un ejemplo de esto es Kaffe, Kaffe (www.kaffe.org) es una máquina de Java OpenSource que puede compilarse sin mayores modificaciones en nuestra arquitectura necesaria y correrá increíblemente más rápida que la distribución estándar de JVM de Sun Microsystems y consumirá muchos menos recursos.

Kit de desarrollo y Entorno de ejecución (JDK, JRE)

El Kit de desarrollo conocido como JDK (Java Development Kit) provee de un compilador, un mecanismo para comprimir un proyecto en un solo archivo de tipo JAR (que es compatible con ZIP) y un entorno de ejecución para nuestros binarios. Cuando nuestro proyecto terminado se prepara para distribuir, no es necesario tener el compilador y la mayoría de las herramientas que se proveen en el JDK, entonces podemos prescindir de dicho JDK y utilizar el entorno de ejecución que es más pequeño en cuestiones sólo de espacio en disco. Este JRE (Java Runtime Environment) también puede redistribuirse sin problemas de licencias. En las plataformas basadas en Linux, existen mejores herramientas de desarrollo y por supuesto en casi todas las distribuciones de Linux, se encuentra disponible Kit de desarrollo o JDK. Así como recomendamos Kaffe como JVM para proyectos avanzados o de alto rendimiento, recomendamos Jikes como compilador de ByteCodes para Java, Jikes no es interpretado como el compilador proporcionado en el JDK de Sun Microsystems.

Comandos que inician el JDK, JRE

Comando Descripción java Inicia el entorno de ejecución recibiendo como argumento el nombre del binario ejecutable en formato ByteCodes sin la extensión de archivo .class que identifica de manera visual un binario java. Este comando es parte de JDK y JRE javac Inicia el compilador Java recibiendo como argumento todos los archivos de código fuente cuya terminación es .java incluida dicha extensión. Este comando no es parte de JRE. jar Por medio de este comando iniciamos el empaquetador de clases y archivos de Java que nos permiten fabricar un único archivo contenedor de nuestras aplicaciones, multimedia y gráficos. Este comando es parte sólo de JDK.

Usando Kaffe y Jikes gus@gusgus ~ $ java -version java full version "kaffe-1.4.2" kaffe VM "1.1.6" Copyright (c) 1996-2005 Kaffe.org project contributors (please see the source code for a full list of contributors). All rights reserved. Portions Copyright (c) 1996-2002 Transvirtual Technologies, Inc. The Kaffe virtual machine is free software, licensed under the terms of the GNU General Public License. Kaffe.org is a an independent, free software community project, not directly affiliated with Transvirtual Technologies, Inc. Kaffe is a Trademark of Transvirtual Technologies, Inc. Kaffe comes with ABSOLUTELY NO WARRANTY. Engine: Just-in-time v3 Version: 1.1.6 Java Version: 1. Heap defaults: minimum size: 5 MB, maximum size: unlimited Stack default size: 256 KB gus@gusgus ~ $ javac Usage: javac where possible options include: -g Generate all debugging info -g:none Generate no debugging info -g:{lines,vars,source} Generate only some debugging info -nowarn Generate no warnings -verbose Output messages about what the compiler is doing -deprecation Output source locations where deprecated APIs are used -classpath Specify where to find user class files -sourcepath Specify where to find input source files -bootclasspath Override location of bootstrap class files -extdirs Override location of installed extensions -d Specify where to place generated class files -encoding Specify character encoding used by source files -source Provide source compatibility with specified release -target Generate class files for specific VM version -help Print a synopsis of standard options gus@gusgus ~ $

gus@gusgus ~ $ jar Sintaxis: jar {ctxu}[vfm0Mi] [archivo-jar] [archivo-manifest] [-C dir] archivos ... Opciones: -c crear nuevo contenedor -t mostrar contenido de contenedor -x extraer archivos nombrados (o todos) del contenedor -u actualizar contenedor existente -v generar salida detallada en salida estándar -f especificar nombre de archivo contenedor -m incluir información de manifest del archivo manifest especificado -0 solo almacenar; no utilizar compresión ZIP -M no crear un archivo manifest para las entradas -i generar información de índice para los archivos jar especificados -C cambiar al directorio especificado e incluir el archivo siguiente Si alguno de los archivos es un directorio, se procesará de forma recursiva. Se deben especificar los nombres del archivo manifest y del archivo contenedor en el mismo orden en que se especifiquen los indicadores 'm' y 'f'. Ejemplo 1: para archivar dos archivos de clase en un contenedor llamado classes.jar: jar cvf classes.jar Foo.class Bar.class Ejemplo 2: utilizar un archivo manifest existente, 'mymanifest', y archivar todos los archivos del directorio foo/ en 'classes.jar': jar cvfm classes.jar mymanifest -C foo/. gus@gusgus ~ $

Nota: Java provee una documentación completa en inglés de toda la biblioteca incluida en la versión de JRE o JDK, una buena práctica es no utilizar las más avanzadas y complejas funciones de la API (Application Programing Interface) ya que al querer iniciar nuestro programa en una versión anterior que no tenga una biblioteca actualizada, se pueden producir problemas de métodos faltantes.

Herencia soportada por Java

Java no soporta herencia múltiple, es decir no podemos fabricar un objeto más complejo con dos diferentes más simples, sino que sólo podremos heredar objetos nuevos de un sólo objeto padre, que proveerá los métodos y propiedades básicas que serán extendidas y/o ampliadas por el nuevo objeto. Es decir no podríamos tener un objeto Lámpara Reloj que derive del objeto Lámpara y del objeto Reloj, sino que tendríamos que usar otros mecanismos para proporcionar esa funcionalidad, interfaces y alojamiento de objetos. Esto podría comprenderse como:

  • Interfaces: Permiten que sean implementadas por objetos para adquirir comportamiento, pero el comportamiento no es provisto por la interfaz, sino que el programador debe proporcionar una manera eficaz de construir los métodos definidos en dicha interfaz uno por uno. Pueden implementarse varias interfaces al mismo tiempo, en todos los casos es necesario codificar funciones o métodos.
  • Alojamiento: Podemos pensar que al objeto Lámpara le insertamos en su interior un objeto Reloj entonces podemos llamar a los métodos del Reloj que está en la Lámpara, esto lo veremos más adelante en algunos ejemplos. Ya no sería la Lámpara Reloj, pero sería una Lámpara con Reloj.
  • Herencia: Nos permite crear un objeto nuevo en base a uno existente, es una nueva clase de objeto, puede utilizar el alojamiento de otros objetos como propiedades para adquirir funcionalidad.

Tipos de datos Básicos

En todos los lenguajes de programación existen tipos de datos básicos con los que se realizarán las operaciones matemáticas básicas y las operaciones booleanas de verdadero o falso. Tipo de Datos Alcance o Rango int de -2147483648 a 2147483647 (4bytes ) byte de -128 a 127 (1Byete) short de -32768 a 32767 (2Bytes) long de -9223372036854775808 a 9223372036854775807 (8Bytes) char de '\u0000' a '\uffff', ambos incluidos que es lo mismo que de 0 a 65535, 1 letra boolean 0 o 1 (1bit) float 4Bytes, punto flotante double 8Bytes, punto flotante String No es un tipo de datos básico, es un objeto básico, con propiedades y métodos, pero el lenguaje Java permite definir un nuevo objeto con el delimitador (“), por lo que podemos concatenar (unir) texto utilizando el operador (+) con los nombres de los objetos de tipo String y los trozos de texto delimitados con (“). Tabla 1 : Tipos de datos básicos

Operadores y Delimitadores Básicos

Operador Datos Acción

String Une texto (concatenador). número Suma.

  • número invierte el signo del número. número Resta.
  • número^ Multiplica y tiene prioridad sobre la suma y resta. / número Divide y tiene prioridad sobre la suma y resta. % número Devuelve el resto de la división del operador derecho por el izquierdo. ! booleano El operador^ NOT^ booleano. ~ número^ Invierte bit por bit el operando de la derecha & entero o booleano El operador AND, booleano bit por bit del elemento a la izquierda contra el de la derecha. && (^) Cualquier El operador AND condicional. | entero o booleano El operador OR, booleano bit por bit del elemento a la izquierda contra el de la derecha. || Cualquier El operador OR condicional. << número^ Desplaza los bits hacia la izquierda la cantidad de la derecha.

número^ Desplaza los bits hacia la derecha la cantidad de la derecha.

número Desplaza bits hacia la derecha pero no conserva el signo. == Cualquier El operador condicional de igualdad, devuelve verdadero si derecha e izquierda es lo mismo. < Básicos^ Menor que, devuelve verdadero si izquierda es menor que derecha. <= Básicos^ Menor o igual que, devuelve verdadero si izquierda es menor o igual que derecha. Básicos^ Mayor que, devuelve verdadero si izquierda es mayor que derecha. = Básicos Mayor o igual que, devuelve verdadero si izquierda es mayor o igual que derecha. = Cualquier Asigna al elemento de la izquierda, el de la derecha. (op)= Básicos Hace la operación op [+,-,,/.etc..] entre los dos operandos y el resultado lo guarda en el de la izquierda. var++ Básicos^ Incrementa en uno la variable var. var-- Básicos Decrementa en uno la variable var. . objetos^ Separa los nombres de los objetos o propiedades o métodos o nombres y jerarquía de clases. (int) tipo de datos Convierte un tipo de datos a entero, si reemplazamos int por una clase de objetos, podemos siempre y cuando sea correcto convertir al tipo de datos indicado entre paréntesis. ; Cualquier^ Termina una línea de orden. , Cualquier^ Separa argumentos de un método o función. // Cualquier Empieza una línea de comentario. / / Cualquier^ Delimitan un trozo de texto como comentario. /* */ Cualquier^ Delimitan un trozo de texto como documentación para JavaDoc

II. Codificación Inicial y Estructuras de Datos

Nota: En este capítulo veremos como codificar y compilar el primer programa, a continuación emplearemos los operadores y tipos de datos básicos y por último veremos las estructuras de datos básicas soportadas por Java.

El primer programa

Suponemos que nuestro sistema operativo ya tiene instalado el kit de desarrollo (JDK) y procedemos a abrir un editor de texto de nuestro gusto. En KDE, podemos abrir kwrite en otros sistemas busquemos block de notas u otro editor como EditPlus , de todas maneras cualquier editor estará bien. Dentro del editor de textos escribiremos lo siguiente: public class HolaMundo { public static void main(String[] args) { System.out.println("Hola, mi primer programa"); } } El archivo debe guardarse como HolaMundo.java respetando las mayúsculas y minúsculas, necesitamos compilar el programa para obtener el binario con extensión class, entonces procedemos a llamar al compilador con una consola de comandos para poder después usar la JVM (comando java) para correr el programa, pero para trabajar mejor haremos una carpeta donde guardaremos los ejemplos, para los que usen Windows háganla en la unidad c:\ y nómbrenla ejemplos, para los que usamos un sistema mejor, en nuestra carpeta de usuario y la llamamos ejemplos también sólo que en minúsculas. gus@gusgus ~ $ cd ejemplos gus@gusgus ~/ejemplos $ javac HolaMundo.java gus@gusgus ~/ejemplos $ java HolaMundo Hola, mi primer programa gus@gusgus ~/ejemplos $ Nota: Más adelante veremos como utilizar un editor basado en Java para practicar este curso, antes de explicar línea por línea del programa, es necesario introducir un tema que será utilizado con mucha frecuencia, estos son los paquetes, los cuales darán el concepto de Clase Pública.

Paquetes

En el ejemplo anterior hemos omitido una parte esencial de la programación en el lenguaje Java, estos son los Paquetes , se utilizan para diferenciar una clase respecto de otras con el mismo nombre, si nos ponemos a pensar sobre la cantidad de nombres diferentes de clases que podemos poner a los tipos de objetos en nuestros programas es infinita, pero dos programadores diferentes pueden llegar a usar dos veces el mismo nombre para una misma clase, de esta manera podemos hacer que sólo las clases de objetos que haremos visibles a otros programadores o que ejecutarán el componente principal del programa (el método estático main) sean públicas. Las clases de objetos que no queramos hacer visibles a otros componentes de nuestro proyecto, entonces se podrán declarar como privadas, de esa manera sólo una clase de objetos que pertenezca al grupo de clases podrá acceder a las demás privadas. Los paquetes suelen tener un nombre especial referente al de la organización que realiza el

proyecto, esto es una sugerencia, en realidad se puede utilizar casi cualquier nombre, así que por ejemplo si nuestra empresa es compunauta, y el nombre de dominio de los servicios que se proporcionan en Internet es compunauta.com , entonces nuestro paquete podría llamarse com.compunauta y a su vez si tenemos un subproyecto, este podríamos nombrarlo como com.compunauta.aprendiendojava , sólo tengamos en cuenta que es el orden inverso de como aparecería en Internet. Usamos puntos para separar los nombres y tenemos cuidado respecto de las mayúsculas y minúsculas. Nota: El lenguaje Java es sensible a las mayúsculas y minúsculas, es decir si tenemos el nombre del paquete com.compunauta.aprendiendojava no será lo mismo si lo escribimos como com.compunauta.AprendiendoJava. De la misma manera no es lo mismo HolaMundo que holamundo.

Palabras clave o reservadas

Las palabras clave o reservadas son aquellas que definen o se combinan con una definición de datos de una variable o propiedad, clase de objetos o métodos, por ejemplo c lass es una palabra clave y nos indica que a continuación pondremos el nombre a la clase de objeto que vamos a crear, si queremos que dicha clase pueda ser accedida desde dentro o fuera de nuestro paquete de clases de objetos, entonces la definiremos como public (pública), donde esta es otra palabra clave. A veces las palabras claves son palabras reservadas, por ejemplo goto es una palabra clave reservada en Java, ya que no tenemos permitido saltar a una línea en particular de nuestro programa, tenemos que trabajar con llamadas a funciones y otras maneras de codificación. Tipos de datos Definen tipos de datos que devolverán los métodos o los tipos de datos que definirán una propiedad básica. Estos ya los habíamos visto anteriormente pero ahora los describiremos por el espacio que ocupan en memoria. Palabra Clave Significado boolean Valores Booleanos (1bit*) byte 1Byte, número entero (8bits) short (^) 2Bytes, número entero int (^) 4Bytes, número entero long (^) 8Bytes, número entero char 2Bytes, (short) 1Caracter float 4Bytes, punto flotante. double (^) 8Bytes, punto flotante, doble precisión void (^) Cuando no hay nada que devolver null (^) Tipo de datos Nulo, vacío, cualquier operación sobre null produce un error. Tabla 3 : Palabras claves - Tipos de datos Permisos y declaración de clases, propiedades o métodos. Definen los permisos a un método o clase de objetos, haciendo visible u oculto un método propiedad o clase a otras clases de objetos u otros objetos que quieran accederlas.

Reservadas Palabra clave Significado goto Palabra reservada en el lenguaje de programación Java, no puede utilizarse pero el compilador en ciertas ocasiones es capaz de generar un comportamiento similar en las optimizaciones, de tal manera que los binarios si podrían estar utilizando este tipo de salto a una etiqueta. const Palabra reservada que no es utilizada por el momento en Java. Tabla 6 : Palabras clave – Reservadas Excepciones, control de errores En casi todos los lenguajes de programación existen mecanismos para actuar según sucedan errores de cualquier tipo, desde accesos al disco hasta división por cero, los cuales de no ser manipulados por nuestro programa tendrán el comportamiento por defecto de la máquina virtual de java, que es reportarlos como excepciones y terminar el programa. Palabra clave Significado throws Indica que tipo de excepciones lanzará este método en caso de errores, es útil para que los métodos que llaman a este que lanzará una excepción en caso de errores, se vean obligados a tratar esa situación. throw Transfiere el control de errores al manejador de excepciones. try { ... } catch(tipo excepcion){ ... } finally { ... } Esta es la estructura de un manejador de excepciones o control de errores, try inicia el bloque de código que será manejado en caso de errores, la sentencia catch indica el tipo de excepción que se capturará, esta última puede repetirse para hacer cosas diferentes de acuerdo por ejemplo si el problema fue una división por cero o un error de acceso de disco. La sentencia finally se ejecutará de todas maneras al salir del código. Si una excepción no es capturada por el listado de cláusulas catch, entonces es probable que la JVM inicie el reporte y la salida de la instancia completa de la JVM, interrumpiendo todos los hilos de ejecución. Tabla 7 : Palabras clave - Control de errores

Secuencias de escape

Las secuencias de escape son aquellas combinaciones de caracteres que nos permiten insertar un caracter especial que no es posible tipear con el teclado estándar o que no es posible utilizar porque denota un trozo de texto, por ejemplo las comillas dobles en el ejemplo hola mundo que están dentro de la función println. System.out.println("Hola, mi primer programa"); Si quisiéramos incluir las comillas dobles en la ejecución deberíamos incluirlas con una secuencia de escape, para ello se utiliza la barra invertida \ seguida de las comillas dobles \”. System.out.println("\”Hola, mi primer programa\”"); De esa manera el compilador entiende que el trozo de texto contendrá las comillas dobles, pero que pasaría si quisiéramos escribir el caracter \ que en algún sistema operativo distinto de Linux podría significar división de directorios o carpetas, bueno para esto usaríamos una \ seguida de otra , es decir \ para insertar el caracter . System.out.println("Hola, mi primer programa, está en c:\");

Aquí hay una lista de las secuencias de escape más usadas y una breve explicación de su utilidad, ya que Java soporta Unicode, una representación extensa de lo que es un caracter que permite inclusión de varios idiomas. Secuencia Significado \b Retroceder un espacio (backspace) \t Tabulador Horizontal, sirve para alinear texto en la salida estándar de datos cuando es una terminal o consola de comandos. \n Salto de línea, es el caracter usado incluso en las viejas impresoras que necesitaban avanzar de línea para escribir en el próximo renglón. \r Retorno de carro, es el caracter que devuelve el cursor o el cabezal de la imprezora al inicio del renglón, Linux, usa \n para un nuevo renglón en los archivos de texto, Windows utiliza una combinación \n\r. \” Insertan las comillas dobles ' Insertan la coma simple. \ Insertan la misma barra invertida que usamos como escape. \DDD Las tres D son dígitos y representan un caracter en su versión octal. \uDDDD Las cuatro D son dígitos y representan un caracter unicode en hexadecimal.

Concatenación y conversiones a texto

La concatenación de texto se denomina a la unión de trozos o fragmentos de textos y comúnmente se utiliza la conversión de números o de objetos a su representación en texto, Java convierte automáticamente los tipos de datos básicos a texto antes de unirlos y llama por cada objeto al método especial toString() para realizar la conversión de objetos nuestros o de la biblioteca de la JVM. Veamos un ejemplo:

  1. public class SumaSimple {
  2. public static void main(String[] args) {
  3. int a=1;
  4. System.out.println("el valor de a="+a);
  5. a=a+10;
  6. System.out.println("ahora sumándole 10 es a="+a);
  7. }
  8. } En la línea 1, definimos el nombre de la clase, que es pública y se llama SumaSimple , en la segunda línea definimos el método estático main que es el que la JVM ejecutará para iniciar nuestros programas. Nota: El arreglo o vector args se utiliza para recibir todas las órdenes de la JVM, los vectores en Java son objetos que tienen propiedades. En la línea 3, se define una variable de tipo entero llamada “a” que inicialmente guardará un 1 positivo, la 4ta^ línea ejecuta el método println(String line) que pertenece al objeto out que a su vez es propiedad del objeto System, tener un objeto de salida, se imprimirá en pantalla el trozo de texto “el valor de a=” seguido del valor (el contenido de a). En la línea 5, al contenido de la variable a, le agregamos el resultado de sumar a+10, eso no tiene que dar un total de 11 que se verá reflejado en la línea 6, cuando volvemos a llamar al método println del objeto out que pertenece al objeto System.

El objeto out es del tipo o clase Printstream que tiene las siguientes propiedades y métodos importantes, no listaremos todos: Resumen de Métodos boolean (^) checkError () Envía todo el buffer y devuelve verdadero si hay error o falso. void close () Cierra el flujo de datos void flush () Envía todo el buffer. void print (boolean b) Imprime una variable booleana void (^) print (char c) Imprime un caracter. void (^) print (char[] s) Imprime un arreglo de caracteres. void (^) print (double d) Imprime un numero de tipo double. void (^) print (float f) Imprime un número de punto flotante. void (^) print (int i) Imprime un entero. void (^) print (long l) Imprime un entero largo. void (^) print (Object obj) Imprime un objeto, invocando su función toString() void print (String s) Imprime un objeto de tipo String void println () Imprime una separador de nueva línea. void println (boolean x) Imprime un valor booleano y termina la línea. void (^) println (char x) Imprime un caracter y termina la línea. void (^) println (char[] x) Imprime un arreglo de caracteres y termina la línea. void (^) println (double x) Imprime un número de precisión doble y termina la línea. void (^) println (float x) Imprime un número de punto flotante y termina la línea. void (^) println (int x) Imprime un entero y termina la línea.

void (^) println (long x) Imprime un entero largo y termina la línea. void (^) println (Object x) Imprime un objeto invocando su método toString() y termina la línea. void (^) println (String x) Imprime un trozo de texto y termina la línea. Tabla 8 : Resumen de métodos importantes para out.

System.in

El objeto in que es una propiedad de System es de la clase o tipo InputStream , que también es parte de la biblioteca de Java. Aquí vemos los métodos que nos interesan. Resumen de Métodos int available () Devuelve la cantidad de bytes que se pueden leer (o pasar por alto) desde esta entrada sin bloquear la próxima llamada a lectura. void (^) close () Cierra esta entrada de datos y libera todos los recursos asociados. abstract int read () Lee el próximo byte de datos desde la entrada, espera por los datos. int (^) read (byte[] b) Lee de la entrada los bytes que llenan el arreglo b, devuelve la cantidad de bytes que se almacenaron. int read (byte[] b, int off, int len) Lee hasta len bytes de datos adentro del arreglo de bytes b empezando en off. long skip (long n) Salta y destrulle los n caracteres de datos. Tabla 9 : Resumen de métodos importantes del tipo de objetos in.

System.err

Este objeto es del mismo tipo que out (Printstream) y tiene las mismas propiedades, en los sistemas operativos derivados de Unix como ser Linux, existe mucho la diferencia entre salida estándar de datos (System.out) y la salida estándar de errores (System.err), por ejemplo al imprimir todos los carteles de errores en un tipo de salida no afectaríamos a los resultados, un ejemplo sería el siguiente: public class SumaSimple3 { public static void main(String[] args) { int a=1; System.err.println("el valor de a="+a); System.out.println(a); a=a+10; System.err.println("ahora sumándole 10 es a="+a); System.out.println(a); } }