>> <<

Lenguaje Java

Funciones

Definición y uso

Las funciones en Java se definen con una estructura como la siguiente:

tipo_de_retorno nombre_funcion(tipo_param1 nombre_param1, tipo_param2 nombre_param2...)
{
    Código de la función
}

El tipo de retorno puede ser cualquiera: un tipo simple (int, float), un array, un struct, un objeto, una lista... En el caso de no tener que devolver nada, usamos el tipo void.

Esta función no devuelve nada, y muestra un mensaje de saludo al nombre que recibe como parámetro:

void saludar(string nombre)
{
    System.out.println("Hola, " + nombre);
}

Esta otra función devuelve el resultado de sumar los dos parámetros que recibe:

int sumar(int num1, int num2)
{
    return num1 + num2;
}

También hay que tener en cuenta que en Java todas las funciones van englobadas en clases. Dependiendo de desde dónde se quiera utilizar la función, quizá sea necesario añadir una serie de modificadores de acceso a la función. Por ejemplo, si queremos poder utilizar la función desde cualquier parte del código, lo normal es que esa función sea pública y estática:

public static int sumar(int num1, int num2)
{
    return num1 + num2;
}

Para utilizar una función en Java, ponemos su nombre y le pasamos los parámetros entre paréntesis:

public static void main(String[] args)
{
    int resultado = sumar(3, 2);
    System.out.println(resultado);
}

Paso de parámetros por valor y por referencia

Por defecto, como en casi cualquier lenguaje, los tipos simples (enteros, reales, caracteres...) se pasan siempre por valor, y los tipos compuestos (arrays, structs, objetos, listas...) se pasan por referencia. Esto significa que no podemos modificar de forma permanente el valor de los parámetros simples, pero sí el contenido de los parámetros compuestos.

public static void unaFuncion(int numero, int[] numeros)
{
    numero = numero + 1;     // El cambio se pierde al salir de la función
    numeros[0] = 1;          // El cambio permanece al salir de la función
}

No existe forma, a diferencia de C, C++ o C#, de pasar tipos simples por referencia en Java. Si queremos poder modificar el valor de un dato simple, lo recomendable es que la función devuelva el dato modificado, para poderlo reasignar a la variable:

public static int otraFuncion(int numero)
{
    return numero + 1;
}

public static void main(String[] args)
{
    int valor = 3;
    valor = otraFuncion(valor);
    // Aquí valor es 4
}

Variables locales y globales

A la hora de definir variables, es importante tener en cuenta el ámbito donde se van a aplicar:

Sobre esta base existen algunos matices, como por ejemplo la visibilidad de la variable. Una variable pública, por ejemplo, puede ser visible fuera de la clase, mientras que una variable que no sea estática no puede ser accedida desde métodos estáticos.

(C) NachoIB, 2020 - contacto.lenguaj.es@gmail.com