Costanti (static final)
Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 18 di 87.
Combinare static e final crea una costante: un valore che appartiene alla classe e non può mai cambiare. Questo è il modo standard per definire le costanti in 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";
}Per convenzione, i nomi delle costanti usano UPPER_SNAKE_CASE per distinguerle dalle variabili normali. Poiché sono sia statiche che final, vi accedi tramite il nome della classe e i loro valori sono garantiti per non cambiare mai:
System.out.println(GameSettings.MAX_PLAYERS); // 4
// GameSettings.MAX_PLAYERS = 8; // Errore! Impossibile modificareLe costanti vengono in genere dichiarate public perché sono pensate per essere condivise all'interno della tua applicazione. Pensa a valori come Math.PI: è una costante pubblica, statica e finale che qualsiasi codice può usare.
Perché usare costanti invece di valori codificati direttamente? Se scrivi 4 in tutto il codice e in seguito devi modificarlo in 6, dovresti trovare e aggiornare ogni occorrenza. Con una costante come MAX_PLAYERS, la modifichi in un solo punto.
Le costanti rendono anche il codice più leggibile: MAX_PLAYERS è più chiaro di un misterioso 4.
Sfida
FacileCreiamo un'utilità MathConstants che memorizza importanti valori matematici come costanti, insieme a un CircleCalculator che usa queste costanti per eseguire calcoli.
Creerai due file per organizzare il tuo codice:
MathConstants.java: crea una classe che contiene costanti matematiche usando campipublic static final:PIcon valore3.14159E(numero di Eulero) con valore2.71828GOLDEN_RATIOcon valore1.61803
Main.java: usa le tue costanti per eseguire calcoli relativi al cerchio. Riceverai un raggio come input e stamperai tre righe:- L'area del cerchio:
Area: [value] - La circonferenza del cerchio:
Circumference: [value] - Il diametro moltiplicato per il rapporto aureo:
Golden Diameter: [value]
- L'area del cerchio:
Per i calcoli:
- Area = PI * radius * radius
- Circumference = 2 * PI * radius
- Golden Diameter = 2 * radius * GOLDEN_RATIO
Riceverai un input: il raggio (double).
Formatta tutti i valori di output con 2 cifre decimali usando String.format("%.2f", value). Accedi alle tue costanti tramite il nome della classe, come MathConstants.PI.
Provalo tu
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
double radius = scanner.nextDouble();
// TODO: Calcola l'area usando MathConstants.PI
// Formula: PI * radius * radius
// TODO: Calcola la circonferenza usando MathConstants.PI
// Formula: 2 * PI * radius
// TODO: Calcola il diametro aureo usando MathConstants.GOLDEN_RATIO
// Formula: 2 * radius * GOLDEN_RATIO
// TODO: Stampa i risultati formattati con 2 cifre decimali
// Usa String.format("%.2f", value) per la formattazione
// Formato dell'output:
// Area: [value]
// Circumference: [value]
// Golden Diameter: [value]
}
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione a oggetti
File esterniIntroduzione alla programmazione a oggettiClassi e oggettiLa parola chiave thisMetodiCampi (attributi)Metodo costruttoreSovraccarico dei costruttoriRipasso - Calcolatrice semplice4Ereditarietà
Ereditarietà di base (extends)La parola chiave superSovrascrittura dei metodi (@Override)Concatenamento dei costruttoriLa classe ObjectEreditarietà singola e multilivelloPerché non esiste l'ereditarietà multipla delle classiRiepilogo: gerarchia dei dipendenti7Metodi speciali e classe Object
Metodo toString()equals() e hashCode()Metodo clone()compareTo() e ComparableInterfaccia ComparatorRiepilogo - Ordinamento personalizzato2Modificatori di accesso e incapsulamento
Panoramica dei livelli di accessoMetodi getter e setterNascondimento delle informazioniLa parola chiave finalRiepilogo - Gestore di conti bancari5Polimorfismo
Nozioni di base sull'overloading dei metodiOverride dei metodi (a runtime)Upcasting e downcastingL'operatore instanceofClassi e metodi astrattiRiepilogo - Calcolatore di forme8Concetti avanzati di OOP
Composizione vs ereditarietàAggregazione vs composizioneClassi interne, annidate e anonimeEnum e metodi degli EnumRecord (Java 16+)Classi sealed (Java 17+)11Modelli di progettazione Parte 1
Introduzione ai modelli di progettazionePattern SingletonPattern FactoryPattern BuilderPattern ObserverPattern Strategy3Proprietà di classe e membri statici
Variabili di istanza e staticheMetodi staticiBlocchi staticiCostanti (static final)Riepilogo - Contatore e utility6Interfacce e classi astratte
Introduzione alle interfacceImplementazione delle interfacceImplementazione di più interfacceMetodi default e static nelle interfacceClassi astratte e interfacce a confrontoInterfacce funzionaliRiepilogo: sistema di pagamento9Tipi generici
Introduzione ai tipi genericiClassi genericheMetodi genericiParametri di tipo con limitiCaratteri jolly (?, extends, super)Riepilogo - Contenitore generico12Modelli di progettazione – Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositePattern IteratorEsercitati da solo: Compilatore Java online