Na verdade eu já li várias apostilas, inclusive um da caelum que foi postada aqui no fórum, livro do Deitel e continuo sem entender. Fiz a busca no fórum antes de criar este tópico.
Tenho várias dúvidas e se possível, respondam o que puderem.
array é uma maneira genérica de se referir a matrizes e vetores?
Por que em java, funções e procedimentos são chamados de método?
[code]class Inverter{
public static void main(String args[]){
Scanner s=new Scanner(System.in);
int a [] = new int[6];
int b [] = new int[6];
for(int i=0;i<a.length;i++){
a[i]= s.nextInt();
}/* 3ª dúvida. Suponho que esse primeiro bloco seja o principal. Ele vai chamar algum método?*/[/code]
[code]//Continuação do programa.
inverte(a,b);
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
} /*4) Esse bloco vai chamar ou ser chamado por quem?*/[/code]
[code]//Continuação do programa.
static void inverte(int a[], int b[] ){
for(int i=0;i<a.length;i++){
b[a.length -1 -i] = a[i];
/*5) O que significa b [a.length -1 -i] ? */
"1) array é uma maneira genérica de se referir a matrizes e vetores? "
Sim. Mais especificamente, vetor = array. Já a matriz é um vetor/array contendo outro vetor/array.
Por que em java, funções e procedimentos são chamados de método?
Não tenho certeza mas acredito que é só uma convenção. Não tem significado especial.
3ª dúvida. Suponho que esse primeiro bloco seja o principal. Ele vai chamar algum método?*/
Sim. Você está dizendo que o vetor a na posicao i guardara um número que vem do metodo nextInt(); Um metodo sempre tem esse corpo: algumaCoisa();
/4) Esse bloco vai chamar ou ser chamado por quem?/
Você está chamando o metodo inverte(a, b);. Dê uma olhada na assinatura do metodo, que é: static void inverte(a[], b[]); Ele diz, que quem quer que o chame, tem que passar dois vetores como argumento. Caso contrário, seu código sequer compilará.
inverte(a,b); // a e b devem ser vetores/arrays
Com isso, ele pára na posicao que está fazendo a chamada, e vai executar o bloco de codigo do metodo invete(a,b) que será o for(…) que depois de executado, retorna para o metodo que o chamou.
*5) O que significa b [a.length -1 -i] ? */
length é uma variavel que guarda o tamanho de um vetor/array. No laço for, você está dizendo que tudo que está dentro de seu corpo será repetido enquando i for menor que o tamanho do array, ou: i < seuVetor.length.
Array é um agrupamento de dados de um certo tipo. Na minha opinião é errado dizer que um array é um vetor, pois um vetor em matemática possui operações (soma de vetores, etc) e um array não. Um array é um array e pronto, é uma estrutura da dados que armazena valores do mesmo tipo. Idem a matrizes. Existe algum método que permite que seja calculado o determinante de um array de arrays (“matriz”)? Não, sendo assim, um array de arrays não é uma matriz. Com os arrays consegue-se representar tais tipos de “entidades” matemáticas, mas isso não implica que um array seja uma delas. Como falei é minha opinião pessoal… Acho feio chamar arrays de vetor ou de matriz, mas de fato é uma forma talvez mais didática de se referir ao mesmo.
Porque Java é orientado a objetos! Método da a idéia de operação, de algo que uma classe faz.
Sim, a execução propriamente dita das classes normalmente estão contidas em métodos.
s.nextInt() chama o método nextInt de Scanner. Mesmo um “println” que você usa é um método.
Vai chamar inverte.
Diz que vc está referenciando a posição a.length (tamanho de a) menos 1 menos i (que é o valor atual do contador do for).
Não quero parecer chato nem nada, mas vendo isso me surgiu uma dúvida também.
O lenght não seria um método também? Não entendi porque não tem “()” de parâmetros na frente dele.
Abraço.