Ya hemos visto en la lección anterior que un objeto almacena su estado en campos.int cadence = 0;int speed = 0;int gear = 1;La lección ¿Qué es un objeto? le presentó el concepto de campos, pero probablemente siga teniendo alguna pregunta, como por ejemplo: ¿Cuáles son los convenios y reglas para nombrar un campo? Además de
int, ¿qué otros tipos de dato hay? ¿Los campos deben ser inicializados cuando se declaran? ¿Se asigna un valor predeterminado a los campos si no se inicializan explícitamente? En esta lección exploraremos las respuestas a este tipo de preguntas, pero antes de hacerlo hay una serie de distinciones técnicas que debería conocer. En el lenguaje de programación Java se usan los dos términos «campo» y «variable»; esto es una fuente habitual de confusión entre desarrolladores noveles ya que ambos, a menudo, parecen referirse a la misma cosa.El lenguaje de programación Java define los siguientes tipos de variables:
Dicho esto, en lo que queda de este tutorial se utilizan las siguientes normas al hablar de campos y variables. Si hablamos de «campos en general» (excepto variables locales y parámetros) simplemente diremos «campos». Si hablamos de «todo lo anterior» utilizaremos la palabra «variables». Si el contexto necesita de una distinción clara, utilizaremos términos específicos (campo estático, variable local, etc.) según sea apropiado. En ocasiones también podrá ver el término «miembro». A los campos, métodos y tipos anidados de un tipo se les denomina colectivamente sus miembros.
- Variables de instancia (Campos no estáticos) Técnicamente, los objetos almacenan sus estados individuales en «campos no estáticos», es decir, campos declarados sin la palabra clave
static. Los campos no estáticos también son conocidos como variables de instancia porque sus valores son únicos para cada instancia de una clase (en otras palabras, para cada objeto); el valor decurrentSpeedde una bicicleta es independiente del valor decurrentSpeedde otra.- Variables de clase (campos estáticos) Una variable de clase es cualquier campo declarado con el modificador
static; esto le indica al compilador que existe solamente una copia de esta variable, independientemente de cuántas veces se haya instanciado esa clase. Un campo que defina la cantidad de marchas de un tipo en concreto de bicicletas se podría marcar comostaticya que se aplicará la misma cantidad de marchas a todas las instancias. El códigostatic int numGears = 6;creará un campo estático de ese tipo. Además, se podría añadir la palabra clavefinalpara indicar que la cantidad de marchas nunca cambiará.- Variables locales De un modo similar a como un objeto almacena su estado en campos un método a menudo almacenará su estado en variables locales. La sintaxis para declarar una variable local es similar a la declaración de un campo (por ejemplo,
int count = 0;). No hay una palabra clave especial que defina una variable como local, esa designación viene enteramente por el lugar en el que se declare — que es entre las llaves de apertura y cierre de un método. Como tales, las variables locales son solamente visibles en el método en el que son declaradas; no son accesibles desde el resto de la clase.- Parámetros Ya hemos visto ejemplos de parámetros, tanto en la clase
Bicyclecomo en el métodomainde la aplicación «Hola mundo». Recuerde que la estructura del métodomainespublic static void main(String[] args). Aquí la variableargses el parámetro de este método. Lo que debe recordar es que los parámetros siempre se clasifican como «variables», no como «campos». Esto también se aplica a otras construcciones que aceptan parámetros (como los constructores y gestores de excepciones) sobre las que aprenderá más adelante en los tutoriales.Nomenclatura
Cada lenguaje de programación tiene su propio conjunto de convenios y reglas para los tipos de nombres que se permiten utilizar, el lenguaje Java no es diferente. Las reglas y convenios para la nomenclatura de variables se pueden resumir como sigue:
- Los nombres de variables distinguen entre mayúsculas y minúsculas. El nombre de una variable puede ser cualquier identificador válido — una secuencia de longitud ilimitada de letras y dígitos Unicode, que empiece con una letra, el símbolo del dólar «
$» o el guión bajo «_». Sin embargo, por convenio siempre se utilizan los nombres de variable con una letra, no con «$» o «_». Además, el símbolo del dólarm por convenio, no se utiliza nunca. Se encontrará con algún caso en el que nombres generados automáticamente contegnasn el símbolo del dólar, pero sus propias variables deberían evitarlo. Este convenio también se aplica al guión bajo, aunque es técnicamente válido empezar el nombre de una variable con «_», esta práctica se desaconseja. No se permite el espacio en blanco.- Los siguientes caracteres pueden ser letras, dígitos, signos del dólar o guiones bajos. También se aplican algunos convenios (y el sentido común) a esta regla. Al elegir un nombre para sus variables, utilice palabras completas en vez de abreviaturas crípticas. Así su código será más fácil de leer y comprender. En muchos casos también hará que su código se autodocumente; por ejemplo, campos con el nombre
cadencia,velocidadymarchason mucho más intuitivos que sus versiones abreviadas:c,vym. Tenga también en mente que el nombre que elija no puede ser una palabra clave o reservada.- Si el nombre que elije consiste de una sola palabra, escríbala completamente en minúsculas. Si consiste de más de una palabra, escriba la primera letra de cada palabra en mayúsculas. Los nombres
numeroMarchasymarchaActualsom ejemplos de este convenio. Si su variable almacena un valor constante, comostatic final int NUM_MARCHAS = 6, el convenio cambia ligeramente, aconsejando escribirla toda en mayúsculas, separando las palabras con el guión bajo. Por convenio el guión bajo no se utiliza en ningún otro sitio.
ATENCIÓN: La traducción de esta documentación es un esfuerzo personal y voluntario. NO es un documento oficial del propietario de la tecnología Java, Oracle, ni está patrocinado por esta empresa.
Los documentos originales y actualizados (en inglés) están disponibles en: http://docs.oracle.com/javase/tutorial/. La versión disponible en este sitio es la publicada en Marzo de 2008 (más información en: "What's new and What's Old? The History of the Tutorial").
Dirige cualquier comentario, petición, felicitación, etc. a tutorialesjava@codexion.com.
Si quieres ayudar a mantener en funcionamiento esta web, colaborar con la traducción de estos documentos o necesitas que se traduzca algún capítulo en concreto puedes invitarme a un café: