1. Origenes
1.1. 1991
1.1.1. James Gosling inicia el proyecto
1.1.1.1. Desea un código independiente
1.1.1.2. C++ no satisface
1.2. 1993
1.2.1. Aparece OAK
1.2.1.1. Similar a C++
1.2.1.2. Mas portable y seguro
1.3. 1994
1.3.1. Aparecen
1.3.1.1. WWW
1.3.1.2. Mosaic
1.4. 1995
1.4.1. Sun anuncia la disponibilidad de
1.4.1.1. Lenguaje Java
1.4.1.2. Browser HotJava
1.5. 2004
1.5.1. Versión J2se1.5-Beta
1.5.1.1. Incluye programación generica
2. Tecnología Java
2.1. Lenguaje de Programación
2.1.1. Orientado a Objetos
2.1.2. Sintaxis similar a C++
2.2. Plataforma
2.2.1. Maquina Virtual Java
2.2.2. Java API
2.2.3. Tres Versiones
2.2.3.1. J2SE
2.2.3.2. J2EE
2.2.3.3. J2ME
3. Caracteristicas
3.1. Simple y Orientado a Objetos
3.1.1. Simple de Aprender
3.1.2. Alta re-utilización y bibliotecas
3.2. Robusto y Seguro
3.2.1. Tipificado Fuerte
3.2.2. Recolección de Basura
3.3. Interpretado
3.3.1. Se compila en bytecode
3.3.2. Interpretado por JVM
3.4. Distribuido y Alto Desempeño
3.4.1. Compilación JIT
3.4.2. Movilidad de Código
3.5. Multi-hebra
3.5.1. Mejora interactividad de aplicaciones
3.6. Dinámico
3.6.1. Enlace y carga de aplicaciones
4. Aplicación
4.1. Comentarios
4.1.1. //texto
4.1.1.1. Una solo linea de comentario
4.1.2. /*texto*/
4.1.2.1. Varias lineas de comentario
4.1.3. /**texto*/
4.1.3.1. Comentarios de documentación
4.2. Método Main
4.2.1. Contiene un argumento único
4.2.2. Arreglo de Strings
4.3. Acceso a Recursos del Sistema
4.3.1. Provee una API
4.3.1.1. Application Programming Interface
4.3.1.2. Permite acceder a recursos
4.3.1.2.1. Ingreso de forma independiente del entorno
4.3.1.3. Definida en el paquete System
5. Applets
5.1. Es una aplicación pequeña
5.2. Uso normal en Web Browser
5.2.1. También visible en appletviewer
5.3. Diferente modelo de ejecución
6. Importación de Clases y Paquetes
6.1. La palabra "import" permite importar clases de un paquete
6.1.1. import.java.applet*
6.1.1.1. Permite usar todas las clases del paquete java.applet
6.1.1.2. Applet es una clase del paquete java.applet
7. Definición de Subclases
7.1. La palabra "extends" para definir una suclase de otra
7.1.1. public class HolaMundo extends Applet {....}
8. Implementación de Métodos
8.1. Una clase puede implementar uno o mas métodos
8.1.1. public void paint(Graphics g) { g.drawString ("Hola Mundo", 50, 25); }
8.1.1.1. Un epplet debe implementar por lo menos uno de los siguientes métodos
8.1.1.1.1. init
8.1.1.1.2. start
8.1.1.1.3. paint
9. Funcionalidad de Java
9.1. Esencial
9.1.1. Objetos
9.1.2. Strings
9.1.3. Números
9.1.4. Estructuras de Datos
9.1.5. E/S
9.1.6. Propiedades del Sistema
9.1.7. Fecha
9.1.8. Hora
9.2. Interfaces Gráficas
9.2.1. AWT
9.2.2. Swing
9.2.3. Java2d
9.2.4. Java3d
9.3. Comunicación en la Red y Applets
9.3.1. Web
9.3.2. URL
9.3.3. Sockets UDP y TCP
9.3.4. Direcciones IP
9.4. Internacionalización
9.4.1. Adaptarse al lugar e idioma
9.5. Seguridad
9.5.1. Firma Digital
9.5.2. Gestión de Claves
9.5.3. Certificados
9.5.4. Control de Acceso
9.6. Threads (Hebras)
9.6.1. Programación con múltiples threads
9.7. Componentes de Software
9.7.1. Enchufar en arquitecturas existentes
9.8. Serialización de Objetos
9.8.1. Persistencia liviana y comunicación vía RMI
9.9. Acceso Uniforme a Base de Datos Relaciones
9.9.1. Java Database Connectivity (JDBC)
10. Herencia
10.1. Clases Extendidas
10.1.1. Todas las clases son extendidas
10.1.1.1. Toda clase se deriva
10.1.1.2. La clase Object implementa el comportamiento
10.1.2. Sólo se permite una única superclase
10.2. Reglas
10.2.1. Una subclase herada todos los miembros
10.2.1.1. protegidos
10.2.1.2. públicos
10.2.1.3. sin modificador
10.2.2. Colisiones en nombre
10.2.2.1. En caso de una variable, se oculta
10.2.2.2. En caso de un método, se redefine
10.3. Redefinición de Variables Miembros
10.3.1. Solo pueden ser ocultados
10.3.2. Para accederlos se puede usar la referencia "super"
10.4. Re definición de Métodos
10.4.1. Donde existen coincidencia de nombres
10.4.1.1. Sobrecarga
10.4.1.1.1. Definir más de un método con el mismo nomnre
10.4.1.1.2. Diferente firma
10.4.1.2. Redefinición
10.4.1.2.1. Reemplaza la implementación de la superclase
10.4.2. Métodos que no se pueden redefinir
10.4.2.1. finales
10.4.2.2. estáticos
10.4.3. Métodos que se deben redefinir
10.4.3.1. Métodos declarados abstractos en la superclase
10.5. Constructores en Clases Extendidas
10.5.1. Al crear un objeto, el orden de ejecución es:
10.5.1.1. 1. Invocar constructor de la superclase
10.5.1.2. 2. Inicializar los capos
10.5.1.3. 3. Ejecutar el cuerpo del constructor
10.5.2. Si se quiere usar un constructor especifico, invocar con "super (...)"
10.6. Modificador Final
10.6.1. Variable
10.6.1.1. No puede ser modificada
10.6.2. Método
10.6.2.1. No puede ser redefinido
10.6.3. Clase
10.6.3.1. No se puede derivar
10.7. Clase Object
10.7.1. Todas las clase tienen a Object como raíz
10.7.1.1. Todos heredan sus métodos
10.7.2. Existen dos Tipos de Métodos
10.7.2.1. Utilidad General
10.7.2.1.1. public
10.7.2.1.2. protected Object clone() clone throws CloneNotSupportedException
10.7.2.2. Soportar Hebras
10.8. Métodos equals y hashCode
10.8.1. Redefinidos conjuntamente
10.9. Clonación de Objetos
10.9.1. El método permite clonar un objeto
10.9.2. Implementa la interfaz "Cloneable"
10.10. Clases y Métodos Abstractos
10.10.1. Definir clases que definen sólo parte de su implementación
10.10.2. Una clase abstracta no requiere declarar métodos abstractos
10.10.3. Una clase con método abstracto, debe ser declarada como clase abstracta
11. Interfaces y Clases
11.1. Interfaces
11.1.1. Interfaz vs Clase Abstracta
11.1.1.1. Interfaz es una simple lista de métodos abstractos
11.1.1.2. La interfaz no implementa ningún método, la clase abstracta si
11.1.1.3. Una clase puede implementar varias interfaces, pero solo una superclase
11.1.1.4. Interfaz no puede ser parte de una jerarquía de clases
11.1.2. Cuerpo de la Interfaz
11.1.2.1. Constantes implícitas
11.1.2.1.1. públicas
11.1.2.1.2. estáticas
11.1.2.1.3. finales
11.1.2.2. Métodos implícitos
11.1.2.2.1. públicos
11.1.2.2.2. abstractos
11.1.2.3. No se aceptan otros modificadores
11.1.2.3.1. private
11.1.2.3.2. protected
11.1.2.3.3. synchronized
11.1.3. Implementación
11.1.3.1. Define un conjunto de métodos
11.1.3.2. Una referencia a una interfaz permite suponer que los métodos existen
11.1.4. Herencia Simple vs Múltiple
11.1.4.1. Una clase puede extender solo una superclase
11.1.4.2. Una interfaz puede extender múltiples interfaces
11.1.4.3. Herencia múltiple con clases puede producir problemas
11.1.4.3.1. Diferentes implementaciones
11.1.5. Extensión
11.1.5.1. Al igual que las clases
11.1.5.1.1. Las interfaces pueden tener súper.interfaces
11.1.5.2. La interfaz hija, hereda las definiciones de la interfaz padre
11.1.5.3. Permite herencia múltiple
11.1.6. Interfaces comunes a implementar
11.1.6.1. java.util.Iterator
11.1.6.1.1. hasNext()
11.1.6.1.2. next()
11.1.6.1.3. remove()
11.1.6.2. java.util.Collection
11.1.6.2.1. add()
11.1.6.2.2. addAll(Collectio c)
11.1.6.2.3. clear()
11.1.6.2.4. contains()
11.1.6.3. java.lang,Comparable
11.1.6.3.1. compareTo(Object o)
11.1.6.4. java.lang.Cloneable
11.1.6.4.1. Vacia!
11.1.6.5. java.lang.Runnable
11.1.6.5.1. run()
11.1.6.6. java.awt.event.ActionListener
11.1.6.6.1. actionPerformed(ActionEvent e)
11.2. Packages
11.2.1. Contiene
11.2.1.1. Clases
11.2.1.2. Interfaces
11.2.1.3. Subpaquetes
11.2.2. Todos ellos relacionados
11.2.3. Mecanismo de Definición
11.2.3.1. En la primera línea de cada archivo fuente
11.2.3.1.1. Aparece
11.2.3.2. El nombre del paquete se antepone implícitamente a los nombres de
11.2.3.2.1. Clase
11.2.3.2.2. Interfaz
11.2.4. Referencias Externas
11.2.4.1. 1. Anteponer el nombre del paquete a cada tipo
11.2.4.2. 2. Mediante el "import"
11.2.5. Colisiones de Nombre entre Paquete
11.2.5.1. Si dos paquetes tienen el mismo nombre y requieren ser usados
11.2.5.2. Una solución es usar nombres anidados
11.2.5.2.1. proyecto.paquete.*
11.2.5.3. Usar el nombre de dominio de Internet de forma inversa
11.2.5.3.1. ec.edu.ucuenca.paquete.*
11.2.6. Control de Acceso
11.2.6.1. Clases e Interfaces
11.2.6.1.1. Público
11.2.6.1.2. Paquete
11.2.7. Paquetes y Directorios
11.2.7.1. Los nombres de paquete condicionan donde buscar las clases
11.2.7.2. Su jerarquía debe ser similar a la de los directorios
11.2.8. Paquetes de Java (java. )
11.2.8.1. .lang
11.2.8.2. .io
11.2.8.3. .util
11.2.8.4. .math
11.2.8.5. .awt
11.2.8.6. .net
11.2.8.7. .rmi
11.2.8.8. .applet
11.2.8.9. .sql
11.2.8.10. .beans
11.2.8.11. .security
11.2.9. Extensiones a Java (javax. )
11.2.9.1. .swing
11.2.9.2. .servlet
11.2.9.3. .crypto
11.2.9.4. .accessibility
11.2.9.5. .naming
11.2.9.6. .transaction
11.2.9.7. .xml
11.2.9.8. .sound
11.2.9.9. .print
12. Manejo de Excepciones
12.1. Excepción corresponde a una interrupción de la ejecución
12.2. Si ocurre el evento, se lanza un throw
12.2.1. Se crea un objeto especial y se pasa al runtime
12.3. runtime, busca la excepción del tipo
12.4. Si se encuentra, invoca al manejador de errores
12.4.1. catch
12.5. Si no encuentra, termina el programa
12.6. Jerarquía
12.6.1. Deriva de la clase "Throwable"
12.6.2. Dos subclases
12.6.2.1. Error
12.6.2.1.1. Error interno irrecuperable
12.6.2.2. Exception
12.6.2.2.1. Situación excepcional
12.6.2.2.2. RuntimeException
12.6.2.2.3. IOException
12.7. Tipo de Excepciones
12.7.1. No Verificadas
12.7.1.1. Derivadas de la clase Error y RuntimeException
12.7.2. Verificadas
12.7.2.1. Otras clases de excepciones
12.8. Cláusula finally
12.8.1. Se ejecuta haya o no excepción antes de retornar
13. Conceptos Basicos
13.1. Conjunto de Caracteres
13.1.1. Java utiliza Unicode
13.1.1.1. Conjunto de caracteres de 16 bits
13.1.2. Permite leer ASCII de 7 -bit
13.1.2.1. Latin-1
13.1.2.1.1. Convirtiéndolo a Unicode
13.1.3. Uno de los pocos editores que soporta Unicode
13.2. Identificadores
13.2.1. Deben comenzar:
13.2.1.1. Una letra
13.2.1.1.1. Incluido "_ " o "$"
13.2.2. Diferencia mayúscula de minúscula
13.2.3. Definidas algunas palabras reservadas
13.2.3.1. No pueden ser usadas como identificadores
13.3. Variables, Constantes y Datos Primitivos
13.3.1. Variable
13.3.1.1. Item de datos nombrados por identificador
13.3.1.2. Tiene un tipo
13.3.1.2.1. Debe ser declarado antes de usar
13.3.1.3. Definido por una visibilidad
13.3.2. Tipo de Datos
13.3.2.1. Posibles valores para una variable
13.3.2.2. Java define dos tipos de datos
13.3.2.2.1. Primitivos
13.3.2.2.2. Referencias
13.3.3. Declaración de Variables
13.3.3.1. [modificador] tipo variable
13.3.3.2. Las declaraciones pueden aparecer en cualquier parte del código
13.3.3.3. La visibilidad se limita al bloque en donde se declara
13.4. Operadores
13.4.1. Precedencia de Operadores
13.4.1.1. Unario
13.4.1.1.1. Posfijo
13.4.1.1.2. Prefijo
13.4.1.2. Creación y cast
13.4.1.2.1. new (tipo)
13.4.1.3. Multiplicativo
13.4.1.3.1. * / %
13.4.1.4. Aditivo
13.4.1.4.1. + -
13.4.1.5. Shift
13.4.1.5.1. <<
13.4.1.5.2. >>
13.4.1.5.3. >>>
13.4.1.6. Relacional
13.4.1.6.1. < > >= <= instanceof
13.4.1.7. Igualdad
13.4.1.7.1. == !=
13.4.1.8. AND
13.4.1.8.1. al bit
13.4.1.8.2. lógico
13.4.1.9. OR
13.4.1.9.1. exclusivo al bit
13.4.1.9.2. inclusivo al bit
13.4.1.9.3. lógico
13.4.1.10. Condicional
13.4.1.10.1. ?:
13.4.1.11. Asignación
13.4.1.11.1. =
13.4.1.11.2. /=
13.4.1.11.3. >>>=
13.4.2. Expresiones
13.4.2.1. Se evalúa de izquierda a derecha
13.4.2.2. Cada operando se evalúa antes de realizar la operación
13.4.2.3. Cada expresión tiene un tipo
13.4.3. Conversión de Tipo
13.4.3.1. Implícita
13.4.3.1.1. Es automática
13.4.3.2. Explícita
13.4.3.2.1. Cuando un tipo no se puede asignar a otro por conversión implicita
13.4.3.2.2. Se denomina "cast"
13.4.3.2.3. "instanceof" permite verificar si se puede aplicar "cast"
13.4.4. Operadores
13.4.4.1. Operadores Aritméticos
13.4.4.1.1. Soporta para todo los tipos de números
13.4.4.1.2. Cambio de signo
13.4.4.2. Incremento
13.4.4.2.1. a++
13.4.4.3. Decremento
13.4.4.3.1. a--
13.4.4.4. Relacionales
13.4.4.4.1. Mayor que
13.4.4.4.2. Menor que
13.4.4.4.3. Mayor o igual que
13.4.4.4.4. Menor o igual que
13.4.4.4.5. Igual que
13.4.4.4.6. Diferente
13.4.4.5. Condicionales
13.4.4.5.1. La forma
13.4.4.5.2. El operador condicional
13.4.4.6. Asignación
13.4.4.6.1. El operador "=" corresponde a la asignación
13.4.4.6.2. Java soporta otras formas de asignación
13.5. Control de Flujo
13.5.1. Sentencias y Bloques
13.5.1.1. Un bloque se compone de
13.5.1.1.1. Sentencias de Expresión
13.5.1.1.2. Sentencias de Declaración
13.5.1.2. Toda sentencia termina con ";"
13.5.1.3. Un bloque se forma con {....}
13.5.2. Sentencia if-else
13.5.2.1. Forma básica de flujo de control condicional
13.5.2.2. El "else" se parea con el if mas cercano
13.5.3. Sentencia switch
13.5.3.1. Evalúa una expresión entera
13.5.3.1.1. Selecciona un caso mediante etiqueta
13.5.3.1.2. Si no encuentra etiqueta se salta a un default
13.5.3.1.3. Si no existe default, no se hace nada
13.5.4. Sentencia while y do-while
13.5.4.1. Repetición controlada por expresión booleana
13.5.4.1.1. while(exp-booleana) { sentencia }
13.5.4.1.2. do { sentencia} while(esp-booleana) ;
13.5.5. Sentencia for
13.5.5.1. Controla repeticiones para un rango de valores
13.5.5.1.1. for(exp-inicial; exp-booleana; exp-incremento) { sentencia }
13.5.6. Sentencias
13.5.6.1. break
13.5.6.1.1. Permite salir desde cualquier bloque
13.5.6.1.2. Se usa para terminar una repetición
13.5.6.1.3. Se puede usar una etiqueta para salir de bloques anidados
13.5.6.2. continue
13.5.6.2.1. Permite saltar al final de una repetición
13.5.6.2.2. Evalúa la condición de término
13.5.6.2.3. Usada para ignorar un elemento de proceso
13.5.6.3. return
13.5.6.3.1. Permite terminar la ejecución de un método
13.5.6.3.2. Retorna al invocador
14. Clase y Objetos
14.1. Conceptos Generales
14.1.1. Las clases contienen los métodos que definen la computación
14.1.2. Los campos o variables miembros definen el estado
14.1.3. Las clases proveen
14.1.3.1. Estructura para los objetos
14.1.3.2. Mecanismos para su creación
14.1.4. Un método tiene una firma
14.1.4.1. Pero su implementación define su semántica
14.2. Estructura de una Clase
14.2.1. Nombre de la clase
14.2.1.1. public class Nombre{
14.2.2. Variable y Control de Acceso del miembro
14.2.2.1. private int ID;
14.2.3. Constructor
14.2.3.1. public Nombre(int id) { ID=id;}
14.2.4. Firma del Método
14.2.4.1. public String miName(int id) { .....}
14.3. Modificadores de la Clase
14.3.1. public
14.3.2. abstract
14.3.2.1. No puede ser instanciada
14.3.3. final
14.3.3.1. No puede ser derivada
14.4. Variables Miembros
14.4.1. Cada objeto de una clase tiene sus propias instancias
14.4.1.1. Cada objeto tiene su propio estado
14.4.1.2. Cambio de estado en un objeto no afecta a otros objetos similares
14.4.2. Variables y métodos miembros
14.4.2.1. No estáticos
14.5. Control de Acceso a Miembros
14.5.1. Todos los métodos y variables miembro están disponibles para el código de la propia clase
14.5.2. 4 posibles modificadores
14.5.2.1. Privado
14.5.2.1.1. private
14.5.2.2. Paquete
14.5.2.2.1. Miembros sin modificador
14.5.2.3. Protegido
14.5.2.3.1. protected
14.5.2.4. Público
14.5.2.4.1. public
14.6. Creación de Objetos
14.6.1. Persona p=new Persona("Pedro) ;
14.6.1.1. No crea un objeto, sino una referencia a un objeto
14.6.1.1.1. Inicialmente es null
14.6.1.2. Al usar el "new"
14.6.1.2.1. "runtime" crea un objeto asignado a suficiente memoria
14.6.1.2.2. Inicia liza el objeto con algún constructor
14.6.1.3. Si no existe memoria suficiente, ejecuta el recolector de basura
14.6.1.3.1. Si aun no hay suficiente memoria, lanza la excepción "OutOfMemoryError"
14.6.1.4. Terminada la inicialización
14.6.1.4.1. runtime retorna referencia al nuevo objeto
14.7. Constructores
14.7.1. Un objeto recién creado debe inicializar las variables miembro
14.7.2. Las variables miembro pueden ser inicializadas explícitamente en la declaración
14.7.3. Los constructores cumplen con ese objetivo
14.7.3.1. Tienen el mismo nombre de la clase y pueden recibir parámetros
14.7.4. No son métodos, no retornan un valor
14.7.5. Una clase puede tener varios constructores
14.7.6. Razones para usar Constructores
14.7.6.1. Algunas clases no tienen un estado inicial razonable
14.7.6.2. Construir un objeto puede ser costoso
14.7.6.3. Motivos de seguridad de acceso
14.7.6.4. Si no se define un constructor, el compilador agrega uno
14.7.7. Control de Acceso de Constructores
14.7.7.1. private
14.7.7.1.1. Ninguna otra clase puede instanciarla
14.7.7.2. protected
14.7.7.2.1. Solo subclases y clases del mismo paquete puede crear instancias
14.7.7.3. public
14.7.7.3.1. Cualquier clase puede crear una instancia
14.7.7.4. Sin Especificador
14.7.7.4.1. Acceso de paquete
14.7.7.4.2. Solo clases del mismo paquete y la misma clase puede crear instancias
14.7.8. Constructor por Omisión
14.7.8.1. Si no se define un constructor
14.7.8.1.1. Asume un constructor sin argumentos
14.7.8.1.2. No hace nada
14.7.8.2. Se asume que existe, si no se ha definido un constructor sin argumentos
14.7.8.3. Es público si la clase lo es, caso contrario, no lo es
14.8. Métodos
14.8.1. Utilizado para manipular el estado del objeto
14.8.2. Java no permite un número variable de argumentos
14.8.3. Valores de Parámetros
14.8.3.1. Todos los parámetros se pasan por valor
14.8.3.1.1. Primitivos
14.8.3.1.2. Referencia
14.8.3.2. Si es parámetro es una referencia
14.8.3.2.1. Se va la copia y no el objeto
14.8.4. Control de Acceso
14.8.4.1. private
14.8.4.1.1. Para proteger campos de un acceso externo
14.8.4.2. Java no provee un modificador de solo lectura de campo
14.8.4.3. accesor
14.8.4.3.1. Para asegurar acceso de sólo lectura
14.8.4.3.2. Método que l hace indirectamente y de forma segura
14.8.5. Referencia this
14.8.5.1. Solo se puede usar en un método no estático
14.8.5.2. Hace referencia al objeto actual sobre el que se invoco el método
14.8.5.3. Se usa implícitamente al comienzo de cada miembro
14.8.5.4. Usos
14.8.5.4.1. Usualmente para pasar una referencia del objeto actual
14.8.5.4.2. Cuando existe oculta miento de un identificador debido a colisiones de nombre
14.8.5.4.3. Tener acceso a miembros ocultos de una superclase
14.8.6. Sobrecarga de Métodos
14.8.6.1. Cada método tiene una firma
14.8.6.1.1. Nombre del método
14.8.6.1.2. Número de tipos de parámetros
14.8.6.1.3. Tipo de retorno
14.8.6.2. Java permite varios métodos con mismo nombre
14.8.6.2.1. Pero debe tener diferentes parámetros
14.8.6.3. Al invocar un método sobrecargado
14.8.6.3.1. Se calza con los parámetros usados
14.8.7. Miembros Estáticos
14.8.7.1. Es único para toda una clase
14.8.7.2. Variable Miembro Estática
14.8.7.2.1. Existe una única variable para todos los objetos de la clase
14.8.7.3. Método Estático
14.8.7.3.1. Se invoca en nombre de toda la clase
14.8.8. Recolección de Basura
14.8.8.1. Java realiza recolección automática de basura
14.8.8.2. Solo existe new
14.8.8.3. Objeto que se detecta sin referencia
14.8.8.3.1. El sistema lo libera
14.8.9. Métodos
14.8.9.1. finalize
14.8.9.1.1. Permite ejecutar un método de finalización antes de liberar memoria
14.8.9.2. main
14.8.9.2.1. Se debe encontrar en cada aplicación de Java
14.8.9.2.2. Debe ser público, estático y void
14.8.9.3. toString
14.8.9.3.1. Si un objeto soporta el método
14.8.9.4. Nativos
14.8.9.4.1. Permite que programas Java usen código no escrito en Java
14.8.9.4.2. Aplicada para manipular hardware
14.8.10. Clases Anidadas
14.8.10.1. Definir una clase como miembro de otra clase
14.8.10.2. La clase anidad tiene acceso a todos los miembros de la clase que pertenece
14.8.11. Clases Internas
14.8.11.1. Si una clase se declara estática
14.8.11.1.1. Se llama clase anidad estatica
14.8.11.1.2. Si no es estática, es una clase anidada
15. Caracteres, String y Otros Tipos de Datos
15.1. Arreglos
15.1.1. Son agrupaciones ordenadas de elementos
15.1.1.1. Tipos Primitivos
15.1.1.2. Referencias
15.1.2. Las dimensiones se omiten en la declaración de varaibles
15.1.3. Los indices varían desde 0 a largo-1
15.1.4. No se pueden derivar
15.1.5. Uso de Arreglos
15.1.5.1. Declaración sin tamaño
15.1.5.1.1. tipo[] variable;
15.1.5.2. Creación de una arreglo vacío
15.1.5.2.1. variable= new tipo[tamaño];
15.1.5.3. Creación e inicialización
15.1.5.3.1. tipo [] variable={val1, val2, val3, ... , valn}
15.1.5.4. Acceso a un elemento
15.1.5.4.1. variable[indice]
15.1.5.5. Tamaño del arreglo
15.1.5.5.1. variable.lenght()
15.1.5.5.2. variable.lenght()
15.1.6. Copiado
15.1.6.1. Se puede hacer uso del método "arraycopy" de System
15.1.6.1.1. public static void arraycopy( ....... )
15.2. Caracteres y String
15.2.1. Clases Básicas para Caracteres
15.2.1.1. Character
15.2.1.1.1. Puede mantener un único valor
15.2.1.2. String
15.2.1.2.1. Almacena y manipula datos mutables
15.2.1.2.2. Múltiples caracteres
15.2.1.3. StringBuffer
15.2.1.3.1. Almacena y manipula datos mutables
15.2.1.3.2. Múltiples caracteres
15.2.2. Métodos
15.2.2.1. Character(char)
15.2.2.1.1. Constructor que crea un objeto inmutable
15.2.2.2. int comparateTo(Character)
15.2.2.2.1. Retorna entero que compara con otro carácter
15.2.2.3. boolean equals(Object)
15.2.2.3.1. Retorna true si son de igual valor
15.2.2.4. String toString()
15.2.2.4.1. Convierte a String
15.2.2.5. char charValue()
15.2.2.5.1. Retorna el valor del objeto
15.2.2.6. isUpperCase(char)
15.2.2.6.1. Retorna true si es mayúscula
15.3. Número
15.3.1. Clase Number
15.3.1.1. Retornan los valores de los números especificados
15.3.1.1.1. byte byteValue()
15.3.1.1.2. double doubleValue()
15.3.1.1.3. float floatValue()
15.3.1.1.4. int intValue()
15.3.1.1.5. long longValue()
15.3.1.1.6. short shortValue()
15.3.1.2. Clases Extendidas
15.3.1.2.1. Clases envolventes para
15.4. Date
15.4.1. Manejo de fecha/hora
15.4.2. Clase Utilitaria
15.4.2.1. java.util.Calendar
15.4.2.2. java.text.DateFormat
16. Streams y Archivos
16.1. Streams Básicos
16.1.1. Bytes y Caracteres
16.1.1.1. bytes: E/S
16.1.1.1.1. InputStream
16.1.1.1.2. OutputStream
16.1.1.2. carácter: Unicode
16.1.1.2.1. Reader
16.1.1.2.2. Writer
16.2. Archivos
16.2.1. Clases Básicas
16.2.1.1. FileReader
16.2.1.1.1. Lectura de Caracteres
16.2.1.2. FileWriter
16.2.1.2.1. Escritura de Caracteres
16.2.1.3. FileInputStream
16.2.1.3.1. Lectura de bytes
16.2.1.4. FileOutputStream
16.2.1.4.1. Escritura de bytes
16.2.2. Clase File
16.2.2.1. No corresponde a un stream
16.2.2.2. Hereda de Object
16.2.2.3. Definido en el paquete java.io
16.2.3. Clase RandomAccessFile
16.2.3.1. int skipBytes(iny)
16.2.3.1.1. Mueve el puntero el # de bytes hacia adelante
16.2.3.2. void seek(long)
16.2.3.2.1. Posiciona el puntero antes del byte especificado
16.2.3.3. long getFilePointer()
16.2.3.3.1. Retorna la posición del puntero