Introdução
Classes
Não é nenhuma surpresa que a linguagem Java é composta exclusivamente por classes que se tornarão objetos mediante o recurso de instanciação (criação de objetos).
Nesta jornada iremos conhecer as classes mais relevantes e o que elas podem oferecer ao longo de sua jornada em desenvolvimento.
Tipos de Classe - Introdução
Documentação
A linguagem Java contém um arsenal poderosíssimo no que se refere a documentação de suas classes que compõem todo o seu ecossistema.
O que devemos compreender é que a cada versão, novas classes surgirão além de novos recursos nas classes já existentes. Então, você deve estar ciente de qual versão do Java você irá utilizar em seus projetos.
Abaixo ilustraremos o modelo de documentação com base na versão 8 do Java.
Principais pacotes
Chegou a hora de explorar e conhecer os principais pacotes e classes que são recorrentemente utilizados nos milhares de projetos já criados até os dias atuais.
Pacote | Descrição |
---|---|
java.lang | Pacote que contém as principais classes da linguagem, como Object, String, Long e etc |
java.io | Pacote que centraliza todas as classes relacionadas a trabalhar com leitura e escrita de arquivos |
java.time | Pacote introduzido recentemente para provê recursos de manipulação de datas e horas na linguagem |
java.util | Pacote onde podemos encontrar classes úteis em sua maioria com recursos estáticos |
Classes de sistema
A linguagem Java oferece classes nas quais nos ajudam a realizar uma interação em nosso programa em momento de sua execução com finalidades e recursos bem específicos.
java.lang.System
A classe java.lang.System
oferece recursos relacionados a dados e interações em nosso programa em tempo de execução como por exemplo: listar as propriedades de ambiente, retornar o momento atual de alguma execução, exibir mensagens informativas ou de erro no console ou até mesmo encerrar o sistema.
Todos os seus métodos são estáticos (não podendo criar um objeto desta classe) onde os mais utilizados são:
Método | Descrição |
---|---|
System.out | Este método retorna um objeto do tipo java.io.PrintStream para habilitar representações de impressão no console |
System.err | Este método retorna um objeto do tipo java.io.PrintStream para habilitar representações de impressão no console sinalizando um erro |
System.in | Este método retorna um objeto do tipo java.io.PrintStream capaz de ler as entradas digitadas pelo usuário, este recurso necessita do auxílio da classe java.util.Scanner |
Exemplos
public class SystemApp {
public static void main(String[] args) {
System.out.print("Ola mundo");
//imprime Ola mundo gerando uma nova linha
System.out.println("Ola mundo");
}
}
java.util.Scanner
para simular testes de seu programa, prefira informar os valores literalmente e focar de fato no algorítimo em questão.java.util.Scaner
No tópico anterior exploramos um pouco sobre a classe java.util.Scanner
para auxiliar na interação do usuário através de console utilizando a classe java.lang.System
, mas a classe possui outros recursos relacionados e algumas outras finalidades adicionais.
//Continuando ...
import java.util.Scanner;
public class SystemApp {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println ("Digite seu nome: ");
String nome = scan.next();
System.out.println ("Digite sua idade: ");
Integer idade = scan.nextInt(); //converte o valor inserido para um Integer
System.out.println ("Digite sua idade: ");
Double peso = scan.nextDouble(); //converte o valor inserido para um Double
System.out.println ("Seu nome é : " + nome);
System.out.println ("Sua idade é : " + idade);
System.out.println ("Sua peso é : " + peso);
//scan.nextBigDecimal(); scan.nextBoolean(); -> já sacou o conceito, correto ?
}
}
Vamos desfrutar um pouco mais nossa classe Scanner imaginando que agora você obteve o nome, idade e peso através de uma leitura de arquivo (simulação) separado por ;
, como seria o nosso algoritmo diante deste cenário?
import java.util.Scanner;
public class SystemApp {
public static void main(String[] args) {
String nome = null;
Integer idade = null;
Double peso=null;
//simulando uma linha existente em um arquivo txt
String stringLinhaArquivo = "gleyson sampaio;32;1.59";
Scanner scan = new Scanner(stringLinhaArquivo);
scan.useDelimiter(";"); //definindo um delimitador
//conhecendo novos recursos
int index = 0;
while (scan.hasNext()){ //olha um conceito de controle de repetição sendo aplicado, tudo está mais claro agora hein??
if(index == 0) // Uuufa, sorte que eu aprendi sobre controle de fluxo e operadores anteriormente
nome = scan.next();
else if( index == 1)
idade = Integer.valueOf(scan.next());
else
peso = Double.valueOf(scan.next());
index ++; //mais um conceito escondido bem aqui !!
}
System.out.println ("Seu nome é : " + nome);
System.out.println ("Sua idade é : " + idade);
System.out.println ("Sua peso é : " + peso);
//scan.nextBigDecimal(); scan.nextBoolean(); -> já sacou o conceito, correto ?
}
}
java.io.PrintStream
A classe java.io.PrintStream
não é convenientemente declarada de forma explícita no dia-a-dia, pois ela sempre está "escondida" na execução do método System.out
.
Já exploramos anteriormente a finalidade de usar os métodos da classe PrintStream para imprimir dados no console, porém agora, vamos explorar um recurso extremamente relevante e recorrente em qualquer projeto, a formatação de textos para serem impressos na tela do seu console.
public class SystemApp {
public static void main(String[] args) {
String nome = "gleyson";
int idade = 32;
double peso = 1.58;
double renda = 3234.56;
//vamos imprimir os dados acima aplicando uma formatação no console
//System.out.printf(formato, array de parâmetros (,,,) );
System.out.printf("Nome: %s Idade: %d Peso: %.2f Renda: R$ %,.2f", nome, idade, peso, renda);
//Resultado no console: Nome: gleyson Idade: 32 Peso: 1,58 Renda: R$ 3.234,56
//%s -> parâmetro do tipo String
//%d -> parâmetro do tipo Integer / Long
//%f -> parâmetro do tipo Double / Float
//.2 -> quer dizer que serão dois dígitos decimais
//,.2 -> quer dizer que serão dois dígitos decimais e informando o (.) de milhar
}
}