[Duvida] return

Boa tarde, terminei uma aula, e fiquei com duvida sobre o return, eu sei que ele retorna a alguma coisa, mas fiquei com duvida em que, como funciona?

O que você quer dizer com “como funciona” ? Esse mecanismo é interno na JVM, ou seja, a própria máquina virtual do Java toma conta disso, possivelmente através de passagem de ponteiros de memória.

Se não é isso ou se quer saber no detalhe (o que é razoavelmente complicado), seja mais claro.

Abraço.

1 curtida

eu nao endendi como ele funciona, por exemlo: eu calculo em uma classe que tem retorno int, esse retorno é uma soma, e eu sei que tem que usar return no final “return soma;”, isso que quero saber.

Classes não possuem retorno, apenas métodos possuem.

Considere a classe abaixo:

public class Calculadora {
    public int soma(int n1, int n2) {
        return n1 + n2;
    }
}

Observe que você tem um método chamado soma. O mesmo deve retornar um inteiro. E, para isso, recebe dois inteiros como parâmetro.
Como você deve saber, na maioria dos casos, quando você soma um inteiro com outro inteiro o resultado é outro inteiro.
Assim sendo, o retorno n1 + n2 está correto.

Outro exemplo:

public double dividir(int n1, int n2) {
    if(n2 == 0) {
        return;
    }
    return n1/n2;
}

Opa, aqui temos um ponto interessante, a instrução return; isolada.
Como sabemos, não existe divisão por 0. Logo, se o segundo valor for 0, não temos nem por que continuar. A instrução return, sem nada, indica que aquele trecho de código não deve continuar a ser executado. Ela interrompe a execução do método.

Há mais detalhes a serem estudados sobre return, porém, por ora, é isso.

2 curtidas

obg.

vc, tem algum exercicio de return, para mim fazer?

Para eu, né fera? Que mim é outro pronome e deve ser usado em outro contexto. Não entendi, não acaba de terminar uma aula?

1 curtida

De uma forma geral, sem levar em conta uma linguagem de programação em particular, a instrução return é uma das formas de desvio do fluxo de execução do programa. Quando um programa está em execução ele possui um fluxo ‘padrão’ de execução, ou seja, a execução acontece na ordem que as linhas de código aparecem (geralmente). Quando você chama um método, esse fluxo ‘padrão’ é interrompido, o método invocado passa a ser executado, ou seja, altera-se o fluxo ‘padrão’ de execução. Quando o método invocado não tem retorno (é void), a volta ao fluxo ‘padrão’ é determinada pelo fim do bloco (em geral quando encontra o fechamento da chave ‘}’). No entanto, quando o método tem um retorno, a instrução return volta ao fluxo para o ‘padrão’ (imediatamente) ao mesmo tempo que ‘devolve’ um valor definido pelo método. Como em todas as linguagens o return finaliza a execução de funções, procedimentos ou métodos, é bastante utilizado para ‘finalizar’ um método sob certas condições, mesmo que seja um método sem retorno (void). Logo, de uma maneira geral, é uma instrução ou comando de desvio do fluxo ‘padrão’ de execução.

Fonte:
1 - Java como Programar 8, pág. 65; 81-83; 161.
2 - C Completo e Total 3 ed. Cap 3, pág. 61 - “Comandos de Controle do Programa”

1 curtida

quis falar que terminei uma aula, nao um curso.

so para ver seu eu entendi, com o return, eu consigo retornar o valor da soma por exemplo, para o metodo main ou alguma variavel que eu queira receber esse valor da soma, que esta em outra classe, e se fosse com void, nao seria possivel retornar o valor. isso ?

RESPONDER

Sim, em essência, é isso aí mesmo.

Você disse que concluiu uma aula. É de algum curso? Se sim, isso não foi explicado? Pois esses são conceitos bem iniciais de muitas linguagens. Se está num curso e não viu, possivelmente será abordado no futuro, ou então é um curso muito ruim.

Agora se viu e não entendeu de primeira, creio que as respostas até então são suficientes.

Abraço.

2 curtidas

Sim, é o curso “Maratona Java” do wiliam suane, tem algumas coisas que não entendo muito bem ai pesso ajuda.

Depende, retorna para o código que invocou (chamou) o método. Se a outra classe tem uma instância (objeto) da classe onde o método está definido, sim. Por exemplo, suponhamos que eu tenha uma classe Pessoa:

public class Pessoa {
	private String nome;
	
	/*
	* Métodos acessores e modificadores
	*/
	
	public void setNome(String nomeInformado){
		this.nome = nomeInformado;
	}
	
	public String getNome(){
		return nome;
	}
}

Se eu tiver uma classe que usa Pessoa:

public class Teste {
	public static void main(String[] args){
		Pessoa pessoa = new Pessoa(); //Instancia de Pessoa
		pessoa.setNome("Bastião"); //Método que define o nome da Pessoa
		
		System.out.println("Nome informado: " + pessoa.getNome()); //Método que retorna o nome da Pessoa
	}
}
1 curtida

Obrigado, ao longo do tempo, vou pegando a pratica, mas entendi.