Java Programming 1-100 ESP
Java Programming 1-100 ESP
Java está bien establecido como uno de los principales lenguajes de programación
del mundo , utilizado en todo, desde aplicaciones de escritorio hasta
aplicaciones alojadas en la web y sistemas empresariales, e integrado en
dispositivos como teléfonos móviles y reproductores de Blu-ray. Su máquina
virtual (una característica central de la plataforma de ejecución de Java, que
exploraremos más adelante) también admite una familia de lenguajes
relacionados, incluidos Scala, Groovy y versiones especializadas de Ruby y
Python. Sin embargo, sus comienzos fueron relativamente humildes y oscuro,
hasta él vino a Atención más amplia a través de el Web en 1995. En un año se
había convertido en " la próxima gran novedad ". en software. Interés en el
lenguaje era bastante notable, en vista de eso él solo existió en beta prueba En
muchos sentidos, se trataba de ser el producto adecuado en el momento adecuado,
y su popularidad se basó en la explosión de interés por Internet y la World Wide
Web a mediados de los años 90.
• Simple
• Orientado a objetos
• Repartido
• Robusto
• Seguro
• Neutral en cuanto a la arquitectura
• Portátil
• De alto rendimiento
• Multiproceso
• Dinámica
Tal vez sea un tributo al éxito de Java que muchas de estas características, que
eran de vanguardia en ese momento, ahora son requisitos de facto para muchos
programas. idiomas. Qué Sigue es a breve describir de cada de estos
características.
1.2 Characteristics of 3
Java
1.2.1 Simple
Nadie quiere programar en un lenguaje que haga la vida más difícil de lo que ya
es. James Gosling dijo que Java es “ C++ sin cuchillos, pistolas ni garrotes ” . C+
+, el lenguaje desarrollado por BjarneStroustrup en los años 80 como una
extensión orientada a objetos del lenguaje de programación C, es muy popular y
potente. pero tiene muchos características eso, como armas, son muy peligroso en
el Manos equivocadas (quizás cualquier mano). Java tiene mucho en común con
C++, pero una buena parte de brazos limitación tiene estado aplicado. Uno
importante Simplificación en Java es el forma Esa memoria se gestiona mediante
procesos en gran medida automáticos en lugar de requerir que el programador lo
haga. ¡Sin embargo, la simplicidad es un término relativo!
1.2.3 Repartido
1.2.5 Seguro
1.2.7 Portátil
Java virtual
machine
Java Java Java
source compiler byte Java virtual
code code machine
Java virtual
machine
Higo. 1.1 El Java virtual máquina permite el mismo byte código a ser correr en diferente
plataformas y sistemas operativos
1.2 Characteristics of 7
Java
1.2.8 alto rendimiento
Ejecución velocidad poder ser a potencial problema para Java. Porque el byte
código tiene a ser interpretado, Java programas generalmente correr más despacio
que equivalente programas escrito en idiomas eso son Compilado. A superar este
problema, varios estrategias tener Se han adoptado. Se han desarrollado
compiladores Just-in-time (JIT) que aceleran la interpretación proceso, y " nativo
" compiladores tener también estado escrito. En otro palabras, La neutralidad de la
arquitectura es sacrificado en orden correr Los programas Más rápidamente. A
compilador nativo produce un ejecutable eso solo obras en a específico tipo de
máquina. Esto puede ser útil para desarrolladores OMS desear a sistema eso
compila y corre rápidamente para fines de prueba o que saben exactamente dónde
se implementarán sus programas. Lo mismo fuente código poder siempre ser
recompilado en portátil byte código usando a Java normal compilador si es
necesario. Otro desarrollo era el " Java Chip " a hardware máquina virtual (a
levemente menos virtual máquina tal vez) construido en a chip. Este es mucho Más
rápido que correr byte código con software, y Java papas fritas poder ser
incorporado en todo tipos de dispositivos electrónicos. Se está trabajando en la mejora
de los compiladores de Java, aunque gran parte de la optimización del código la
realiza la máquina virtual en lugar del compilador.
1.2.9 Multiproceso
Desde muchos sistemas operativos permitir multiproceso (dónde más Más de uno
El proceso puede estar en marcha en cualquier momento), por lo que resulta útil
que un lenguaje pueda aprovechar esta característica. Al incorporar una sintaxis
para subprocesos múltiples en el lenguaje, Java facilita a los programadores la
escritura de programas multiproceso que son más eficientes que los de un solo
subproceso. programas (dónde solo uno cosa poder ser acontecimiento en
cualquier uno Incluso cuando el sistema operativo en sí no es multiproceso, se
puede escribir código Java que utilice múltiples subprocesos de control.
1.2.10 Dinámica
Java apareció por primera vez para el consumo público como versión 1.0 en 1995.
Hubo varias modificaciones menores antes de su primera revisión importante a
Java 1.1 en 1996. Quizás el cambio más significativo entre estas dos versiones fue
el mecanismo de manejo de eventos para las interfaces de usuario. Los eventos
son típicamente cosas que el usuario hace semejante como prensado a botón con el
ratón o Seleccionando un artículo de a menú y el forma este era manejado en
versión 1.0 era muy en flexible , entonces importante Se realizaron mejoras con
la versión 1.1. Java 1.2 (introducida en 1998) realizó cambios más significativos,
incluida la introducción del marco de colecciones (una biblioteca de objetos).
basado en datos estructuras eso poder contener otro objetos), y el original La
biblioteca de interfaz de usuario, Abstract Windowing Toolkit (AWT), se
convirtió en parte de la Más grande y más poderoso Java Base Clases, incluido el
Balancearse Bibliotecas GUI. En este punto, Java también se dividió en tres
ediciones (como se describe a continuación). sección). Versión 1.3 en 2000
principalmente enfocado en actualizaciones a existente Java no solo agregó
muchas características nuevas, sino que también mejoró considerablemente el
soporte de sonido. La versión 1.4 de 2002 se centró principalmente en mejoras de
rendimiento y seguridad, pero también introdujo soporte para procesamiento
XML, las bibliotecas NIO (nueva entrada/salida) para un manejo más eficiente de
IO, incluida la comunicación por socket de red, y mejoras en muchas otras
bibliotecas existentes.
La versión 5.0 de Java en 2004 fue una importante actualización de Java,
introduciendo varias características importantes nuevo características. En este
punto, el versión numeración también cambió en estilo, así que eso en suma a el
interno versión número (versión 1.5) allá era un versión externa número, 5.0.
Cínicos Podría argumentar que el momento y el contenido de Esta actualización
de Java fue una consecuencia de la introducción por parte de Microsoft de su
nuevo lenguaje C#, que también tenía a número de estos nuevo características. Sin
embargo, muchos de a ellos, semejante como Se han desarrollado genéricos (que
permiten especificar el tipo de objetos de una colección). en el fondo para alguno
años. En suma a genéricos, importante Las nuevas características de Java 5
incluyen anotaciones, que facilitan el trabajo con aplicaciones. marcos semejante
como el JUnit prueba estructura, y autoboxeo, cual facilita la colocación de tipos
de datos simples en una colección Java. Java 6 (2007) vio algunas características
del lenguaje que habían estado previamente disponibles como bibliotecas externas,
como servicios web y Java a XML Binding, integradas en la distribución estándar
de Java. La actualización 10 de Java 6 fue una actualización importante en
términos de cambios en el JRE, lo que hizo mucho más fácil distribuir
8 1 The Java
Story
aplicaciones Java al reducir la huella mínima del JRE implementado.
1.3 The JDK and the 9
JRE
Java pasó a ser de código abierto en 2006, lo que supuso un cambio
significativo en el enfoque de Sun Microsystems, que hasta ese momento había
tenido el control total sobre el desarrollo del lenguaje Java. Otro cambio
significativo se produjo en 2010, cuando Sol Microsistemas era adquirido por
Oráculo Corporación. El primero La versión principal de Java entregada bajo la
propiedad de Oracle fue la versión 7 en 2011, aunque varias características
originalmente planificado para Java 7 eran eventualmente diferido hasta Java 8.
Paralelamente a la versión Oracle de Java, la Comunidad OpenJDK también puso
a disposición su versión de Java 7.
Java 8 fue una actualización bastante importante del lenguaje Java,
particularmente en su respuesta a la creciente popularidad de la programación
funcional con la introducción de expresiones lambda. Este estilo de programación
también fue la base de algunas ideas interesantes. actualizaciones a el fecha y
tiempo Asignación de funciones. Oráculo introducido Largo Término Soporte
(LTS) para Java 8, cual quiso decir eso muchos Organizaciones permaneció
usando Java 8 para a lo largo de tiempo (LTS apoyo dura 8 años) en cambio de
Actualizando a cada nuevo lanzamiento posterior, particularmente porque el
cronograma de lanzamiento cambió significativamente después del lanzamiento de
Java 9.
Quizás el principal cambio que llegó con Java 9 en 2017 fue la introducción de
módulos (Proyecto Jigsaw), un cambio importante en la forma en que los sistemas
grandes podían modularizarse. Este es particularmente útil cuando añadiendo
características de más nuevo versiones de Java a sistemas heredados.
Cambios en Java 10 (Marzo 2018) eran principalmente detrás el escenas
mejoras a el plataforma, y impactado pequeño en en el codificación nivel, pero
tipo inferencia para Las variables locales permitieron algunos nuevos estilos de
codificación. Sin embargo, la introducción de la variable “ var ” palabra clave a
Opcionalmente reemplazar el declarado datos tipo de local variables hizo no
implica eso cualquier subyacente cambios eran ser hecho a el tipo sistema. De A
partir de Java 10, el cronograma de lanzamiento cambió de modo que en lugar de
tener lanzamientos importantes cada pocos años, con punto liberar actualizaciones
en entre, Oráculo Java versiones seria liberado cada 6 meses (en Marzo y
Septiembre cada año), con LTS Versiones cada 3 años. Las actualizaciones del
Open JDK suelen realizarse cada 6 meses.
Java 11, una LTS lanzada en septiembre de 2018, fue quizás la más notable por
sus cambios. en basado en la web programación, con el introducción de el Cliente
HTTP y La eliminación de las antiguas funciones Applet y Web Start que ya no
eran componentes web viables. pendiente a seguridad asuntos. Aquellos regiones
de el Java Empresa Edición (Java EE) que habían estado incluidos con el JDK
durante algún tiempo también fueron eliminados.
Java 12 (marzo de 2019) introdujo una versión preliminar de una expresión “
switch ” , que proporciona una alternativa a la expresión “ switch ” existente.
Declaración. Las características de vista previa se introdujeron en Java para
provocar comentarios de los desarrolladores basados en el uso en el mundo real.
Estos comentarios pueden hacer que se vuelva permanente en una futura versión
de Java SE Platform o que se elimine. Casi al mismo tiempo que se lanzó Java 12,
Oracle cambió sus acuerdos de licencia y requirió que algunos tipos de usuarios
pagaran una tarifa de suscripción para usar la versión de Oracle de Java. Sin
embargo, Oracle Java sigue siendo gratuito para fines de desarrollo y OpenJDK
continúa brindando una opción de código abierto gratuita.
1 1 The Java
0 Story
Para Java 13 (septiembre de 2019), quizás el cambio más obvio desde un punto
de vista de programación perspectiva era a avance de Texto Bloques, cual permite
multiline instrumentos de cuerda
1.3 The JDK and the 1
JRE 1
Sin caracteres de escape. También se revisó la expresión switch, actualizando los
cambios de la vista previa en Java 12. En segundo plano, el recolector de basura y
las API de Socket recibieron actualizaciones significativas en sus
implementaciones.
Java 14 (marzo de 2020) incorporó algunos caracteres de escape adicionales a
la vista previa de los bloques de texto, confirmó la sintaxis de la expresión switch
e introdujo un mensaje NullPointerException más informativo, entre otras cosas.
Quizás lo más interesante Nueva característica era un avance de “ registros ” Lo
que simplifica la Creación de clases que solo contienen campos de datos a través
de la clase java.lang.Record. Un registro se encarga automáticamente de los
métodos estándar, como constructores, descriptores de acceso, “ equals ” , “
hashCode ” y “ toString ” .
Java 15 (Septiembre 2020) principalmente enfocado en mejoras a alguno
implementaciones subyacentes, pero también incluido a segundo avance de
cambios a el Operador “ instanceof ” , que facilita la prueba del tipo de un objeto
en el contexto de expresiones más grandes, así como bloques de texto que salen
del modo de vista previa al estado permanente.
Todo el código de este libro se ha probado con Oracle Java versión 14. Algunos
de los ejemplos más sencillos seguirán funcionando con versiones mucho más
anteriores. Sin embargo, en el texto se indica que los ejemplos de sintaxis
dependen de una versión mínima de Java para ejecutarse.
Además de la sintaxis básica de Java, que consta de las palabras clave básicas y
algunas expresiones fundamentales, bibliotecas, allá son también muchos Java
solicitud programación interfaces (API). Estos proporcionar bibliotecas a permitir
el desarrollo de especializado aplicaciones como programación de Internet e
interfaces de cliente enriquecidas (usando Swing o Java FX). Algunas de el más
especializado bibliotecas (a menudo conocido como el Java extensiones) son No
se proporciona con la edición estándar del JDK. En la introducción del JDK 1.2 en
1998, Sun clasificó las tecnologías Java dentro de la “ Plataforma Java 2 ” ,
organizando la gran cantidad de nuevas características que se estaban
introduciendo al proporcionar diferentes versiones para diferentes tipos de
aplicaciones : Java 2 Standard Edition (J2SE), Java 2 Micro Edition (J2ME) y
Java 2 Enterprise Edition (J2EE). En este punto, el “ JDK ” El prefijo para el Kit
de desarrollo de Java fue eliminado en favor de “ J2SE ” . Con el lanzamiento de
la versión 5 en 2004, el “ 2 ” se abandonó y estas ediciones se conocieron
entonces como Java Estándar Edición, (Java ES), Java Empresa Edición (Java
EE.UU.), y Java Micro Edition (Java ME). Todas las bibliotecas básicas, junto con
las bibliotecas necesarias para el desarrollo de aplicaciones de escritorio, se
encuentran en la edición estándar (Java SE), la versión que utilizamos en este
libro. Las que se aplican específicamente a dispositivos pequeños o integrados y a
la Internet de las cosas se proporcionan con Java Micro Edition (Java ME),
mientras que las que se relacionan con la programación cliente-servidor (servlets,
JavaServer Páginas, Empresa Los JavaBeans, etc.) son parte de el Java Empresa
Edición (Java EE.UU.), cual convertirse Jacarta Empresa Edición (Yakarta)
EE.UU.) en 2018. Mayoría de
1 1 The Java
2 Story
Estas bibliotecas están más allá del alcance de este libro, pero proporcionan
muchas funciones de programación potentes para varios tipos de aplicaciones de
software.
1.5 Resumen
Java es a Lenguaje maduro y popular eso es utilizado en todo el mundo para Todo
tipo de aplicaciones. A programa exitosamente en Java, nosotros necesidad
a Entender la orientación a objetos conceptos y entonces aplicar a ellos a Java
objetos, cual tener su peculiaridades propias. Sin embargo, vale la pena el esfuerzo
porque Java puede ser más gratificante que cualquier otro programación idioma.
Es rico sintaxis y De amplio alcance API significa que se puede utilizar para todo
tipo de programación, desde escribir una utilidad de línea de comandos hasta
construir un sistema cliente-servidor distribuido o un sistema multiproceso
complejo en tiempo real. sistema. Después el inicial bombo publicitario
circundante Java tenía fallecido lejos, él maduró en a importante programación
idioma secundario a enorme software industria. Aunque hasta cierto punto Java se
está convirtiendo en un lenguaje heredado, sin duda seguirá evolucionando y
brindando a los programadores las herramientas para codificar una gran cantidad
de aplicaciones en todo tipo de contextos durante muchos años más. Incluso si
Java finalmente se desvanece lejos como a programación idioma, es influencia es
semejante eso El conocimiento de Java puede ser extremadamente útil para
aprender las nuevas generaciones de lenguajes que lo han seguido.
Compilando y Correr Java Programas
2
Antes de poder ejecutar cualquiera de las herramientas del JDK desde el símbolo
del sistema, debe asegurarse de que la variable de entorno " path " incluya la
carpeta " bin " del JDK , donde residen los programas que necesita, incluidos "
javac " y " java " . En los sistemas Windows, la ubicación de instalación
predeterminada para Oracle JDK “ bin ” La carpeta suele ser algo como ( pero no
exactamente ):
Como casi cualquier otro programa de ejemplo inicial, nuestra primera aplicación
Java simplemente muestra a mensaje en el pantalla. A pesar de él es muy básico,
él aún introduce varios importantes aspectos de Java código eso voluntad ser
explorado en detalle más tarde. Él muestra cómo escribir a clase en Java, usado
aquí simplemente como a programa entrada punto. Clases tener En Java, existen
otros roles, pero para ejecutar un programa, se necesita una clase que contenga un
método “ principal ” , como hacemos en este ejemplo. Un método es una
operación que la clase puede realizar. En el caso de el " principal " método, el
operación es a acto como a programa Punto de entrada. En este ejemplo, se utiliza
el método principal de otra clase de las bibliotecas de Java ( “ System ” ) para
imprimir un mensaje en la consola. Hay mucho más que aprender sobre las clases,
pero dejaremos estas discusiones para ejemplos posteriores.
El fuente código de nuestro primero solicitud (cual tú poder ingresar en
cualquier básico editor de texto) es
No se puede escribir ningún código Java que no pertenezca a una u otra clase.
Este particular clase es llamado “ MiProgramaJava ” pero el clase nombre es no
importante Aquí, está es algo decidido por el programador. El Nombramiento
convención para clase Los nombres son a veces llamado Pascal Caso , cual
simplemente medio eso el nombre comienza con una letra mayúscula, y cualquier
palabra incrustada (como “ Java ” y “ Programa ” en nuestro ejemplo) también
comienzan con una letra mayúscula. El “ público ” prefijo significa que la clase
poder ser visible a todo otras clases, incluso aquellos eso son no en el mismo
paquete
14 2 Compiling and Running Java
Programs
(un directorio o carpeta de archivos) y es como se declaran la mayoría de nuestras
clases. Si omitimos este prefijo, la clase solo será visible dentro de su propio
paquete. Por el momento, no estamos especificando en qué paquete se encuentra
esta clase, por lo que se colocará en el paquete predeterminado sin nombre (que de
hecho es la carpeta actual). Veremos los paquetes con más detalle en el siguiente
ejemplo.
El Mi programa Java clase debe ser salvado en a archivo llamado “
MyJavaProgram.java ” , preferiblemente con el mismo mezcla de superior y más
bajo caso letras. Vocación el archivo por Se requiere el mismo nombre que la
clase para las clases públicas y hace la vida mucho más fácil cuando queremos
encontrar una clase más adelante, ya que solo una clase pública puede aparecer en
un “ .java ”. archivo. Es esencial que la extensión del archivo sea “ .java ”.
porque lo requiere el compilador de Java (al menos lo requiere el compilador
Oracle JDK).
Nota
Al guardar el archivo, asegúrese de que el editor de texto que está utilizando
guarde el archivo en formato de texto simple, no en otro formato como el formato
de texto enriquecido (RTF), que es, por ejemplo, el tipo de archivo
predeterminado para WordPad de Windows. Asegúrese también de que el editor
no agregue otra extensión como “ txt ”. a su archivo, lo que hará el Bloc de
notas de Windows de manera predeterminada (para evitar esto si está usando el
Bloc de notas, coloque comillas alrededor del nombre del archivo cuando lo
ingrese en el cuadro de diálogo " Guardar como " ) .
El cuerpo de la clase (el código que contiene) está rodeado por llaves (llaves {}
). Todo lo que está entre las llaves de apertura y cierre pertenece a esa clase. Esto
se conoce como ámbito ; la clase contiene todo lo que cae dentro de su ámbito. (es
decir aparece entre el dos tirantes). En este ejemplo, el solo cosa eso es En el
ámbito de la clase hay un método llamado “ main ” . El método “ main ” es un
método especial que permite que una clase actúe como punto de entrada a un
programa.
Dado que este programa solo genera una única línea de texto, esto no haría
ninguna diferencia en este ejemplo.
C:\>javac
Usage: javac <options> <source files>
where possible options include:
-g Generate all debugging info
-g:none Generate no debugging info
-g:{lines,vars,source} Generate only some debugging info
javac MiProgramaJava.java
Una vez el clase tiene estado compilado, puede ser correr en el virtual máquina usando "
Java
clase nombre ” , en este caso:
2.4 Correr Java 17
xxx.clase Byte
código
Java xxx
Byte Ejecutable
código código
18 2 Compiling and Running Java
Higo. 2.1 El secuencia de compilando y correr Java código
Programs
18 2 Compiling and Running Java
Programs
• De el Código fuente carpeta en a dominio ventana, compilar el clase usando el
“ javac ” compilador.
• Si es necesario, corrija cualquier error y continúe compilando y editando su
código hasta que se compile correctamente.
• Una vez tú tener exitosamente generado a compilado " .clase " byte código
archivo, correr el programa utilizando el entorno de ejecución “ java ” .
2.5.1 Paquetes
Todo Java clases son metido en a paquete, incluso si él es el por defecto (sin
nombre) Paquete. Paquetes son a forma a organizar nuestro clases, y a paquete
típicamente contiene a colocar de clases que están relacionadas entre sí de alguna
manera. Todas las clases de un paquete se colocan en la misma carpeta, y es la
ruta de la carpeta la que le da el nombre al paquete. Los nombres de los paquetes
consisten en uno o más nombres de carpeta, separados por puntos, todos en
minúsculas. caso. Clases tener a simple nombre , cual es el nombre de el clase sí
mismo, y un nombre completo , que incluye el nombre del paquete. Por ejemplo,
la clase System es en a paquete llamado “ java.lang, ” entonces es simple nombre
es " Sistema, " pero es El nombre completo es “ java.lang.System ” . Debido a
que el nombre del paquete se asigna directamente a el estructura de el archivo
sistema, él aparece en a carpeta llamado “ idioma ” cual en sí está en una carpeta
llamada " java " .
Nota
No es necesario crear las carpetas con antelación. El compilador de Java puede
crearlas según sea necesario. Solo el código de bytes compilado debe estar en la
carpeta indicada; el código fuente puede estar en cualquier lugar.
Nosotros usar paquetes a dar a clase es “ espacio de nombres ” . Este es útil
porque él significa que a clase en uno paquete poder ser distinto de otro clase eso
tiene el mismo nombre de la clase pero es en a diferente paquete. Para ejemplo, si
I escribir a Cuenta bancaria clase, él Probablemente no sea la única clase con ese
nombre en el mundo, pero puedo hacerla única si la pongo en un paquete con un
nombre único. Una convención común para nombrar paquetes es a base a ellos en
a Dirección URL (Uniforme Recurso Identificador). Desde URI son
2.5 The Java 19
Classpath
nombres únicos, basados en nombres de dominio de estilo Internet, utilizándolos
como base para la denominación de paquetes ayuda a Mantener los nombres de los
paquetes globalmente únicos. Los nombres de los paquetes suelen ser creado de
contrarrestar URI , dónde nosotros cambiar el orden de el principal parte de el
nombre de dominio. Por ejemplo, si tengo un dominio llamado “ foundjava.com ”
, entonces el URI inverso sería “ com.foundjava ” . A partir de ese punto de
partida, se pueden usar varias subcarpetas para diferentes proyectos y
aplicaciones, por lo que podría tener un paquete llamado “
com.foundjava.chapter2 ” para el ejemplo código usado en este capítulo. Si el
nombre de mi paquete es “ com.foundjava.chapter2 ” , entonces si pongo una
clase “ BankAccount ” en eso paquete, entonces el completamente calificado
clase nombre voluntad ser “ com.foundjava.capitulo2.CuentaBancaria ” ,
donación él a diferente completamente calificado nombre que, para ejemplo, “
com.bigbank.system.BankAccount ” porque aunque el nombre de la clase es el
mismo, el nombre del paquete es diferente. Este es un aspecto importante de la
reutilización de componentes en Java, porque significa que podemos combinar
clases de muchas fuentes diferentes sin preocuparnos por conflictos de nombres.
Para colocar una clase en un paquete específico, usamos un “ paquete ”
declaración que debe aparecer como la primera línea de código en el archivo.
Tenga en cuenta que el nombre del paquete está en minúsculas, con el carpeta
nombres apartado por períodos. Números poder ser incluido pero no como El
primero personajes de cualquier de el carpeta nombres en el paquete (solo letras y
Los números son caracteres válidos). Si “ MyJavaProgram ” se coloca en un
paquete llamado “ com.-foundjava.chapter2 ” , la declaración del paquete se verá
así:
paquete com.foundjava.chapter2;
clase pública MyJavaProgram
{
// etc.
Una vez que ponemos una clase en un paquete, es necesario compilarla para que el
código de bytes termine en la carpeta correcta. Esto se logra fácilmente usando el
comando “ -d ”. Opción (directorio) en el compilador de Java. Esta opción va
seguida de un espacio, luego un nombre de directorio y otro espacio. Esto
garantiza que el archivo de clase compilado se colocará automáticamente en la
carpeta de paquete correcta debajo de la que especifique (creará el requerido
carpeta estructura si él hace no ya existir). Para ejemplo, nosotros Puede utilizar el
punto ( “ . ” ) para especificar la carpeta actual:
javac -d . MiProgramaJava.java
20 2 Compiling and Running Java
Programs
Si compila usando esta opción, debería poder ver que se ha creado la estructura
de directorio para usted y que el archivo de clase compilado está en la carpeta
correcta. El original fuente archivo es, de curso, aún en es original carpeta, desde
él es Sólo el byte código eso debe ser en el correcto paquete estructura en orden a
ser situado por otras unidades de código.
Para ejecutar nuestra aplicación Java actualizada, necesitamos comprender
cómo se relacionan los paquetes a el Java ruta de clase, un ambiente variable eso,
como el camino, puede ser Se establece en el sistema operativo y define dónde se
puede incluir el código de bytes de Java (es decir, las clases compiladas). encontró
por el Java compilador y máquina virtual. Este es importante porque cuando
compila o ejecuta código Java, es muy probable que dependa de otras clases y
bibliotecas. Estas solo se pueden encontrar si están en la ruta de clases. La ruta de
clases se puede configurar desde la línea de comandos, es decir,
Establezca classpath=c:\código
C:\
code
con
encontradojava
chapter2
MiProgramaJava.clase
package
set classpath=c:\code com.foundjava.chapter2
/*
* Cualquier cosa entre el
* barra-asterisco y asterisco- barra
* es a comentario
*/
2.5 The Java 23
Classpath
Este tipo de comentario debería ser evitado en Java en favor de Javadoc
comentarios que presentaremos en breve.
También existe una sintaxis para comentarios de una sola línea, que utiliza dos
caracteres de barra diagonal:
Este tipo de sintaxis (que proviene del lenguaje de programación C++) es más
fácil de usar para comentarios cortos en el cuerpo del código, porque no necesita
ninguna otro personaje a indicar dónde el comentario termina. El fin de el
comentario se toma automáticamente como el final de la línea en la que aparece.
El tercero tipo de comentario es usado por Javadoc, el automático Herramienta
de documentación de clases que funciona con código Java (más adelante en este
libro analizaremos Javadoc). Lo importante es tener en cuenta que los primeros
caracteres del bloque de comentarios tienen dos asteriscos después de la barra
diagonal, en lugar del asterisco simple que se utiliza con los comentarios de estilo
“C”.
/**
* Cualquier cosa entre el
* barra-asterisco-asterisco y asterisco- barra
* es a documentación comentario
*/
En nuestro primer ejemplo, utilizamos las herramientas básicas del JDK desde la
línea de comandos. Aunque esto resulta útil para comprender el papel del
compilador y el entorno de ejecución de Java, y la ruta de clases, no es un entorno
de desarrollo muy productivo. En el resto de este libro, trabajaremos con el IDE
Eclipse (Integrated Development IDE). Ambiente). Este poder ser con libertad
descargado de el Sitio web “ eclipse.org ” . El mismo IDE poder ser usado para
desarrollo código en diferente idiomas y viene en varios diferente versiones para
diferente tipos de software desarrollo. La versión utilizada para el ejemplo de este
libro es “ Eclipse IDE for Java Developers ” . Instalación Eclipse es muy fácil. Tú
solo necesidad a descargar el instalador archivo y Ejecútalo. Cuando el instalador
comienza arriba él voluntad espectáculo a lista de idioma opciones, entonces tú
Debería elegir “ Eclipse IDE para desarrolladores Java ” (Fig. 2.3 ).
El instalador de Eclipse debería localizar automáticamente una JVM
(suponiendo que ya haya instalado el JDK, que incluye la JVM, para las
actividades de línea de comandos de la primera parte de este capítulo). Es posible
que deba configurar la ruta a la JVM y dónde desea instalar Eclipse (Fig. 2.4 );
luego, la instalación se completará.
Higo. 2.3 El opción a elegir el Eclipse IDE para Java Desarrolladores en el Eclipse Instalador
24 2 Compiling and Running Java
Programs
Figura 2.4 Seleccionar lo
existente Kit de herramientas
JDK ubicación y El nuevo
Eclipse instalación carpeta
Higo. 2.5 El inicial pantalla cuando cargando el Eclipse IDE con el por defecto ventana disposición
26 2 Compiling and Running Java
Programs
Desde el menú emergente, debería aparecer el " Nuevo paquete Java ". diálogo
(Fig. 2.8 ). En el ejemplo de la Fig. 2.8 , el nombre del paquete “
com.foundjava.chapter2 ” Se ha introducido. Recuerde las convenciones de
nombres de paquetes: todo en minúsculas, no puede comenzar con un número, sin
caracteres de puntuación, con puntos entre los nombres de los subpaquetes.
Eclipse mostrará una advertencia si intenta nombrar un paquete de forma
incorrecta. Si la carpeta de origen no es correcta (debería ser “ src ” carpeta de su
proyecto), puede buscarla. Haga clic en “ Finalizar ” para crear el paquete.
Una vez el paquete tiene estado creado, nosotros poder agregar a nuevo clase a él.
Bien hacer clic en El nuevo creado paquete y Seleccione “ Nuevo ” ! “
Clase ” . Deberías ver el “ Nuevo Java” Clase " diálogo (Higo. 2.9 ).
En el ejemplo de la Fig. 2.9 , se ha introducido el nombre de la clase ( “
MyJavaProgram ” ). Nota también eso el caja tiene estado seleccionado a crear a
stub para el método “ main ” . Esto le ahorrará tener que escribirlo en el editor
manualmente.
Una vez que haga clic en " Finalizar " El código fuente debe aparecer en el
IDE como se muestra en la Fig. 2.10 . Eclipse voluntad tener automáticamente
agregado el nombres de el paquete y el
28 2 Compiling and Running Java
Programs
Higo. 2.8 El " Nuevo Java Paquete " diálogo. Él voluntad advertir acerca de paquete nombres
eso hacer no seguir las convenciones de nombres correctas
Higo. 2.9 El " Nuevo Java Clase " diálogo en Eclipse. En este ejemplo, el caja tiene estado
seleccionado para generar el código auxiliar de un método “ principal ” dentro de la clase
Higo. 2.10 El IDE de Eclipse después de que se haya creado la clase. Observe el proyecto, el
paquete y la clase que se muestran en el panel “ Explorador de paquetes ” a la izquierda, el
código generado en el centro y el panel “ Esquema ” a la derecha donde se muestra un esquema
de la clase y sus métodos.
Figura 2.11 Eclipse siempre que a sensible al contexto ventana emergente lista de sugerido
código Opciones después Se ha escrito un punto en el código fuente o se ha presionado CTRL-
barra espaciadora
2.7 Using the Eclipse Integrated Development 31
Environment (IDE)
en complejo programas). Nota también eso el pestaña en el arriba de el edición
ventana tiene un asterisco a su derecha. Esto significa que el archivo actual tiene
ediciones sin guardar.
Figura 2.12 muestra alguno más características de el rojo y blanco error
Indicadores a la izquierda de la ventana de edición. En este ejemplo, el punto y
coma final se ha eliminado deliberadamente. izquierda apagado el fin de el línea.
Información acerca de errores poder ser visto en dos lugares. Si usted flotar sobre
el indicador de error rojo con El ratón, una ventana emergente Aparecerá un
mensaje (como se puede ver en la ventana de edición en la Fig. 2.12 ). Además, se
puede ver una lista de errores y advertencias actuales en todo el código del
proyecto en el apartado “ problemas ”. cristal en el abajo de el IDE. Sin embargo,
tú debería nota eso este lista solo se actualiza cuando se guarda un archivo; no se
actualiza dinámicamente como los indicadores de error en el editor de código
fuente. Existe una buena razón para esto, que es que Eclipse compila
automáticamente un archivo de código fuente Java cuando se guarda. De hecho,
no hay una " compilación " explícita. paso al usar Eclipse, así que “ guardar ”
es efectivamente lo mismo como “ compilar ” . El “ Problemas ” cristal solo
muestra errores eso aparecer en código compilado, no en ediciones no guardadas.
Tenga en cuenta que los símbolos de error también aparecen en la pestaña del
panel de edición y en el explorador de paquetes.
Higo. 2.12 A sintaxis error ser indicado ambos en el fuente código editor y el “ Problemas ” cristal
32 2 Compiling and Running Java
Programs
2.7.5 Compilando y Correr Código en Eclipse
" compilación " explícito pero tiene indicadores de error en el panel de edición
que son dinamicamente actualizado poder ser potencialmente engañoso. Para
ejemplo, En la Fig. 2.13 , el error ha sido corregido (el marcador ha pasado de
rojo a gris) pero el archivo no ha sido guardado (observe el asterisco en la pestaña
del panel de edición). Esto significa que el archivo actualizado aún no ha sido
compilado, por lo que el mensaje de error todavía aparece en la sección “
Problemas ”. panel. Esto puede causar confusión cuando trabaja con varios
archivos. Es posible que haya corregido errores en un archivo fuente, pero no lo
haya guardado (ni compilado). Esto significa que pueden aparecer otros errores
porque el código en otros archivos aún depende de la versión guardada
anteriormente (pero incorrecta). El mensaje básico es que, tan pronto como realice
cambios en su código, guarde el archivo para compilarlo.
Una vez su archivo es correcto, completo y salvado, él poder ser correr. A
correr a clase con un “ principal ” método, haga clic derecho en la clase en la
ventana del Explorador de paquetes y luego seleccione " Correr Como " ! “
Aplicación Java ” en el menú emergente. Alternativamente, puede utilizar el
botón verde “ Ejecutar ”. botón en la barra de herramientas en la parte superior
del IDE, que ejecutará cualquier clase que esté actualmente al frente de la ventana
de edición (no es probable que cause ningún problema). confusión en el
momento cuando nosotros solo tener uno clase ser editado). Figura 2.14
muestra la salida del programa que se muestra en una nueva “ Consola ” pestaña
que aparecerá en la parte inferior de la pantalla. Tenga en cuenta que cuando esté
ejecutando código en Eclipse, el ruta de clase (de hecho a módulo camino) a su
propio clases es automáticamente
Higo. 2.13 Corregido código en el edición cristal. A diferencia de el fuente código editor, el “
Problemas ” El panel solo se actualiza cuando se guardan los archivos y se compilan
automáticamente.
2.7 Using the Eclipse Integrated Development 33
Environment (IDE)
2.8 Resumen
En este capítulo se describen los conceptos básicos del uso de las herramientas
proporcionadas con Java para compilar y correr código. Nosotros sierra cómo el
fuente código de Java clase es estructurado, cómo él poder ser compilado usando
el “ javac ” compilador (proporcionó con Oráculo Java Desarrollo Kit o
OpenJDK) y cómo se puede ejecutar en la máquina virtual Java desde el comando
indicador/terminal. Nosotros tener visto Cómo Java código es poner en paquetes, y
cómo se relacionan estos paquetes con la ruta de clases de Java, que es necesario
configurar para que el entorno de ejecución de Java localice el código compilado.
El capítulo también describió cómo se realiza el mismo proceso. de edición,
compilando y correr código poder ser hecho mucho más fácilmente utilizando el
Eclipse Integrado Desarrollo Ambiente (IDE), cual también proporciona Muchas
otras funciones útiles, como la asistencia con la generación automática de código y
la identificación de errores. También vimos cómo Eclipse puede colocar
automáticamente clases en módulos Java que pueden contener varios paquetes.
Datos Tipos, Aritmética y Matrices
3
Para comenzar este capítulo, nos encontramos con los tipos de datos primitivos de
Java. Estos son los tipos simples que se utilizan para almacenar números,
caracteres y valores booleanos (verdadero/falso). este libro, nosotros voluntad ser
relación comercial con clases y objetos. Sin embargo, Java, como La mayoría de
los demás lenguajes de programación también tienen un conjunto de tipos de datos
simples incorporados que representan personajes y números. Cada tiene a
especificado tamaño en términos de pedacitos (dígitos binarios) y, por lo tanto, un
rango especificado de valores posibles. Un byte, por ejemplo, siempre tiene 8 bits
de longitud, por lo que su valor positivo máximo es 127, que es el número binario
1111111 (7 bits) con 1 bit reservado para el signo (+ o − ) (Fig. 3.1 ).
A diferencia de otros lenguajes, Java no tiene tipos de datos sin signo, lo que
significa que todos ellos (excepto “ char ” , que está diseñado para contener
caracteres en lugar de números) puede contener números positivos y negativos.
Además, hay un “ booleano ” tipo, que solo puede contener los valores “
verdadero ” o “ falso ” . El disponible tipos son mostrado en Tabla 3.1 . Él es
importante a nota eso todo primitivo Los nombres de los tipos de datos están en
minúsculas. Esto los diferencia de otros tipos de datos que utilizan otro
Nombramiento Convenciones. Para ejemplo, nosotros tener ya visto eso clase Los
nombres se escriben utilizando mayúsculas y minúsculas Pascal.
© Saltador Naturaleza Suiza Estado 2020 35
D.
2.7Parsons,
UsingFoundational
the Eclipse JavaIntegrated
, Textos en Ciencias de la
Development 35
Computación, https://doi.org/10.1007/978-3-030-54518-5_3
Environment (IDE)
36 3 Data Types, Arithmetic and
Arrays
+ 1 1 1 1 1 1 1
64 + 32 + 16 + 8 + 4 + 2 + 1 = 127
entero intValor = 0;
También se pueden declarar varias variables del mismo tipo en una sola
declaración, separadas por comas, por ejemplo,
entero miVar1 = 0, miVar2 = 0;
38 3 Data Types, Arithmetic and
Arrays
3.1.2 Literales y el compilador
Cuando nosotros asignar variables a literales, allá son alguno asuntos con el
compilador eso debemos mirar afuera para. Para ejemplo, a literal entero número
es ficticio por el compilador para que sea un “ int ” , por lo que esta línea de
código está bien.
Cambio el tipo de el variable de “ int ” a " largo " es solo parte de el solución:
Esto todavía provoca un error del compilador, porque el valor literal dado no
puede ser un “ int ” . pero el compilador asume eso a literal entero número es un "
int " . Por lo tanto, Debemos agregar un “ Yo ” hacia fin de el literal asi El
compilador lo hará Trátalo como a " largo " tipo de datos en lugar de un “ int ” :
doble d = 3.5;
// voluntad compilar – flotante punto literales son dobles
Esto, por otro lado, no se compilará, porque un float tiene una capacidad de
almacenamiento menor que un double:
Aunque algo de esto pueda parecer confuso, lo más importante que se puede
sacar de ello es que siempre que tú declarar numérico variables, tú debería trabajar
en el base eso “ int ” y “ doble ” son los tipos predeterminados con los que se
trabaja. Utilice uno de los otros tipos únicamente si tiene a bien razón a hacer
3.1 Java Primitive Data 39
Types
entonces, semejante como Necesitando a ahorrar memoria en muy grande
matrices.
40 3 Data Types, Arithmetic and
Arrays
Eso forma, tú son menos probable a venir arriba contra mecanografía problemas
entre variables y literales.
Nota
Los números flotantes y dobles no son adecuados para algunos cálculos de punto
flotante , como las transacciones financieras en las que se requieren valores
precisos. Para estos fines, debe utilizar la clase BigDecimal.
Booleano variables son muy simple desde ellos poder solo ser asignado el valores
“ verdadero ” o " FALSO " . Estos valores poder ser asignado como literales
(cual debe ser todo en más bajo caso) o ellos poder también ser asignado el
resultado de un expresión eso devoluciones a Booleano valor.
// asignación de booleanos
boolean Está lleno =
verdadero; isFull = falso;
El valor máximo de carácter Unicode es 65535. Esto es mucho más alto que el
valor máximo posible que puede almacenar en un “ short ” , aunque un short
también tiene 16 bits de longitud. Esto se debe a que un “ char ” La variable no
almacena números negativos, ya que la tabla Unicode solo contiene valores
positivos, por lo que no es necesario reservar espacio para almacenar un signo.
Un " char " La variable puede contener una de las “ secuencias de escape ”
Caracteres (caracteres de control y otros caracteres especiales) que están
precedidos por la barra invertida (\). Aunque parezca que contienen dos caracteres,
siguen representando caracteres " individuales " . Esto se debe a que las
secuencias de escape también hacen referencia a números de la tabla Unicode. Por
ejemplo, “ \n ” representa el carácter de nueva línea (número Unicode 10). Las
secuencias de escape se muestran en la Tabla 3.2 .
3.1 Java Primitive Data 41
Types
Mesa 3.2 Escapar secuencia personajes
Retroceso \b Pestaña horizontal \t
Soltero cita " ' Doble cita " "
Nuevo línea \norte Carro devolver \r
Forma alimentar \F Barra invertida \\
Carácter \xxx Hexadecimal Valor de \uxxxx
Unicode octal carácter Unicode
valor
Cadena cotización =
"Java es C++ \"sin el armas de fuego, clubs y cuchillos\"";
Antes emocionante en, allá es uno más importante cosa a entender acerca de
variables, que es su alcance. Puede recordar que el cuerpo de una clase y el cuerpo
de la clase “ principal ” método, están rodeados por llaves { … }. Estas llaves
definen el alcance de esos elementos de código. Cuando declaras una variable, su
alcance está definido por el bloque de código, definido entre llaves, dentro del cual
aparece. Las variables no se pueden usar en el código hasta que se hayan
declarado y no se pueden usar fuera del alcance dentro del cual se declararon.
{
entero miVariable = 3;
// poder usar 'myVariable' ahora
}
// 'miVariable' es ahora afuera de alcance y no poder ser
usado
42 3 Data Types, Arithmetic and
Arrays
La convención habitual en Java es declarar las variables lo más cerca posible
del punto de primer uso posible. Sin embargo, debido a los requisitos de alcance,
esto puede terminar estando algo alejado del primer uso de la variable. En el
ejemplo anterior, tendríamos que declarar “ myVariable ” fuera del alcance de
estas llaves para poder acceder a él después de la llave de cierre, por ejemplo,
entero miVariable = 0;
{
miVariable = 3;
// poder usar 'myVariable' ahora
}
// 'miVariable' es aún en alcance y poder utilizarse
Nota
Si no tenemos un valor específico que queramos usar para inicializar una
variable numérica, la convención normal es establecerlo en cero.
Ejercicio 3.1 Aquí es a " principal " método que contiene alguno aleatorio
fragmentos de código que asignar variables de diferente tipos. Él contiene varios
adrede errores relativo a literales y alcance. Corrija estos errores aplicando su
conocimiento de los diversos conceptos eso tener estado introducido entonces
lejos en este capítulo. El método contiene Algunas llaves no cumplen ninguna
función útil; simplemente están ahí para permitirle demostrar su comprensión del
alcance. Al realizar los cambios, no cambie ninguno de los tipos de datos; cambie
únicamente los valores o la forma en que se expresan.
paquete com.foundjava.chapter3;
de datos {
público estático vacío
principal(Cadena[] argumentos) { largo
myBigNumber = 2147483648;
flotante myFloat = 4.56;
booleano Está lleno =
Falso; char myChar = -1;
{
byte mi Byte = 127;
}
Cadena filePath = "com\javabook\chapter3";
System.out.print("Valor de miBigNumber = ");
System.out.println(myBigNumber);
System.out.print("Valor de myFloat = ") ;
System.out.println(myFloat) ;
System.out.print("Valor de isFull = ");
System.out.println(isFull);
System.out.print("Valor de myChar = ") ;
System.out.println(myChar);
System.out.print("Valor de myByte = ");
System.out.println(myByte);
System.out.print("Valor de filePath = ");
System.out.println(filePath);
}
}
3.1 Java Primitive Data 43
Types
3.2 Aritmética y Otro Operadores
Agregar +
Sustraer —
Multiplicar *
Dividir /
Resto %
Todas las declaraciones aritméticas en Java tienen el mismo formato, es decir, que
una variable a la izquierda de un operador de asignación (=) se hace igual al
resultado de una expresión aritmética a la derecha:
variable = expresión ;
entero resultado = 4 + 2 * 3;
Desde el multiplicación voluntad ser ejecutado antes el suma, el resultado quería ser
10. Si este es no qué nosotros desear, nosotros poder usar paréntesis a cambiar el
orden en qué partes de una expresión se evalúan. Para forzar que la suma se
ejecute primero, podemos escribir
entero resultado = (4 + 2) * 3;
Como era de esperar, esto da como resultado 18, ya que ahora la suma se
realiza antes que la multiplicación. Si dos operadores de la misma precedencia (es
decir, sumar y sustraer, o multiplicar, dividir y resto) aparecer en el mismo
expresión, entonces se evalúan de izquierda a derecha. Por ejemplo,
entero resultado = 10 * 3 / 2;
entero encimera =
1; contador++;
En este ejemplo, el entero variable " encimera " quería ser incrementado a
sostener el valor “ 2 ” . Podemos ver que el operador de incremento es
simplemente una forma abreviada de
encimera = encimera + 1;
44 3 Data Types, Arithmetic and
Arrays
Allá es también a decremento operador, cual lógicamente suficiente es “ −− ”
y resta uno de una variable:
encimera-- ;
encimera = encimera - 1;
entero encimera = 1;
entero recuento actual = contador++;
entero encimera = 1;
entero recuento actual = ++contador;
miVariable -= 2;
Aunque esto pueda parecer un poco oscuro, es una técnica bastante útil,
particularmente cuando nosotros son laboral con objetos bastante que primitivo
datos tipos, como nosotros Lo veremos en capítulos posteriores.
Los operadores bit a bit (AND, OR, XOR), que se muestran en la Tabla 3.3 , se
pueden aplicar a tipos enteros a nivel de bit y controlan qué valor resulta cuando
se opera sobre dos bits en una posición dada en los dos operandos. En la mayoría
de los casos, estos no afectan mucho en Java solicitud desarrolladores. Allá es, sin
embargo, uno excepción A esto, que es el operador OR bit a bit (el carácter “ | ” ).
A nivel de bit, este operador acepta dos poco valores y, como poder ser visto en
Tabla 3.3 , proporciona el resultado de “ 1 ” como largo como en el menos uno de
el dos pedacitos ser operado en es a “ 1. ” Este operador se utiliza en algunos
componentes de biblioteca en Java como una forma de combinar diferentes
valores de configuración. Por ejemplo, como veremos en el Capítulo 17 , el
operador OR bit a bit se puede utilizar para combinar estilos de fuente en negrita y
cursiva.
Ejercicio 3.2 En este ejercicio, utilizamos algunos operadores aritméticos.
También puedes utilizar la concatenación de cadenas al mostrar los resultados. No
olvides elegir los tipos de datos adecuados para las variables. La unidad monetaria
que se utiliza aquí es el simoleón (§), tal como se utiliza en la serie de juegos Los
Sims de Electronic Arts.
Tabla 3.3 Los operadores bit a bit1, bit2 & (AND) | (OR) ^ (XOR)
bit con ejemplos de resultados de
0, 0 0 0 0
operante en Valores de 2 bits
0, 1 0 1 1
1, 0 0 1 1
1, 1 1 1 0
48 3 Data Types, Arithmetic and
Arrays
3.3 Matrices
Anteriormente en este capítulo notamos que una matriz de objetos String aparece
como un argumento para la función “ principal ”. método. En esta sección,
veremos cómo se pueden usar las matrices para sostener a recopilación de valores.
Un La matriz consta de de un fijo número de elementos que tienen todos el mismo
nombre pero un número de índice diferente, que aparece entre corchetes. El
elementos en un formación son siempre indexado de cero hacia arriba. Cifra 3.2
muestra eso el elementos de un formación que contiene cuatro valores quería ser
numerado de cero a tres.
Nosotros tener ya visto un ejemplo de un formación ser referido a cuando
nosotros declarar un método “ principal ” :
entero[] miMatriz;
0 1 2 3
Asignar los valores iniciales a una matriz de a uno por vez puede ser bastante
tedioso para una matriz grande. Una alternativa es utilizar un bloque inicializador,
en el que se asigna una nueva referencia de matriz a una serie de valores separados
por comas y rodeados por llaves. Por ejemplo, esta matriz se inicializa con 12
valores enteros que representan la precipitación mensual promedio durante un año.
Las matrices solo pueden almacenar valores del tipo especificado por la
referencia y estos tipos son comprobado en compilar tiempo. Para ejemplo, si
nosotros intentó a asignar a literal Si duplicamos un elemento de nuestra matriz,
no se podrá compilar:
Los arreglos tienen un campo público de “ longitud ” , que puede ser útil conocer
para evitar sobrepasar los límites del arreglo. Como veremos en un ejemplo
posterior, el campo de “ longitud ” se puede utilizar para controlar un
bucle.
3.3 51
Arrays
System.out.println(Precipitaciónmensual.length ) ;
// '12' impreso en consola
Para explorar algunos de los conceptos que hemos introducido en este capítulo,
trabajaremos con el siguiente ejemplo:
Esto es una mejora, ya que ahora obtenemos la respuesta " 4 ". que se acerca
más a lo esperado, pero aún no es la respuesta correcta. Por supuesto, sabemos que
necesitamos obtener un número de punto flotante como resultado, por lo que
deberíamos cambiar el tipo de datos de “ mean ” a “ double ” en lugar de “ int ”
:
doble significar =
(intArray[0] + matriz int[1] + matrizint[2]) / 3;
System.out.println(media);
Esto supone una mejora adicional, ya que el resultado ahora sale como “ 4.0 ”.
que es claramente un número de punto flotante, pero ¿dónde está el “ .333 … ” ?
Como ya habrás deducido, el problema es que todos los operandos de la expresión
son números enteros. Este medio eso el resultado de un expresión usando solo
números enteros voluntad dar un resultado que también es un entero, que en este
caso trunca el valor de punto flotante eso nosotros desear. A rápido y sucio
arreglar podría ser a doblar el “ 3 ” eso nosotros dividir por en un doble literal ( “
3.0 ” ). Esto tendrá el efecto de promover los otros operandos a dobles también.
doble significar =
(intArray[0] + matriz int[1] + matrizint[2]) / 3.0;
System.out.println(media);
doble significar =
(intArray[0] + matriz int[1] + matrizint[2]) / intArray.length;
Sistema.out.println(media);
3.4 Precedencia, Tipo Fundición y Promoción por Ejemplo 53
3.5 Resumen
En este capítulo hemos visto los distintos tipos de datos disponibles en Java y
hemos diferenciado entre tipos primitivos, que incluyen números, caracteres y
valores booleanos. y referencia tipos semejante como matrices, y cómo variables
de estos Los tipos pueden Se deben declarar e inicializar. Se introdujeron los
operadores aritméticos de Java y se dieron ejemplos de código. presentado cómo
ellos poder ser usado en aritmética expresiones. Nuestro ejemplos de orden de
precedencia, promoción y tipo fundición tener mostrado cómo importante él es ser
consciente de el forma eso Java administra el relaciones entre diferente datos
54 3 Data Types, Arithmetic and
Arrays
tipos, y cómo nosotros poder escribir código a hacer explícito datos tipo
conversiones a garantizar que nuestros programas generen los resultados
correctos. El capítulo también demostró cómo Strings (cual son tipos de
referencia) poder ser concatenado juntos y cómo matrices Puede ser usado a grupo
juntos relacionado datos en a soltero estructura eso poder ser accedido por un
índice basado en cero. El sintaxis para declarar y La inicialización de matrices fue
examinados, incluidas matrices que tienen múltiples dimensiones.
Control Estructuras
4
Aquí, todo pauta de código dentro el tirantes voluntad ser considerado como parte de
el " si "
declaración:
Estos declaraciones poder también ser anidado adentro cada otro a cualquier nivel,
entonces eso un " si "
o un " demás " declaración poder contener otro Declaraciones " si " , como mostrado aquí:
4.1 Making 57
Selections
El código de nuestro primer ejemplo incluye una selección que utiliza una
declaración " if " . Esta selección se basa en el uso de un número generado
aleatoriamente para representar una moneda que se lanza y cae en cara o cruz.
Para representar el lanzamiento de la moneda, necesitamos generar un valor
aleatoriamente. A simple forma de generando a (seudo) aleatorio número es a
usar el Matemáticas
4.1 Making 59
Selections
clase, cual (como el Sistema clase) es disponible como parte de el estándar Java
bibliotecas. La clase Math tiene una operación llamada “ random ” que devuelve
un valor doble aleatorio. mayor que que o igual a 0.0 y menos que 1.0. En el
código, nosotros asignar el valor de retorno de esta operación en una variable
doble local:
Esto nos dará un número de punto flotante (un doble) mayor o igual a 1 y
menor que 7. El número generado es un doble, pero podemos convertirlo para
obtener un entero. postergación cualquier fraccionario parte de el número (a crudo
pero adecuado acercarse):
Ahora que hemos visto cómo escribir código que pueda hacer selecciones, una
aplicación útil es usarlo para probar los resultados de nuestros programas Java.
Escribir una prueba es básicamente acerca de comparando el respuesta tú esperar
con el respuesta el código da tú. Mientras código eso genera aleatorio números es
no el más fácil cosa a prueba, nosotros voluntad Veamos cómo podemos empezar a
crear algún código de prueba para nuestro lanzamiento simulado del dado.
Nosotros Espere el resultado siempre ser un entero en el rango 1 – 6. Desde Java
escribirá asegurar eso el resultado es un entero, nosotros solo necesidad a controlar el
rango. Nosotros poder hacer esto con un “ si … de lo contrario ” declaración. Nota
cómo nosotros usar el Booleano “ && ” (Y) operador para comprobar una
condición compuesta; que el valor sea al menos 1 y no más de 6.
Cabe señalar que sería conveniente leer el libro antes de seguir esta filosofía de
toma de decisiones, ya que no tiene un final feliz.
Tenga en cuenta que es probable que la expresión switch se desarrolle aún más
en futuras versiones de Java. a permitir más opciones para patrón Coincidencia.
También tenga en cuenta que el introducción El uso de la expresión switch no
significa que se esté reemplazando la declaración switch, solo que se está
proporcionando otra opción de codificación.
Este operador es a taquigrafía “ si-si no ” declaración eso poder ser usado cuando
a condición se utiliza para seleccionar un valor que se devolverá en lugar de
administrar el flujo de un programa. La sintaxis es
4.2 Iteración
En el primero parte de este capítulo, nosotros sierra cómo métodos podría ser
escrito eso selecciones incluidas entre más que uno posible curso de acción.
Ejemplos usado ambos “ si ” y “ cambiar ” declaraciones. Nosotros ahora lo
veremos cómo escribir código que itere, lo que significa que poder repetir una
sección de código más que una vez. Cada aprobar a través de el código repetido es
a soltero iteración. La iteración puede ser logrado en tres Un poco diferente
maneras:
En cada caso, habrá una condición que permita que el bucle finalice. Cuál
utilizar depende de varios factores y, a menudo, encontramos que más de una
cumplirá con nuestros requisitos, pero debemos ser conscientes de sus diferencias
para poder utilizarlas correctamente.
Estos bucles son muy similar en eso ambos ejecutar mientras a dado condición es
verdadero, pero ahí es uno llave diferencia entre a ellos. El " mientras " bucle
pruebas para a condición previa, es decir, que la condición se evalúa al comienzo
de cada bucle. Por el contrario, el bucle “ do … while ” prueba una condición
posterior, donde se evalúa la condición. en el fin de cada bucle. Este medio eso el
“ hacer … mientras ” bucle ejecuta al menos una vez, mientras que el bucle “
while ” puede no ejecutarse en absoluto (si la condición ya es falsa). Un bucle “
while ” Un bucle "do … while" se ejecuta cero o más veces, mientras que un
bucle " do … while " se ejecuta una o más veces. La opción que elija en una
aplicación determinada depende completamente del contexto, pero la opción
predeterminada sensata probablemente sea un bucle " while " , que siempre
verifica la condición antes de ejecutar cualquier código.
El bucle “ mientras ” tiene el siguiente sintaxis:
4.2 69
Iteration
Similarmente, el “ hacer … mientras ” bucle tiene este sintaxis
Nota el punto y coma eso debe seguir a “ hacer … mientras ” bucle. Hacer no
poner a punto y coma después de la condición al comienzo de un bucle “ while ” ,
o obtendrá un bucle sin fin dentro del cual no sucede nada (el punto y coma
separará el “ while ” de sus acciones asociadas para que no puedan ejecutarse).
Al igual que los bucles “ while ” , los bucles “ for ” tienen una condición que
controla la iteración del bucle. Además, tienen acciones de inicialización y
actualización integradas en la sintaxis. Esto los hace muy útiles cuando se utiliza
un valor de índice dentro del cuerpo del bucle. Un bucle “ for ” tiene tres
elementos principales:
El formato es
Tenga en cuenta que las tres partes de la declaración que siguen a la palabra “
para ” están encerrados entre corchetes y separados por punto y coma.
Cualquier o todo de el tres Secciones poder ser izquierda vacío. Este, para
ejemplo, quería ser un bucle sin fin:
Sin embargo, si nosotros son no usando todo tres Secciones entonces nosotros
quería ser mejor apagado usando un “ mientras ” bucle. Un “ para ” El bucle
debe usarse solo cuando sus secciones de inicialización y actualización son
necesario, de lo contrario él marcas el código más complejo que él necesidades a
Un bucle “ while ” sin fin es, por ejemplo, más legible.
4.2 71
Iteration
4.2.2.1 Iteración con a "para" Bucle
Nuestro primero ejemplo de a " para " bucle proporciona un ejemplo de cómo un
incrementado El número de índice puede ser útil dentro del bucle. Es una clase
que muestra algunos caracteres del conjunto de caracteres Unicode. El “ char ”
de Java de 16 bits El carácter es lo suficientemente grande para representar
todos los caracteres internacionales en el conjunto Unicode, pero para la mayoría
de los propósitos, los programas escrito para Idioma en Inglés Los lectores
necesitan solo a usar el básico caracteres imprimibles en la tabla ASCII (Código
estándar americano para el intercambio de información). El Visor de tablas ASCII
clase descrito aquí muestra el (seguramente) personajes imprimibles en el ASCII
personaje colocar. El principal método usos a " para " bucle a mostrar el
imprimible personajes de el ASCII mesa. Estos caer en el rango 33 – 126,
entonces El bucle se ve así:
Higo. 4.1 Usando el " Correr Configuraciones ” diálogo en Eclipse a aprobar argumentos a el
principal método de una clase
Tenga en cuenta que cada cadena aparece en una nueva línea, ya que cada una
de ellas se muestra mediante una llamada independiente a “ System.out.println ”
dentro del bucle ( “ algunas cadenas ” es una sola cadena debido a las comillas
dobles).
El tipo de datos que normalmente se envían a “ principal ” Suelen ser datos de
configuración opcionales, como nombres de archivos o “indicadores ” que
cambian el comportamiento de un programa (como los parámetros del
generador de documentos “ Javadoc ” que veremos más adelante en este libro).
En a más tarde capítulo, nosotros voluntad ver un ejercicio eso marcas más
práctico usar de un parámetro pasado al principal.
4.3 Resumen
En este capítulo nosotros tener visto cómo Java control estructuras son usado para
selección y la iteración. Observamos varios tipos de sintaxis de selección,
incluidas las declaraciones “ if ” y “ switch ” , e introducimos los operadores
relacionales y booleanos que se utilizan en las condiciones que controlan las
declaraciones “ if ” y los bucles. También vimos el operador ternario, que
proporciona una forma abreviada de escribir selecciones simples que devuelven un
valor. En el contexto de las declaraciones switch, analizamos el operador “ break
”. palabra clave y comparado él con el comportamiento de el " continuar "
palabra clave. También vimos las opciones de sintaxis en la expresión switch
introducida recientemente, que a diferencia de a cambiar declaración poder
devolver a valor y incluye sintaxis semejante como el La palabra clave “ yield ”
(para devolver un valor) y el operador “ arrow ” para invocar una expresión.
Ejemplos de diferente tipos de bucle eran ilustrado, incluido " mientras " bucles, “
hacer … mientras ” bucles y varios configuraciones de " para " bucle, cual son
particularmente Útil para iterando a través de matrices. Código ejemplos también
presentado cómo el Matemáticas clase poder se puede utilizar para la generación
de números aleatorios y cómo se puede pasar una matriz de cadenas a la "
principal " método de a clase en tiempo de ejecución, cualquiera de el dominio
inmediato o a través de la opción “ Ejecutar configuraciones ” dentro de
Eclipse.
Creando Objetos
5
Ya hemos visto que Java tiene tanto tipos primitivos como tipos de referencia.
Pasamos algún tiempo analizando los tipos primitivos en el Capítulo 3 , pero
también presentamos cadenas y matrices, que son ambos tipos de referencia. Los
tipos de referencia incluyen todo tipo de clases, incluidos los tipos definidos por el
usuario (como BankAccount, InsurancePolicy, Customer, etc.). etc. creado para
usar en específico aplicaciones), recopilación clases como Listas, datos clases eso
grupo múltiple piezas de relacionado datos juntos como aquellos eso manejar
fechas y horas, y mucho más. Los tipos de referencia son más complejos que los
primitivos. cual justo representar a soltero valor, y son accedido a través de a
referencia a un área específica de la memoria.
En este capítulo, nosotros voluntad comenzar por mirando en el básico
mecánica de objetos; cómo se crean, cómo podemos llamar a sus métodos y cómo
se manejan en la memoria. Nosotros voluntad explicar el distinción entre a clase y
un objeto y comenzar Para interactuar con alguno simple objetos de el Java
bibliotecas y explorar alguno de sus constructores y métodos.
A clase tiene varios diferente roles en Java. En anterior ejemplos, nosotros tener
visto que las clases pueden proporcionarnos directamente métodos que podemos
utilizar en nuestros programas. ejemplo, el Sistema clase poder ser usado a
mostrar producción en el consola, y La clase Math se puede utilizar para generar
un número aleatorio. También hemos visto muchos ejemplos. de clases ser creado
en orden a acto como el entrada punto para a programa Al contener a " principal "
método. Ambos roles son útil, pero un incluso más importante papel de a clase es
a acto como el especificación para a tipo de objeto. En otro palabras, el La clase
describe un objeto tipo en términos de es atributos (el datos campos eso él
contiene) y sus operaciones (los métodos que pone a disposición).
Hemos visto en ejemplos de uso de matrices que crear una variable de un tipo
de referencia es algo diferente, ya que requiere el “ nuevo ” palabra clave. Sin
embargo, hay es aún a declaración de el datos tipo y el nombre de el formación,
para ejemplo:
entero[] miMatriz = nuevo int[5];
De curso, allá son muchos otro tipos de objeto eso poder ser creado. Nosotros
podría, por ejemplo, crea un nuevo objeto String:
Cadena s1 = nuevo Cadena(); // s1 es a Cadena (un vacío ¡uno!)
La clase String tiene varios constructores diferentes, que varían según los tipos
de parámetros que se pasan. característica, donde más de una versión de Existe un
método, pero cada versión tiene una lista diferente de argumentos de parámetros,
se conoce como sobrecarga y es una característica común de los constructores, así
como de otros tipos de métodos.
Es necesario inicializar una referencia de objeto, pero no siempre es necesario
que haga referencia a un objeto. Un alternativa es a inicializar él a " nulo " , cual
es a Java palabra clave usado para una referencia que actualmente no apunta a
nada:
Cadena nombredelcliente = nulo;
Los métodos son operaciones que un objeto puede realizar. Se invocan mediante el
operador “ . ” (punto). Cuando invocamos un método de un objeto, el nombre del
método siempre va seguido de paréntesis. Estos paréntesis se utilizan para
enumerar los argumentos de los parámetros que utiliza el método:
objectName . methodName ( parámetro argumentos )
82 5 Creating
Objects
Como hemos visto en ejemplos anteriores, una cadena es simplemente una cadena
de caracteres Unicode (letras, números, espacios u otros símbolos), que pueden
variar en longitud desde ningún carácter (una " cadena nula " ) hasta oraciones
completas o incluso documentos (por ejemplo, un XML documento podría ser
representado por a Cadena). Cadena personajes están indexados desde cero, como
una matriz (Fig. 5.1 ).
Instrumentos de cuerda en Java son también “ inmutable ” , significado eso
ellos no puedo ser cambió una vez creadas. Por lo tanto, la mayoría de los métodos
disponibles para cadenas se ocupan de consultar el estado actual de la cadena,
como su longitud, buscar elementos dentro de la cadena, como caracteres o
subcadenas, o realizar comparaciones entre diferentes cadenas.
Todos los objetos tienen métodos para proporcionar su comportamiento. El
siguiente programa de ejemplo muestra algunos de los métodos proporcionados
para los objetos de la clase String, que se enumeran en Tabla 5.1 (Hay muchos
más que no se enumeran aquí). En esta tabla, la “ cadena original ” se refiere a el
Cadena eso el método es ser llamado al. El " longitud " método es no pasado
cualquier parámetros, entonces el paréntesis son vacío cuando él es llamado. Sin
embargo, el otro métodos usado en este ejemplo todo llevar en el menos uno
parámetro argumento. Algunos de estos métodos están sobrecargados, por lo que
funcionarán con caracteres individuales o cadenas que se pasen como argumentos
de parámetros.
La siguiente clase muestra algunos de los métodos de la clase String que se
utilizan con a Cadena objeto que contiene a muy simple HTML documento. Aquí
es el contenido de la cadena, formateado con saltos de línea y sangrías para
hacerlo más legible.
y m y y o Y o a y d
o i o o o o
0 1 2 3 4 5 6 7 8 9 10
Higo. 5.1 Instrumentos de cuerda contener Unicode personajes eso son indexado de cero, como un
formación
5.2 Classes and Methods for 83
String Data
Mesa 5.1 Alguno métodos de La clase String
Método Objetivo
longitud() Devoluciones un entero representando el número de personajes
en La cuerda
contiene(…) Devoluciones " verdadero " si el personaje o Cadena aprobado
a el método coincide dentro de la cadena original, de lo
contrario devuelve falso
comienza con(…) Devoluciones " verdadero " si el personaje o Cadena aprobado
a el método coincide dentro de la cadena original, de lo
contrario devuelve falso
índiceDe(…) Devoluciones el índice (como un entero) dentro el original
Cadena de el
primero aparición de el especificado personaje o Cadena
(devuelve-1 si no se encuentra)
lastIndexOf(Cadena) Devuelve el índice (como un int) dentro de la cadena original
de la última aparición del valor especificado. personaje o
cadena (devuelve – 1 si no se encuentra)
subcadena(int, entero) Devoluciones otro Cadena eso es a Copiar de el parte de el
Cadena original entre los dos índices proporcionados
Dado que los navegadores HTML descartan los espacios en blanco, podemos
representar esta página como una sola cadena en Java. Tenga en cuenta que en el
código real toda la cadena debe aparecer en una sola línea, sin los saltos de línea
que se utilizan a continuación para ajustar el texto a la página. Aunque este
programa de ejemplo no realiza ninguna función práctica, muestra cómo se
pueden procesar las cadenas utilizando sus métodos. El tipo de procesos que se
muestran aquí se pueden utilizar para, por ejemplo, extraer datos de una página
web, comprobar el documento tipo ser usado o identificar elementos a ser usado
cuando adjuntando hojas de estilo.
84 5 Creating
Objects
paquete com.foundjava.chapter5;
HTML
{
público estático vacío principal(Cadena[]
argumentos) { Cadena HTMLString = nueva
Cadena(
"<!DOCTYPE html><html><head><title>Mi HTML Página
</title></head><body><h1>Bienvenido a mi página</h1><p>Esta
página esta escrito en simple HTML<p><p>Desde HTML archivos son
justo marcado de texto, ellos poder ser contenido en Java
Cadena objetos </p></body></html>");
System.out.println("Cadena longitud: " +
HTMLString.length());
// longitud de toda la página HTML
System.out.println("Tiene nivel 1 encabezados: " +
HTMLString.contains("h1"));
// comprobar encabezados de nivel 1
System.out.println("Tiene nivel 2
encabezados: " +
HTMLString.contains("h2"));
// comprobar encabezados de nivel 2
System.out.println("Tiene a TIPO DE
DOCUMENTO: " +
HTMLString.startsWith("<!DOCTYPE"));
// controlar eso el página tiene a TIPO DE DOCUMENTO de alguno tipo
System.out.println("Posición de el \'!\' " +
HTMLString.indexOf('!'));
// resultado es 1, porque el primero índice es
cero entero Índice de inicio =
HTMLString.indexOf("cuerpo");
// resultado es primero carbonizarse de
"cuerpo" startIndex += 5;
// ir pasado el descansar de el personajes en el
etiqueta int finÍndice =
HTMLString.lastIndexOf("cuerpo");
// resultado es primero carbonizarse de
"cuerpo" endIndex -= 2;
// ir atrás a eliminar el primero personaje y el principal
'<' Cadena cuerpoContenido =
HTMLString.substring(índice de inicio, endIndex);
System.out.println("Cuerpo contenido " + cuerpoContenido);
}
}
Nota
La versión del bloque de texto que se muestra arriba es la versión de vista previa
proporcionada en Java 14. es posible eso él puede no ser apoyado En lo sucesivo
versiones de Java.
constructor de cadenas
{
público estático vacío principal(Cadena[] argumentos)
{
// Crear a nuevo Constructor de cadenas
Constructor de cadenas Registrador de eventos = nuevo
StringBuilder("Errores:\n");
// El inicial capacidad de el Constructor de cadenas es 16
// más el longitud de el Cadena argumento
System.out.println
("Inicial capacidad " + eventLogger.capacidad());
// Agregar más datos de cadena
eventLogger.append("Advertencias:\
n");
// Agregar a advertencia a el registro - fácil como él llega en el fin
eventLogger.append("Nevera equivocado color\n");
// Agregar un error - a poco más difícil como nosotros debe
// insertar él antes el advertencias
// Encontrar el primero personaje índice de el "Advertencias" cadena
// a agregar un error antes él
entero índice de error =
eventLogger.indexOf("Advertencias:");
eventLogger.insert(errorIndex, "Refrigerador en
fuego\n");
// Imprimir afuera el entero Sistema StringBuilder.out.println
(eventLogger);
// Imprimir afuera el final capacidad (más extenso que cuando él
comenzó)
Sistema.out.println
("Final capacidad " + eventLogger.capacidad());
}
}
Uno de los métodos que es común a todos los objetos en Java es el “ toString ”
método, que devuelve una representación de cadena de un objeto. La
implementación predeterminada de este método poder ayuda a nosotros a entender
cómo referencia tipos son manejado en memoria. Los ejemplos que siguen
aprovechan la función “ toString ”. Método para analizar el comportamiento de
algunos tipos de referencia.
Aquí, creamos un objeto, obtenemos los resultados del método “ toString ” de
ese objeto y luego mostramos el resultado.
Objeto miObjeto = nuevo Objeto();
Cadena miCadena = miObjeto.toString();
System.out.println(miCadena);
Ejercicio 5.2
Qué sucede si nosotros usar el asignación operador con estos objeto ¿referencias?
a = b;
Cuando nosotros imprimir afuera ambos Constructor de cadenas referencias ellos ambos
mostrar " Segundo " :
Segundo
Segundo
Ahora que ambas referencias apuntan al mismo objeto, ambas pueden cambiar
su estado. Para ejemplo, nosotros poder llamar el " contrarrestar " método (cual
revierte el orden de los caracteres en StringBuilder) usando una de las referencias,
en este ejemplo “ word1 ” (aunque también podríamos haber usado “ word2 ” ).
palabra1.reverse();
Sistema.out.println(palabra1);
Sistema.out.println(palabra2);
palabr
word1 word1
a1 “First” “First”
"Primero"
noceS
noceS
Allá es a más asunto con qué tiene sucedió en Figura 5.2 , cual es eso el El objeto
que contiene “ First ” ya no es referenciado por nada. Por lo tanto, se ha
convertido en “ basura ”. objeto en memoria que necesita ser limpiado. En
algunos lenguajes de programación El programador es responsable de liberar
memoria cuando los objetos que se han creado ya no son necesarios. Esto puede
tener algunos efectos secundarios desafortunados. si errores son hecho cuando
codificación. En el uno mano, un objeto puede ser eliminado de memoria por uno
parte de el programa cuando él es aún necesario por alguno otro parte del
programa. Esto provocará una excepción en tiempo de ejecución cuando el
programa intente acceder al objeto que ya no existe. Por otro lado, el programador
puede fallar a escribir código eso elimina objetos de memoria una vez ellos se
terminan. Esto puede llevar a un número cada vez mayor de objetos " perdidos "
en la memoria, ocupando espacio que puede ser necesario. Esto se conoce como "
fuga de memoria " y si el programa corre largo suficiente él voluntad correr afuera
de memoria. A superar Para solucionar estos problemas, Java se hace cargo de la
gestión de la memoria proporcionando un mecanismo automático de recolección
de basura .
En Java, una El objeto que ya no necesita no se puede eliminar manualmente.
Si Si ha terminado con un objeto, la única acción que puede realizar es redirigir
cualquier referencia que actualmente apunte a él a otros objetos, o a " null " , o
simplemente dejar las referencias caer afuera de alcance. Objetos eso son No
más extenso ser referenciado son entonces
5.3 References and 93
Memory
elegible para la recolección automática de basura por parte del entorno de
ejecución de Java. En la figura 5.2 El constructor de cadenas objeto ( " Primero "
) eso es No más extenso referenciado voluntad ser basura recogido si el memoria
él es tomando arriba es necesario por el programa. El basura coleccionista es parte
del sistema de ejecución que se ejecuta automáticamente en segundo plano cuando
la JVM lo necesita más memoria a continuar ejecutando. El basura coleccionista
solo corre cuando Es necesario a gratis arriba memoria. Tú no puedo fuerza él a
correr, aunque allá es a “ gc ” método en la clase Sistema que le permite sugerir
que podría querer hacer algo de recolección de basura, aunque en realidad puede
que no haga ninguna.
Sistema.gc();
Higo. 5.3 El comportamiento de el igualdad operador cuando usado con objeto referencias
94 5 Creating
Objects
El siguiente código fragmento muestra este ejemplo. El primero parte de el
código se mostrará el mensaje “ Objetos son no igual " . Después ambos
referencias tener estado asignado al mismo objeto, la segunda parte del código
imprimirá “ Los objetos son iguales ” :
Constructor de cadenas palabra3 = nuevo
StringBuilder("algunos texto"); Generador de cadenas
palabra4 = nuevo StringBuilder("algunos texto");
si(palabra3 == palabra4)
{
System.out.println("objetos son igual");
}
demás
{
System.out.println("Objetos son no igual");
}
palabra3 =
palabra4;
si(palabra3 ==
palabra4)
{
System.out.println("objetos son igual");
}
demás
{
System.out.println("Objetos son no igual");
}
Nota
Hacer no intentar este ejemplo con Cadena objetos. Si tú crear dos Instrumentos
de cuerda de el mismo literal de cadena, el compilador solo creará una única
cadena y dirigirá ambas referencias a eso. esto Esto se debe a que las cadenas
son inmutables y, por lo tanto, no pueden ser alteradas por ninguna de las
referencias que apuntan a ellas, lo que hace que sea seguro utilizar el mismo
objeto String para múltiples referencias.
Una última cosa que debemos tener en cuenta mientras analizamos la recolección
de basura es que, debido a que todas las operaciones sobre cadenas devuelven
nuevas cadenas, la concatenación puede generar mucho trabajo para el recolector
de basura. En el siguiente fragmento de código, se concatenan tres cadenas, pero
se reutiliza una de las referencias:
Cadena saludo = "Hola";
String nombre = "Mundo";
saludo = saludo + " " + nombre; // resultado es "Hola Mundo"
El resultado de este proceso poder ser visto en Figura 5.4 . A nuevo Cadena
tiene estado creado conteniendo el requerido texto, pero el original Cadena
referenciado por " saludo " es Ahora, basura. Cuando trabaje con grandes
cantidades de manipulación de cadenas, vea si puede reducir la cantidad de trabajo
del recolector de basura, por ejemplo, utilizando generadores de cadenas en lugar
5.3 References and 95
Memory
de cadenas.
5.4 Java Library 95
Packages
Higo. 5.4 Cadena concatenación poder crear extra trabajar para el basura coleccionista
Esta clase es un buen ejemplo de por qué los paquetes son importantes, ya que
existe otra clase Date de Java llamada “ java.sql.Date ” , para trabajar con fechas
de bases de datos. Sin el nombre del paquete, sería imposible para el compilador
saber cuál de las clases Date queríamos utilizar.
Nota
La clase java.util.Date todavía está disponible en Java, pero las antiguas clases
de fecha y hora fueron reemplazadas en Java 8 con un nuevo conjunto de clases
en el paquete “ java.time ” . desde usando estos más nuevo clases requerir un
comprensión de varios Las características del código que aún no hemos
presentado las dejaremos para un capítulo posterior y trabajaremos con
java.util.Date mientras tanto.
importar…;
importar…;
público clase
…
importar java.util.Date;
importar
java.util.Formatter;
Tabla 5.2 muestra el colocar de formato Instrumentos de cuerda eso poder ser
usado para común fecha y el tiempo formato, aunque nota eso allá son también
específico fecha y tiempo formateadores para las clases más nuevas en el paquete
“ java.time ” que veremos en el Capítulo 11 .
Quizás recuerdes que cuando creamos por primera vez nuestro proyecto Java,
Eclipse agregó un archivo “ module-info.java ” , que inicialmente estaba vacío,
pero incluía el nombre del módulo. eso nosotros eligió para nuestro propio clases (
" com.foundjava.examples " ). Desde Java 9, Java sí mismo tiene estado dividido
5.4 Java Library 99
Packages
en múltiple módulos. El principal ventaja de este
10 5 Creating
0 Objects
Mesa 5.2 Común formato Instrumentos de cuerda para Fecha objetos
Caden Producción Formato
a de
format
o
%tR Tiempo formateado para el 24 horas reloj como horas y minutos, p.ej 12:00
%tT Hora formateada para el reloj de 24 horas como horas, minutos y segundos, p.
ej. 12:00:00
%tr Tiempo formateado para el 12 horas reloj como horas, minutos y artículos de
segunda clase más SOY o PM, por ejemplo 12:00:00 AM
%tD Fecha formateado como día mes y (corto) año, p.ej 01/01/20
%tF Fecha formateado como (largo) año, mes y día, p.ej 01-01-2020
%tc Fecha y hora formateadas como día, fecha, hora, zona y año, p. ej., miércoles 01
de enero 12:00:00 EDT 2020
división de a sistema en separado módulos es eso solo el módulos eso son Los
requisitos de una aplicación deben implementarse con esa aplicación para que
funcione, en lugar de con todo el entorno de ejecución de Java (JRE). Para quienes
trabajan con sistemas heredados, también permite que los distintos módulos
utilicen distintas versiones de Java, lo que permite utilizar algunas funciones más
nuevas en un módulo de un sistema sin romper las dependencias de versiones
anteriores que pueda tener el código de otro módulo.
El paquetes nosotros tener usado entonces lejos ( “ java.lang ” y “ java.util ” )
ambos venir de Un módulo llamado “ java.base ” . Desde este módulo contiene
todo el centro paquetes de Java, no necesitamos hacer nada para que nuestro
código acceda a este módulo. Hay una cantidad relativamente grande de pequeño
número de centro Java paquetes en este módulo, cual usar el Carpeta “ java ” y
tiene una subcarpeta en el nombre del paquete:
• java.io
• java.lang
• Java.matemáticas
• Java.net
• java.nio
• seguridad java
• java.text
• java.tiempo
• java.util
Nota
Hay un paquete de extensión, que tiene un nombre de paquete que comienza con “
javax ” en el “ java.base ” módulo, pero hay muchos en otros módulos. Muchos
de estos paquetes relatar a el empresa y micro ediciones de Java pero allá son
También algunos en la edición estándar, como el paquete javax.swing (del
módulo “ java. desktop ” ) que veremos en el Cap. 17 .
Eclipse tiene alguno útil herramientas eso poder ayuda tú con su importar
declaraciones. Estos pueden ser accedido de el " Fuente " menú, cual es en el
principal herramienta bar y poder También se puede acceder desde el menú
emergente que aparece al hacer clic con el botón derecho del ratón en la ventana
del editor de código. Una de las opciones en “ Fuente ” es “ Agregar importación
” . Si el cursor está posicionado sobre el nombre de una clase que necesita ser
importada, entonces Eclipse voluntad crear el importar declaración para el
requerido Clase.A más general opción en el Fuente menú es “ Organizar
Importaciones ” . Este voluntad Importa todas las clases necesarias para tu archivo
fuente. Además, si ya has importado clases usando un comodín, Eclipse resolverá
estas importaciones en las clases individuales que hayas usado.
Sin embargo, debe tener en cuenta algunos posibles efectos secundarios no
deseados del uso de las herramientas de importación. Un problema es que algunos
nombres de clases aparecen en más de un paquete. Si este es el caso, Eclipse
voluntad proporcionar a diálogo como eso mostrado en Fig. 5.5 , listado todo el
disponible clases de eso nombre en su diferente paquetes. Tú necesidad Tenga
cuidado porque la opción predeterminada será la primera en orden alfabético, que
puede no ser la que desea. En la Fig. 5.5 Puedes ver que la fecha predeterminada
clase eso tiene estado seleccionado es “ java.sql.Fecha ” , no el uno nosotros tener
estado using, que es “ java.util.Date ” . Revise este cuadro de diálogo con
atención si aparece y asegúrese de haber elegido la clase correcta.
El otro lado efecto a ser consciente de es eso tú puede tener agregado un
importar a tu código, y entonces tal vez temporalmente comentado afuera o
remoto el código relativo a la clase a la que se refiere esa importación. Si utiliza la
opción “ Organizar importaciones ” opción, Eclipse eliminará todas las
declaraciones de importación que ya no se utilicen. Si entonces reintroducir el
clase eso era remoto o comentado afuera, entonces el importar habrá desaparecido
y tendrás que añadirlo de nuevo.