Menu
Coddy logo textTech

Constantes (static final)

Parte da seção Programação Orientada a Objetos do Journey de Java da Coddy — lição 18 de 87.

A combinação de static e final cria uma constante - um valor que pertence à classe e nunca pode mudar. Esta é a forma padrão de definir constantes em Java.

public class GameSettings {
    public static final int MAX_PLAYERS = 4;
    public static final double GRAVITY = 9.81;
    public static final String GAME_TITLE = "Space Adventure";
}

Por convenção, nomes de constantes usam UPPER_SNAKE_CASE para distingui-los de variáveis comuns. Como eles são tanto static quanto final, você os acessa através do nome da classe e seus valores têm a garantia de nunca mudar:

System.out.println(GameSettings.MAX_PLAYERS);  // 4
// GameSettings.MAX_PLAYERS = 8;  // Erro! Não é possível modificar

Constantes são tipicamente declaradas public porque seu propósito é serem compartilhadas em toda a sua aplicação. Pense em valores como Math.PI - é uma constante public static final que qualquer código pode usar.

Por que usar constantes em vez de valores fixos? Se você escrever 4 em todo o seu código e depois precisar alterá-lo para 6, teria que encontrar e atualizar cada ocorrência. Com uma constante como MAX_PLAYERS, você a altera em um único lugar.

Constantes também tornam o código mais legível - MAX_PLAYERS é mais claro do que um misterioso 4.

challenge icon

Desafio

Fácil

Vamos construir um utilitário MathConstants que armazena valores matemáticos importantes como constantes, junto com um CircleCalculator que utiliza essas constantes para realizar cálculos.

Você criará dois arquivos para organizar seu código:

  • MathConstants.java: Crie uma classe que contém constantes matemáticas usando campos public static final:
    • PI com o valor 3.14159
    • E (número de Euler) com o valor 2.71828
    • GOLDEN_RATIO com o valor 1.61803
    Lembre-se de usar UPPER_SNAKE_CASE para nomes de constantes!
  • Main.java: Use suas constantes para realizar cálculos de círculo. Você receberá um raio como entrada e imprimirá três linhas:
    • A área do círculo: Area: [value]
    • A circunferência do círculo: Circumference: [value]
    • O diâmetro escalonado pela proporção áurea: Golden Diameter: [value]

Para os cálculos:

  • Area = PI * radius * radius
  • Circumference = 2 * PI * radius
  • Golden Diameter = 2 * radius * GOLDEN_RATIO

Você receberá uma entrada: o raio (double).

Formate todos os valores de saída para 2 casas decimais usando String.format("%.2f", value). Acesse suas constantes através do nome da classe, como MathConstants.PI.

Folha de consulta

Combinar static e final cria uma constante - um valor que pertence à classe e nunca pode mudar:

public class GameSettings {
    public static final int MAX_PLAYERS = 4;
    public static final double GRAVITY = 9.81;
    public static final String GAME_TITLE = "Space Adventure";
}

Por convenção, nomes de constantes usam UPPER_SNAKE_CASE. Acesse constantes através do nome da classe:

System.out.println(GameSettings.MAX_PLAYERS);  // 4
// GameSettings.MAX_PLAYERS = 8;  // Erro! Não é possível modificar

Constantes são tipicamente declaradas como public para serem compartilhadas em toda a sua aplicação. Elas tornam o código mais fácil de manter e ler, substituindo valores fixos (hardcoded) por nomes significativos.

Experimente você mesmo

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double radius = scanner.nextDouble();
        
        // TODO: Calcule a área usando MathConstants.PI
        // Fórmula: PI * radius * radius
        
        // TODO: Calcule a circunferência usando MathConstants.PI
        // Fórmula: 2 * PI * radius
        
        // TODO: Calcule o diâmetro dourado usando MathConstants.GOLDEN_RATIO
        // Fórmula: 2 * radius * GOLDEN_RATIO
        
        // TODO: Imprima os resultados formatados com 2 casas decimais
        // Use String.format("%.2f", value) para formatação
        // Formato de saída:
        // Area: [value]
        // Circumference: [value]
        // Golden Diameter: [value]
        
    }
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Programação Orientada a Objetos