Estou com dúvida em procedure, na linguagem Pascal, estou confundindo passagem por parâmetro e passagem por referência. Vocês podem me ajudar sobre e como posso usar procedure em JAVA?
Duvida Pascal
3 Respostas
Procedures em Java basicamente são métodos sem retorno (void), exemplo:
public class TesteProcedure {
public static void main(String[] args) {
//faz algo sem return...
}
}
Já o caso de passagem de parâmetros em Java, como ele não é igual C puro que permite manipular ponteiros diretamente, tudo o que for objeto (new AlgumaClasse), quando passado para um método será por referência… ex:
Objeto obj = new Objeto();
outroObj.metodo(obj); //teve new...
Já a passagem por valor (e não parâmetro como vc disse, já que parâmetro vale tanto para valor quanto para referência…), é tudo o que for primitivo (e não usa new AlgumaClasse): byte, char, short, int, float, long, double e boolean, atenção não confundir com Byte, Character, Short, Integer, Float, Long, Double e Boolean (essas são classes…) ex:
int a = 10;
obj.metodo(a); //não teve new
Apenas complementando, o próprio método main além de atuar como procedure, espera um parâmetro por referência (String[] args)… se fosse assim:
public static void main(int args) {
//faz algo...
}
Seria por valor, pegou?
Ia me esquecendo, caso vc veja algo assim:
public void metodo(int[] array) {
//faz algo...
}
Apesar de ser primitivo (int lembra?), nesse caso é passado por referência, já que para o java qualquer array (vetor), é um objeto, mesmo sendo de primitivos… não vou aprofundar muito nisso pra não te dar nó, mas fica esperto apenas nesses casos ok?
Espero ter ajudado
O equivalente à procedures são métodos sem retorno, ou seja, métodos void.
Pascal possui functions e procedures. Java não
Java vc tem apenas metodos, que retornam algo ou nada ( void )
Mas o metodo esta ligado a uma instancia ou classe ( no caso de metodo static )
vc pode chamar metodos dentro da classe / instancia sem os qualificadores e isso emula function/ procedure na sua sintaxe, mas fora disso vc sempre tem que fazer algo como
instance.metodo()
ou
Classe.metodo()
tem as lambdas que podem ser uma exceção, mas no geral é isso.