Métodos en Java


Un método en Java es un conjunto de instrucciones definidas dentro de una clase, que realizan una determinada tarea y a las que podemos invocar mediante un nombre.

Algunos métodos que hemos utilizado hasta ahora:
  • Math.pow()
  • Math.sqrt()
  • Character.isDigit()
  • System.out.println();
En la imagen vemos la llamada al método Math.pow para que realice la operación de elevar 3 a 7. También en la instrucción siguiente se está haciendo uso del método println para mostrar el valor de x.

Cuando se llama a un método, la ejecución del programa pasa al método y cuando éste acaba, la ejecución continúa a partir del punto donde se produjo la llamada.

En la imagen se muestra el flujo de ejecución del programa cuando se produce la llamada al método Math.pow: En la llamada al método le enviamos los valores con los que tiene que realizar la operación. La ejecución del programa continúa dentro del método. Su tarea en este caso es realizar la operación de elevar 3 a 7. Cuando termina devuelve el resultado al punto donde se invocó el método. La ejecución continúa en el método main desde el punto donde se produjo la llamada. 
Utilizando métodos:
  • Podemos construir programas modulares.
  • Se consigue la reutilización de código. En lugar de escribir el mismo código repetido cuando se necesite, por ejemplo para validar una fecha, se hace una llamada al método que lo realiza.
Cuando trabajamos con métodos debemos tener en cuenta lo siguiente:
  • En Java un método siempre pertenece a una clase. No podemos escribir métodos fuera de una clase.
  • No podemos escribir métodos dentro de otros métodos.
  • Todo programa java tiene un método llamado main. La ejecución del programa empieza en este método. El método main es el punto de entrada al programa y también el punto de salida.
  • Un método tiene un único punto de inicio, representando por la llava de inicio {
  • La ejecución de un método termina cuando se llega a la llave final } o cuando se ejecuta una instrucción return.
  • La instrucción return puede aparecer en cualquier lugar dentro del método, no tiene que estar necesariamente al final. 
  • Cuando un método finaliza, la ejecución del programa continúa a partir del punto donde se produjo la llamada al método. 
  • Desde dentro de un método se puede a su vez invocar a otro método.


1. ESTRUCTURA GENERAL DE UN MÉTODO JAVA
La estructura general de un método Java es la siguiente:
[especificadores] tipoDevuelto nombreMetodo([lista parámetros]) [throws listaExcepciones]          
{
    // instrucciones
   [return valor;]
}
Los elementos que aparecen entre corchetes son opcionales.

especificadores (opcional): determinan el tipo de acceso al método. Se verán en detalle más adelante.

tipoDevuelto: indica el tipo del valor que devuelve el método. En Java es imprescindible que en la declaración de un método, se indique el tipo de dato que ha de devolver. El dato se devuelve mediante la instrucción return. Si el método no devuelve ningún valor este tipo será void.
nombreMetodo: es el nombre que se le da al método. Para crearlo hay que seguir las mismas normas que para crear nombres de variables.
Lista de parámetros (opcional): después del nombre del método y siempre entre paréntesis puede aparecer una lista de parámetros, también llamados argumentos, separados por comas. Estos parámetros son los datos de entrada que recibe el método para operar con ellos. Un método puede recibir cero o más argumentos. Se debe especificar para cada argumento su tipo. Los paréntesis a continuación del nombre del método son obligatorios aunque estén vacíos.
throws listaExcepciones (opcional): indica las excepciones que puede generar y manipular el método.
return: se utiliza para devolver un valor. Algunos aspectos importantes sobre la palabra clave return en un método:

  • La palabra clave return va seguida de una expresión que será evaluada para saber el valor de retorno. Esta expresión puede ser compleja o puede ser simplemente una variable de tipo primitivo o una constante.
  • El tipo del valor de retorno debe coincidir con el tipoDevuelto que se ha indicado en la declaración del método.
  • Si el método no devuelve nada (tipoDevuelto = void) la instrucción return es opcional.
  • Un método puede devolver un tipo primitivo, un array, un String o un objeto.
  • La instrucción return puede aparecer en cualquier lugar dentro del método.
  • La ejecución de un método termina cuando se llega a su llave final } o cuando se ejecuta la instrucción return.
2. IMPLEMENTACIÓN DE MÉTODOS EN JAVA
Pasos para implementar un método:
1.     Describir lo que el método debe hacer.
2.     Determinar las entradas del método, es decir, lo que el método recibe.
3.     Determinar los tipos de datos de las entradas.
4.     Determinar lo que debe devolver el método y el tipo del valor devuelto.
5.     Escribir las instrucciones que forman el cuerpo del método.
6.     Prueba del método: diseñar distintos casos de prueba.
Ejemplo de método: método llamado sumar que recibe dos números enteros y calcula y devuelve su suma.
import java.util.Scanner;

