O que são vetores e como são utilizados no Java?
Vetores são estruturas de dados que armazenam usualmente uma quantidade fixa de dados de um certo tipo; por esta razão, também são conhecidos como estruturas homogêneas de dados.
Internamente, um vetor armazena diversos valores, cada um associado a um número que se refere à posição de armazenamento, e é conhecido como índice. Os vetores são estruturas indexadas, em que cada valor que pode ser armazenado em uma certa posição (índice) é chamado de elemento do vetor.
Cada elemento do vetor pode ser utilizado individualmente de forma direta, ou seja, pode ser lido ou escrito diretamente, sem nenhuma regra ou ordem preestabelecida, fazendo dos vetores estruturas de dados de acesso aleatório.O número de posições de um vetor corresponde ao tamanho que ele tem; assim, um vetor de tamanho 10 tem esse número de elementos, isto é, pode armazenar até dez elementos distintos. Os diferentes elementos de um vetor são distinguidos unicamente pela posição que ocupam no vetor. Cada posição de um vetor é unicamente identificada por um valor inteiro positivo, linear e sequencialmente numerado.
a[i], corresponde ao i-ésimo elemento do vetor a, sendo que o valor da variável i deve pertencer ao intervalo dos índices do vetor: ((i >= 0) && (i < a.length)).
O Java como as linguagens C e C++ são linguagens com vetores zero-based, isto é, as posições do vetor iniciam a numeração a partir do valor 0, portanto, um vetor de tamanho 10 teria índices iniciados em 0 prosseguindo até o 9.
Entenda como funciona o JAVA neste vídeo
Declarando Variáveis do Tipo Vetor
Na declaração de vetores deverão ser fornecidas três informações: 1) o nome do vetor, 2) o número de posições do vetor (seu tamanho), e 3) o tipo de dado que será armazenado no vetor. A declaração de um vetor para "inteiros", de nome "vetor", em Java:
int vetor[]; // declaração do vetor
Podemos notar que as declarações de vetores são semelhantes às declarações de variáveis, os elementos sintáticos que diferenciam as variáveis do tipo vetor das outras variáveis são os colchetes. Embora declarado, o vetor não está pronto para uso, sendo necessário reservar espaço para seus elementos (uma operação de alocação de memória).
vetor = new int[10]; // alocação de espaço para vetor
Na alocação de espaço, não repetimos os colchetes e utilizamos o operador new (uma palavra reservada da linguagem) para reservar espaço para 10 (dez) elementos do tipo int.
As duas declarações podem ser combinadas em um única, mais compacta:
int vetor[] = new int[10]; // declaração combinada
Exemplos de Declarações de Variáveis do Tipo Vetor
Na linguagem Java um vetor é uma "classe, portanto, deve-se utilizar o método new , que ativa o método construtor correspondente, para criar instâncias, ou exemplares, da classe vetor do tipo selecionado (int, double, float, char, String, entre outros), por exemplo:
a) declarando um vetor para armazenar 10 números inteiros
int nro = new int[10];
b) declarando um vetor para armazenar 10 valores do tipo real (ou monetários)
double salario = new double[10];
c) declarando um vetor para armazenar o nome dos 12 meses do ano
String mes = new String[12];
Em síntese
int n = 10; // tamanho do vetor
int v[] = new int[n]; // declaração e alocação de espaço para o vetor "v"
int i; // índice ou posição
// processando os "n" elementos do vetor "v"
for (i=0; i<n; i++) {
v[i] = i; // na i-ésima posição do vetor "v" armazena o valor da variável "i"
}
Representação interna:
v[0] | v[1] | v[2] | v[3] | v[4] | v[5] | v[6] | v[7] | v[8] | v[9] |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
Aplicação Java exemplificando a utilização do tipo de dados vetor:
import java.util.Scanner;
public class Exemplo1 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
int n = 10; // tamanho do vetor
int v[] = new int[n]; // declaração do vetor "v"
int i; // índice ou posição
// Entrada de Dados
for (i=0; i<n; i++) {
System.out.printf("Informe %2do. valor de %d: ", (i+1), n);
v[i] = ler.nextInt();
}
// Processamento: somar todos os valores, definir o maior e o menor valor
int soma = 0;
int menor = v[0]; // v[0] = 1o. valor armazenador no vetor "v"
int maior = v[0];
for (i=0; i<n; i++) {
soma = soma + v[i];
if (v[i] < menor)
menor = v[i];
if (v[i] > maior)
maior = v[i];
}
// Saída (resultados)
System.out.printf("\n");
for (i=0; i<n; i++) {
if (v[i] == menor)
System.out.printf("v[%d] = %2d <--- menor valor\n", i, v[i]);
else if (v[i] == maior)
System.out.printf("v[%d] = %2d <--- maior valor\n", i, v[i]);
else System.out.printf("v[%d] = %2d\n", i, v[i]);
}
System.out.printf("\nSoma = %d\n", soma);
}
}
Executando a aplicação tem-se os seguintes resultados:
A classe Math contém diversos métodos estáticos (não exige uma instância da classe para utilização) destinados a operações numéricas, citando:
- static double random(): retorna um valor, do tipo double, "aleatório" no intervalo de 0.0 até 1.0;
- static long round(double): retorna um número do tipo long mais próximo (ou arredondado) do valor do tipo double do argumento.
A utilização combinada dos métodos "random" e "round" possibilita a geração de números aleatórios, como por exemplo:
a[i] = (int)Math.round(Math.random() * 10);
// gera um número inteiro aleatório no intervalo de 0 até 10
Entendendo a atribuição:
- Math.random() retorna um número aleatório, do tipo double, no intervalo de 0.0 até 1.0;
- Math.random() * 10 tem como resultado um número no intervalo de 0.0 até 10.0;
- Math.round(Math.random() * 10) retorna um número do tipo long mais próximo (ou arredondado) do resultado;
- (int) faz a conversão (ou coerção, em inglês "cast") do tipo long para o tipo int.
Inicialização de vetores
Java permite a inicialização de vetores no momento da declaração, por exemplo:
String nome[] = {"Juca Bala", "Maria da Silva", "Marcos Paqueta"};
Isso significa que nome[0] terá o valor Juca Bala, nome[1] terá o valor Maria da Silva, nome[2] terá o valor Marcos Paqueta. Nota-se que não é necessário indicar o tamanho do vetor e também fazer a alocação de espaço através do operador new. O tamanho do vetor será conhecido através do campo length como mostra a aplicação a seguir:
A inicialização de vetores na declaração também permite indexar valores predefinidos como no caso das informações relacionadas aos meses do ano. Veja um exemplo na próxima aplicação Java:
Estrutura for aprimorada
Utilizada para percorrer os elementos de um vetor sem utilizar um contador:
for (parâmetro: nomeDoVetor) {
instrução;
}
Onde "parâmetro" tem duas partes: a) um tipo (deve corresponder ao tipo dos elementos no vetor), e b) um identificador, por exemplo: int nro.
O identificador representa os valores sucessivos do vetor nas sucessivas iterações da instrução for. Veja um exemplo na próxima aplicação Java:
Parte II Veja abaixo a segunda parte do artigo - Agora as partes I a III foram compiladas em um único artigo. Bons estudos :)
Vetores em Java – Parte 2
<Na primeira parte do artigo sobre Vetores em Java foram apresentadas as características básicas do tipo de dados vetor, como declarar e exemplos de variáveis do tipo vetor e uma aplicação Java exemplificando a utilização de vetores. Nesta segunda parte do artigo serão abordados: números aleatórios, inicialização de vetores com valores predefinidos e a estrutura "for" aprimorada.
A classe Math contém diversos métodos estáticos (não exige uma instância da classe para utilização) destinados a operações numéricas, citando:
- static double random(): retorna um valor, do tipo double, "aleatório" no intervalo de 0.0 até 1.0;
- static long round(double): retorna um número do tipo long mais próximo (ou arredondado) do valor do tipo double do argumento.
A utilização combinada dos métodos "random" e "round" possibilita a geração de números aleatórios, como por exemplo:
a[i] = (int)Math.round(Math.random() * 10); // gera um número inteiro aleatório no intervalo de 0 até 10
Entendendo a atribuição:
- Math.random() retorna um número aleatório, do tipo double, no intervalo de 0.0 até 1.0;
- Math.random() * 10 tem como resultado um número no intervalo de 0.0 até 10.0;
- Math.round(Math.random() * 10) retorna um número do tipo long mais próximo (ou arredondado) do resultado;
- (int) faz a conversão (ou coerção, em inglês "cast") do tipo long para o tipo int.
- Java 7:
Site com informações sobre o lançamento do Java 7 - JavaFX:
Site para fazer download de aplicações JavaFX - JFXtras:
Site do projeto JFXtras - O Que é JPA?:
Dominar a persistência de dados é uma necessidade indispensável aos programadores. Sem esse conhecimento nossas aplicações não terão a capacidade de armazenar e recuperar os dados por ela manipulados. - Preparando o ambiente para programar em Java:
Neste curso você aprenderá a preparar seu ambiente para programar em Java. Veremos aqui o que é necessário instalar e como proceder para desenvolver aplicações com essa linguagem. - Criando meu primeiro projeto no Java:
Neste curso você aprenderá a criar o seu primeiro programa com Java, e não, ele não será um simples “Hello, World!”. :) Para isso, vamos começar ensinando como instalar o Java e preparar o ambiente de desenvolvimento. - Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
A aplicação Java a seguir implementa o método de ordenação por seleção ou Selection Sort:
Com este artigo concluímos nossa abordagem sobre vetores unidimensionais em Java.
Parte III
Vetores em Java – Parte 3
Nos dois primeiros artigos sobre Vetores em Java foram abordados os vetores unidimensionais. Neste terceiro e último artigo serão abordados os vetores bidimensionais ou matrizes.
Vetores bidimensionais (ou matrizes)
A linguagem Java não fornece vetores multidimensionais, mas como um vetor pode ser declarado e ter qualquer tipo de base, é possível criar vetores de vetores (de vetores etc.), alcançando assim o mesmo efeito.
A declaração de um vetor bidimensional para inteiros, de nome "m" em Java:
int m[][] = new int[2][4]; // matriz com 2 linhas X 4 colunas
Representação interna: | |||
m[0][0] | m[0][1] | m[0][2] | m[0][3] |
m[1][0] | m[1][1] | m[1][2] | m[1][3] |
Fazendo referência a um elemento do vetor bidimensional:
m[0][2] = 0; | // elemento da primeira linha, terceira coluna |
// ou ainda, terceiro elemento do primeiro vetor | |
m[i][j] | // elemento da i-ésima linha, j-ésima coluna |
Declarando vetores bidimensionais:
1) Com expressões de criação de vetores:
int m[][] = new int[3][3]; // matriz quadrada: 3 linhas X 3 colunas
2) Declarando e inicializando:
int m[][] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} };
equivale as seguintes atribuições:
// 1ª linha:
m[0][0] = 1;
m[0][1] = 2;
m[0][2] = 3;
// 2ª linha:
m[1][0] = 4;
m[1][1] = 5;
m[1][2] = 6;
// 3ª linha:
m[2][0] = 7;
m[2][1] = 8;
m[2][2] = 9;
3) Com linhas de diferentes tamanhos:
int m[][] = new int[2][]; // cria 2 linhas
m[0] = new int[5]; // cria 5 colunas para a linha 0
m[1] = new int[3]; // cria 3 colunas para a linha 1
4) Declarando e inicializando linhas de diferentes tamanhos:
int m[][] = { {1, 2}, {4, 5, 6, 7, 8}, {9, 10, 11} };
equivale as seguintes atribuições:
// 1ª linha com duas colunas:
m[0][0] = 1;
m[0][1] = 2;
// 2ª linha com 5 colunas:
m[1][0] = 4;
m[1][1] = 5;
m[1][2] = 6;
m[1][3] = 7;
m[1][4] = 8;
// 3ª linha com 3 colunas:
m[2][0] = 9;
m[2][1] = 10;
m[2][2] = 11;
Para conhecer os tamanhos dos vetores deve-se utilizar o campo length:
a) m.length determina o número de linhas
b) m[i].length determina o número de colunas da i-ésima linha
Percorrendo vetores bidimensionais com linhas de diferentes tamanhos:
int m1[][] = { {1, 2, 3, 4}, {5, 6} };
int m2[][] = { {1, 2}, {3}, {4, 5, 6} };
m.length
m[i].length determina o número de linhas
determina o número de colunas da i-ésima linha
int i, j;
for (i=0; i<m.length; i++) {
System.out.printf("%da. linha: ", (i+1));
for (j=0; j<m[i].length; j++) {
System.out.printf("%d ", m[i][j]);
}
System.out.printf("\n");
}
Resultado com "m1":
1a. linha: 1 2 3 4
2a. linha: 5 6
Resultado com "m2":
1a. linha: 1 2
2a. linha: 3
3a. linha: 4 5 6
Exemplos de aplicações Java utilizando vetores bidimensionais ou matrizes
import java.util.Scanner;
public class Matriz1 {
public static void main(String[] args) {
Scanner ler = new Scanner(System.in);
int i, j, m[][] = new int[2][4];
for (i=0; i<2; i++) {
System.out.printf("Informe os elementos %da. linha:\n", (i+1));
for (j=0; j<4; j++) {
System.out.printf("m[%d][%d] = ", i, j);
m[i][j] = ler.nextInt();
}
System.out.printf("\n");
}
System.out.printf("\n");
for (i=0; i<2; i++) {
System.out.printf("%da. linha: ", (i+1));
for (j=0; j<4; j++) {
System.out.printf("%d ", m[i][j]);
}
System.out.printf("\n");
}
}
}
Listagem 1- Alimentando e mostrando os valores de uma matriz 2 X 4.
public class Matriz2 {
public static void main(String[] args) {
int n = 6;
int i, j, m[][] = new int[n][n];
for (i=0; i for (j=0; j if (i == j) // diagonal principal
m[i][j] = 0;
else if ((i+j) == (n-1)) // diagonal secundária
m[i][j] = 1;
// sorteia um número aleatório no intervalo de 2 até 5
else m[i][j] = (int)(Math.round(Math.random() * 2) + 3); //
}
}
for (i=0; i System.out.printf("%da. linha: ", (i+1));
for (j=0; j System.out.printf("%d ", m[i][j]);
}
System.out.printf("\n");
}
}
}
Listagem 2- Matriz quadrada: diagonal principal e diagonal secundária.
Listagem 1:
Listagem 2:
Peter Jandl Junior. Introdução ao Java. São Paulo: Berkeley - 2002.
Com este terceiro artigo concluímos nossa abordagem sobre vetores em Java.
Obrigado e um abraço.
Links Úteis
Saiba mais sobre Java ;)
Confira outros conteúdos:
Introdução ao JDBC
Novidades do Java
Teste unitário com JUnit
Promoção de Natal
Oferta exclusiva de Natal!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 59,90
Total: R$ 718,80
Garanta o desconto
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 59,90 /mês
Total: R$ 718,80
Garanta o desconto
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.