Olá, Bernardo. Como vai?
Parabéns por iniciar os exercícios práticos desta trilha! O seu código para o Exercício 1 ficou ótimo, está muito bem estruturado e cumpre com precisão o objetivo de capturar o momento atual do sistema.
A separação que você fez utilizando as classes LocalDate (para o componente de calendário) e LocalTime (para o componente de relógio) é excelente. No ecossistema Java, cada uma dessas classes possui responsabilidades muito bem delimitadas para evitar o desperdício de memória de dados que você não vai usar.
Para agregar ainda mais valor à sua jornada de aprendizado, trago uma análise sobre o comportamento de exibição dessas classes e uma sugestão de boa prática para a sua estrutura condicional.
Como o Java exibe as datas por padrão?
Quando você manda imprimir o objeto direto na tela, desta forma:
System.out.println("Data atual: " + dataAtual);
O Java executa um método interno chamado .toString(), que formata a saída seguindo o padrão internacional ISO-8601 (aaaa-MM-dd). É por isso que no seu console a data aparece com os hifens invertidos (ano primeiro, depois mês e dia).
A API de tempo do Java (java.time) é dividida em três pilares principais para cobrir qualquer necessidade de negócio:
LocalDate: Guarda apenas o dia, mês e ano. Perfeito para aniversários, vencimentos de boletos ou prazos de entrega.LocalTime: Guarda apenas a hora, minuto, segundo e frações de segundo. Ideal para cronômetros, escalas de trabalho ou intervalos.LocalDateTime: Junta os dois mundos em um único objeto. Excelente para registrar o carimbo de data/hora exato de uma transação financeira ou auditoria de sistema.
Uma sugestão de boa prática: Verificação de Strings em Java
A sua validação condicional ficou muito boa, mas você utilizou a expressão:
if (!tarefa.equals(""))
Embora funcione perfeitamente, o Java moderno (a partir da versão 11) introduziu um método nativo muito mais elegante e expressivo para verificar se um texto está vazio ou preenchido apenas com espaços em branco: o .isBlank().
Além disso, usar o método .isEmpty() ou .isBlank() deixa o seu código muito mais legível para outros desenvolvedores, pois elimina a necessidade de usar o operador de negação ! combinado com as aspas duplas vazias.
Veja como o seu código ficaria aplicando esse refinamento de escrita limpa:
import java.time.LocalDate;
import java.time.LocalTime;
public class Exercicios {
public static void main(String[] args) {
String tarefa = "Enviar relatório semanal";
LocalDate dataAtual = LocalDate.now();
LocalTime horarioAtual = LocalTime.now();
// .isBlank() verifica se a string está vazia ou cheia de espaços em branco
if (tarefa.isBlank()) {
System.out.println("Nenhuma tarefa ativa registrada.");
} else {
System.out.println("Executando tarefa: " + tarefa);
System.out.println("Data de registro: " + dataAtual);
System.out.println("Hora de registro: " + horarioAtual);
}
}
}
Modificar a estrutura para testar o cenário negativo primeiro (if tarefa vazia) costuma ser uma boa prática para "limpar" o código antes de executar a lógica principal do programa.
Você começou a trilha com o pé direito! Continue com essa constância fantástica nos próximos exercícios.
Espero que possa ter lhe ajudado!