Conteúdo do Curso
Java Avançado
Java Avançado
Prática de Métodos
Prática
Métodos podem ser desafiadores de entender, então este capítulo fornece exemplos de vários métodos em ação, mostrando como funcionam, onde utilizá-los e como escrever e combinar múltiplos métodos de forma eficaz.
Exemplo 1
Vamos começar com um método que recebe um array do tipo int
e o inverte, de modo que o último valor se torne o primeiro e o primeiro se torne o último:
Main.java
package com.example; public class Main { static int[] flipIntArray(int[] array) { int[] result = new int[array.length]; int index = 0; for (int i = array.length - 1; i >= 0; i--) { result[index] = array[i]; index++; } return result; } static void printIntArrayToTheConsole(int[] array) { for (int element : array) { System.out.print(element + " "); } System.out.println(); } public static void main(String[] args) { // do not modify the code below int[] firstArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int[] secondArray = {0, 2, 4, 6, 8, 10, 12, 14, 16}; printIntArrayToTheConsole(flipIntArray(firstArray)); printIntArrayToTheConsole(flipIntArray(secondArray)); } // do not modify the code above }
-
Primeiro, observe o método
flipIntArray
na linha 4, que utiliza um loop que conta a partir do final do array e armazena seus valores em um novo array do mesmo tamanho. Há também uma variávelindex
na linha 6 que é incrementada para armazenar os valores no arrayresult
; -
Em seguida, você pode ver o método na linha 14 do capítulo anterior, que utilizo para imprimir o array em apenas uma linha de código;
-
Agora, vamos para algo interessante. Você pode ver nas linhas 25-26 que estou passando um método como parâmetro dentro de outro método. Isso ocorre porque estou utilizando um método que retorna
int[]
dentro de um método que recebeint[]
como parâmetro, economizando assim a memória alocada para criação de variáveis. Podemos ver que nossos métodos estão funcionando e exibindo os valores corretos.
Exemplo 2
Suponha que precisamos escrever um método que calcule o fatorial, recebendo uma variável inteira como entrada.
Main.java
package com.example; // do not modify the code below this comment public class Main { // method to calculate the factorial of a number static int calculateFactorial(int input) { int result = 1; // loop to calculate factorial by multiplying each number from 1 to input for (int i = 1; i <= input; i++) { result = result * i; } // return the final result of the factorial calculation return result; } public static void main(String[] args) { // initializing the first number for factorial calculation int first = 5; // initializing the second number for factorial calculation int second = 7; // initializing the third number for factorial calculation int third = 4; // calculating and printing the factorial of the first number System.out.println("Factorial of the first number = " + calculateFactorial(first)); // calculating and printing the factorial of the second number System.out.println("Factorial of the second number = " + calculateFactorial(second)); // calculating and printing the factorial of the third number System.out.println("Factorial of the third number = " + calculateFactorial(third)); } }
Neste exemplo, escrevemos um método que multiplica a variável acumuladora pelos números de 1
até o número fornecido para calcular o fatorial. É uma abordagem direta, e você pode ver como utilizamos esse método várias vezes no método main
, o que economiza espaço e melhora a legibilidade do código.
Em seguida, usamos nosso método dentro do System.out.println
porque o método retorna um valor int
.
Exemplo 3
Vamos escrever um método que cria uma abreviação a partir de um array de strings.
Main.java
package com.example; // do not modify the code below this comment public class Main { // method to create abbreviation by taking first letter of each word static String makeAbbreviation(String[] input) { StringBuilder result = new StringBuilder(); // iterate through each word and append the first letter to result for (String word : input) { result.append(word.toUpperCase().charAt(0)); } // return the abbreviation as a string return result.toString(); } public static void main(String[] args) { // initializing arrays with words for abbreviation String[] firstArray = {"united", "nations"}; String[] secondArray = {"North", "Atlantic", "Treaty", "Organization"}; String[] thirdArray = {"Oh", "my", "God"}; // printing abbreviation for the first array System.out.println(makeAbbreviation(firstArray)); // printing abbreviation for the second array System.out.println(makeAbbreviation(secondArray)); // printing abbreviation for the third array System.out.println(makeAbbreviation(thirdArray)); } }
Neste método, utilizamos a classe StringBuilder
para chamar o método append()
e adicionar a primeira letra maiúscula a uma string inicialmente vazia. Dessa forma, iteramos por cada elemento do array, pegamos a letra na posição zero (a primeira letra de cada palavra), convertendo-a para maiúscula usando o método toUpperCase()
e adicionando ao nosso resultado com o método append()
. Por fim, utilizamos o método toString()
para converter nosso StringBuilder
em String
.
1. O que é um valor de retorno em um método?
2. O que um método void
retorna?
3. Um método pode ser utilizado dentro de outro método?
Obrigado pelo seu feedback!