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.
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.
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?
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”
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.
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
}
}
Obrigado, ao longo do tempo, vou pegando a pratica, mas entendi.