Apuntes de Java 2: variables

En esta entrada veremos cómo funcionan las variables primitivas en java

Edward Hopper

archivado en: Java / Android / 4 mayo, 2015 / taller:

Sigo con esta recopilación literaturizada de mis apuntes personales sobre java. En esta entrada comenzaremos a ver cómo funcionan las clases y objetos en este lenguaje, un tema un poco complicado sobre el que volveré más adelante, y luego cómo se manejan las variables, que en java son algo distintas a las de javaScript, php y otros lenguajes menos sofisticados. 

Clases e instancias

En teoría, java es un lenguaje de programación orientado a objetos, aunque para uno que está acostumbrado a los objetos de javaScript, más bien parece un lenguaje orientado a clases. Una clase es un conjunto de datos que definen cómo debe ser o comportarse un objeto, que son las piezas que forman una aplicación. Es como una especie de superfunción que agrupa funciones, denominadas métodos, y variables, llamadas propiedades o atributos. Son los planos maestros que sirven para construir cualquier estructura específica.

Suele ponerse como ejemplo para explicar qué es una clase algún tipo de bicho, como los gatos. La clase gato reúne todas las propiedades que luego puede tener un gato en concreto, como el color, el sexo, las patas, la cola.... Y, además, tiene definido los métodos, las cosas que pueden hacer los gatos, como maullar, ronronear, zampar como limas...

class Gato {

propiedad color;

propiedad sexo;

método maullar {

decir "miau";

}

método ronronear {

decir "rnrnrnrnrnr";

}

}

A partir de la clase Gato, luego podemos crear tantos objetos, tantos gatos en particular, como necesitemos. Por ejemplo, uno puede ser negro y varón:

Gato gatoNegro = new Gato (negro, varón);

Y otra una gatita violeta:

Gato gataVioleta = new Gato (violeta, hembra);

Para crear una clase se utiliza la palabra reservada class y para crear un objeto el operador new con la siguiente sintaxis:

Nombre_de_la_clase Nombre_del_objeto = new Nombre_de_la_clase (parámetros);

Una vez creado un objeto, que es una «instancia» de la clase, podemos acceder a sus métodos utilizando la notación de puntos, tal y como hacemos con JavaScript:

Nombre_del_objeto.Nombre_del_metodo;

Así, por ejemplo, para que la gatita violeta maúlle habría que escribir:

gataVioleta.maullar();

Para acceder a las propiedades el sistema es el mismo...

gataVioleta.sexo;

gataVioleta.color = violeta;

Ahora podemos entender mejor qué hace la sentencia del post anterior:

System.out.println ("hola Mundo");

Estamos llamando al método println del objeto System.out pasándole como parámetro la cadena de texto "hola Mundo". Este método imprime los argumentos en pantalla añadiendo un salto de línea (ln).

Variables primitivas

En php y javaScript una misma variable puede almacenar valores de distinta naturaleza a lo largo del código. Por ejemplo, pueden empezar siendo de carácter numérico:

var miVariable = 3; // js

$miVariable = 4; // php

Y más adelante convertirlas en cadenas, arrays o cualquier otra cosa.

miVariable = "Haga Basin"; // js

$miVariable = [3, 4, 5]; // php

En java, por el contrario, es obligatorio definir su naturaleza cuando se declaran, ya que las variables son tipadas. Esto significa que, si indicamos que una variable es una cadena (tipo String) y luego tratamos de manejarla como un número, casca.

public static void main(String[] args) {

int numeroEntero;

numeroEntero = 33;

numeroEntero = "hagaBasin";

System.out.println (numeroEntero);

}

Type mismatch: cannot convert from String to int

Aunque esto puede parecer una lata para los que acostumbramos a trabajar con lenguajes asilvestrados, en realidad está muy bien, pues, aparte de que se mejora algo el rendimiento (bueno, más bien una miajilla inapreciable), el código gana en integridad y limpieza. No nos encontramos con variables declaradas por cualquier parte -con el problema que acarrea el hoisting de variables en js-, que ahora son una cosa, ahora otra... Sino que tenemos todo ordenadico al principio de la clase. El código es más limpio, claro y, por lo tanto, mantenible.

Como ocurre con otros lenguajes de programación, hay dos grandes tipos de variable: las que hacen referencia a un objeto, que serían las instancias para aclararnos, y las denominadas variables primitivas, que son las que estamos viendo en este post. Más o menos, las variables primitivas pueden ser del tipo:

  • String: cadenas de texto*
  • char: caracteres unicode de 16bits.
  • byte: número desde -128 a 127
  • short: número desde  -32768 a 32767
  • int: número desde -2147483648 a 2147483647
  • long: número inmenso.
  • float: número con decimales (separado por un .).
  • double: flotante con doble precisión.
  • boolean: true o false.

* String en realidad es un objeto de la clase String, de ahí que comience por mayúsculas, pero de esto hablaré más adelante.

** Hay otros tipos de variables, como los arrays, pero entrar en esas honduras teóricas es liarnos ahora más de la cuenta.

Por último, indicar que el ámbito de la variable está delimitado por el par de llaves inmediatamente superior a donde ha sido declarada. Esto queda claro con código.

Esto funcional, ya que numeroEntero está por encima del par de llaves del if y, por lo tanto, está accesible ahí dentro:

public static void main(String[] args) {

int numeroEntero = 33;

if ( numeroEntero == 33 ) {

int otroNumero = 22;

numeroEntero += otroNumero;

}

System.out.println (numeroEntero);

}

Pero esto casca porque otroNumero nace y muere entre las llaves del if.

public static void main(String[] args) {

int numeroEntero = 33;

if ( numeroEntero == 33 ) {

int otroNumero = 22;

}

numeroEntero += otroNumero;

System.out.println (numeroEntero);

}

Y esto, amigos míos, es otro punto positivo para java, aunque las nuevas variables de ecma 6 traen algo parecido.

Bonus: comentarios

Termino esta entrada con una referencia rápida a las tres maneras en que se escriben los comentarios en Java.

  • // para las líneas
  • /* */ un bloque
  • /** líneas que comienzan por un asterisco dentro de un bloque.

Estos últimos comentarios se usan para documentar el proyecto mediante una herramienta denominada javadoc. Algunos comentarios de documentación van precedidos por una @ que define determinadas «etiquetas».

Documentación de clases:

  • @author: el autor
  • @version: la versión
  • @see: referencias a otras clases

Documentación de métodos:

  • @param
  • @return
  • @exception
  • @throws

Sobre esto volveré más adelante, ahora me voy a sobar, que ya es tarde :P.

|| Tags: ,

valoración de los lectores sobre Apuntes de Java 2: variables

  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • 5 sobre 5 (1 votos)

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

3 respuestas a “Apuntes de Java 2: variables

  1. Fran el dijo:

    Muchas gracias de nuevo Marcos por esta ayuda con el Java. Poco a poco y de esta forma no parece tan terrible enfrentarse a ello.

    ¡¡¡Saludos!!!

  2. Valeriano el dijo:

    Estoy empezando a estudiar Java. Muchas gracias por tus explicaciones. Me has aclarado muchas cosas. Me gustaría seguir tu blog si es posible o contactar contigo.
    Gracias.

  3. Muchas gracias Valeriano, a ver si retomo esta serie de java, que últimamente solo escribo sobre javaScript.

    Suelo anunciar lo que publico en twitter. Desde ahí es fácil seguirme la pista : )