public class Metodos1 {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int numero1, numero2, resultado;
        System.out.print("Introduce primer número: ");                                             
        numero1 = sc.nextInt();
        System.out.print("Introduce segundo número: ");
        numero2 = sc.nextInt();
        resultado = sumar(numero1, numero2);
        System.out.println("Suma: " + resultado);
    }

    //método sumar
    public static int sumar(int a, int b){
           int c;
           c = a + b;
           return c;
    }

}

El método se llama sumar. Recibe dos números enteros a y b que son los parámetros de entrada. El método devuelve un valor de tipo int.


El flujo de ejecución del programa es el siguiente:
  1. En el método main cuando se produce la llamada al método sumar, los valores de las variables numero1 y numero2 se copian en las variables a y b respectivamente. Las variabels a y b son los parámetros del método. 
  2. El flujo de ejecución del programa pasa al método sumar.
  3. El método suma los dos números y guarda el resultado en c. 
  4. El método devuelve mediante la instrucción return la suma calculada.
  5. Finaliza la ejecución del método.
  6. El flujo de ejecución del programa continúa en el método main a partir de dónde se produjo la llamada al método sumar.
  7. El valor devuelto por el método es lo que se asigna a la variable resultado en el método main
Si un método devuelve un valor, como sucede en el método sumar, la llamada al método puede estar incluida en una expresión que utilice el valor devuelto.
En el ejemplo anterior, el método sumar devuelve un valor entero que después vamos a mostrar. En este caso podríamos haber hecho la llamada al método directamemte dentro del System.out.println:
System.out.println("Suma: " + sumar(numero1, numero2));
Ejemplo de programa Java que contiene un método con varios return:
Programa que lee por teclado un año y calcula y muestra si es bisiesto. Para realizar el cálculo se utiliza un método llamado esBisiesto.
El método esBisiesto tiene un parámetro de tipo entero llamado a. Será el encargado de recibir el valor del año a comprobar si es bisiesto o no. El método devuelve un valor de tipo boolean. Devuelve true si el año recibido es bisiesto y false si no lo es.
Como el método devuelve un dato de tipo boolean se puede llamar dentro de una instrucción if. 
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int año;
        System.out.print("Introduce año: ");
        año = sc.nextInt();
        if(esBisiesto(año)){  //llamada al método
           System.out.println("Bisiesto");
        }else{
           System.out.println("No es bisiesto");
        }
    }

    /*
     * método que calcula si un año es o no bisiesto                                               
     */     
    public static boolean esBisiesto(int a){    
        if(a%4==0 && a%100!=0 || a%400==0)
           return true;
        else
           return false;
    }

}
Flujo de ejecución:
  1. En el método main se llama al método esBisiesto dentro de la instrucción if.
  2. El valor de la variable año se copia en la variable a.
  3. El flujo de ejecución pasa al método esBisiesto.
  4. El método comprueba si el año recibido es o no bisiesto.
  5. El método devuelve true si el año es bisiesto o false si no lo es.
  6. Finaliza la ejecución del método.
  7. El flujo de ejecución continúa en el método main en la instrucción if donde se produjo la llamada al método.
  8. El valor true o false devuelto por el método es lo que determina si la condición es cierta o no.

Ejemplo de programa Java: Método que no devuelve ningún valor. 
El método cajaTexto tiene un parámetro de tipo String. 
El String que recibe lo muestra por pantalla rodeado con un borde.
Este método no devuelve nada, solo se limita a mostrar el String por pantalla.
Cuando un método no devuelve nada hay que indicar void como tipo devuelto.
Como el métono no devuelve nada no es necesario escribir la sentencia return.
El método acaba cuando se alcanza la llave final.

import java.util.Scanner;

public class MetodoVoid {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String cadena;
        System.out.print("Introduce cadena de texto: ");
        cadena = sc.nextLine();
        cajaTexto(cadena); //llamada al método
    }

    // método que muestra un String rodeado por un borde 
    public static void cajaTexto(String str){
            int n = str.length(); //longitud del String
            for (int i = 1; i <= n + 4; i++){ //borde de arriba
                 System.out.print("#"); 
            }
            System.out.println();
            System.out.println("# " + str + " #"); //cadena con un borde en cada lado              
            for (int i = 1; i <= n + 4; i++){ //borde de abajo
                 System.out.print("#"); 
            }
            System.out.println();
    }

}

