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.
1) array é uma maneira genérica de se referir a matrizes e vetores?
2) Por que em java, funções e procedimentos são chamados de método?
classInverter{publicstaticvoidmain(Stringargs[]){Scanners=newScanner(System.in);inta[]=newint[6];intb[]=newint[6];for(inti=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?*/
//Continuaçãodoprograma.inverte(a,b);for(inti=0;i<b.length;i++){System.out.println(b[i]);}/*4) Esse bloco vai chamar ou ser chamado por quem?*/
//Continuaçãodoprograma.staticvoidinverte(inta[],intb[]){for(inti=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.
Espero ter ajudado!
Abraço!
davidbuzatto
Minha vez
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).
Abraço!
Andre_Brito
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.
Ironlynx
Noop.É um atributo com a quantidade de elementos que cabe nesse array.
Vc deve estar confundindo com o método length() da classe String.