47 comentarios:

  1. Un videotutorial interesante sobre HERENCIA:
    http://www.youtube.com/watch?v=3WNu1vuc-aw

    ResponderEliminar
  2. En un 93% tus explicaciones son excelentees! aprendí muchas cosas nuevas(:

    ResponderEliminar
  3. son geniales tus ejercicios. Sigue asi que ayudas a mucha gente!

    ResponderEliminar
  4. gracias primor me siento jkbvjkzxvbzjkxv

    ResponderEliminar
  5. 10 EN APTITUDES
    10 EN HONESTIDAD
    Y SAQUE SUS RUBRICAS-

    ResponderEliminar
  6. como podria crear un metodo nuevo que no este en las librerias de java? ¿Es posible?

    ResponderEliminar
  7. en el de la suma, como concateno el resultado de la suma fuera del metodo!!! lo quiero concatenar en el main pero me dice que la variable no existe!!!
    AYUDA!!!

    ResponderEliminar
  8. Hola, cuando quiero leer tipo double me di cuenta que debo poner los decimales separados por coma, por ejemplo 3,4 en vez de 3.4 para que se puedan leer, eso es en todas las versiones de java???

    ResponderEliminar
  9. podrian subir los ejercicios ke tienen en secuenciales en metodos?

    ResponderEliminar
  10. Muchas gracias esta explicacion me sirvio mucho sobre metodos.

    ResponderEliminar
  11. Muy bien explicado....!!!!

    ResponderEliminar
  12. crear un metodo que suprima un caracter cuantas veces se repita en una cadena

    ResponderEliminar
  13. Crear un metodo que convierta a mayuscula la primera y ultima palabra contenida en una cadena

    ResponderEliminar
  14. quien me ayuda le pagi e pasa su numero de cuenta y le deposito urgente porfa

    ResponderEliminar
  15. quien me ayuda le pagi e pasa su numero de cuenta y le deposito urgente porfa

    ResponderEliminar
  16. Necesito ayuda, estoy haciendo un programa en el cual necesito un método para obtener el seguiente caracter y no encuentro la manera.

    ResponderEliminar
  17. Alguien me podria explicar la diferencia entre clase y método?

    ResponderEliminar
  18. Gracias a un ejemplo que pusiste pude hacer mi tarea, gracias :D

    ResponderEliminar
  19. Amigo sugiereme el orden para seguir lo de POO y me suscribo a tu blog

    ResponderEliminar
  20. esta bueno esta cosa

    ResponderEliminar
  21. Buenísimo hermano, gracias por compartir tus conocimientos...

    ResponderEliminar
  22. hola sera que puedes ayudarme necesito un programa que me pida x cantidad de numeros y me muestre luego cuales son primos ,pares he impares
    el programa debe tener static y funciones.

    gracias

    ResponderEliminar
  23. Gracias Enrique por tu saber y compartio

    ResponderEliminar
    Respuestas
    1. Gracias a ti por el comentario y por seguir el blog.

      Eliminar
  24. Es genial, fantástico. Gracias por esta información <3

    ResponderEliminar
  25. Ayuda con un metodo para guardar nombres y otro para modificarlos en un arreglo desde consola

    ResponderEliminar
  26. Por favor tengo un ejercicio en java con metodos: dice crear un nuevo proyecto x, luego crear una clase aritmetica y dentro de la clase deben ir 3 metodos; resta, multiplicacion y division.
    La division debe tener condicionante

    ResponderEliminar
  27. Los metodos en Java son d mucha utilidad para efectuar operaciones matematicas y otros tipos de operaciones en programacion visual

    ResponderEliminar
  28. Me está ayudando mucho. Gran trabajo

    ResponderEliminar
  29. Se puede construir una función en java para obtener el dijito mayor y menor de numeros enteros entrada 238912
    Salidas:entras 9
    Salidas es 1

    ResponderEliminar
  30. Crear un arreglo unidimensional de tamaño n dado como parámetro.
    Crear un arreglo bidimensional de tamaño MxN dados como parámetros.
    Imprimir un arreglo unidimensional dado como parámetro.
    Imprimir un arreglo bidimensional dado como parámetro.
    Sumar los elementos de un arreglo unidimensional dado como parámetro.
    Sumar los elementos de una columna de un arreglo bidimensional dado como parámetro; especifique también la columna del arreglo como parámetro.
    Clase principal controladora para probar los métodos llamados mediante menú

    ResponderEliminar
  31. si me pueden ayudar con ese jercicio

    ResponderEliminar
  32. 2) Escriba un programa que calcule la expresión siguiente para un valor de x, mientras el último sumando sea mayor que 0.0001.
    tengo este problema me podrian ayudar por favor

    ResponderEliminar