Menu
Coddy logo textTech

Metodi statici

Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 16 di 87.

Proprio come le variabili statiche appartengono alla classe anziché alle istanze, anche i metodi statici appartengono alla classe stessa. Puoi chiamarli senza creare un oggetto.

Dichiara un metodo statico aggiungendo la parola chiave static:

public class MathHelper {
    public static int add(int a, int b) {
        return a + b;
    }
    
    public static int multiply(int a, int b) {
        return a * b;
    }
}

// Chiama senza creare un oggetto
int sum = MathHelper.add(5, 3);      // 8
int product = MathHelper.multiply(4, 2);  // 8

I metodi statici hanno una limitazione importante: non possono accedere direttamente alle variabili o ai metodi di istanza. Poiché i metodi statici esistono senza un oggetto, non c'è alcun riferimento a this con cui lavorare.

public class Counter {
    private int count;              // Variabile di istanza
    private static int total;       // Variabile statica
    
    public static void incrementTotal() {
        total++;      // OK - accesso alla variabile statica
        // count++;   // Errore! Impossibile accedere alla variabile di istanza
    }
}

I metodi statici sono ideali per le operazioni di utilità che non dipendono dallo stato dell’oggetto: pensa a metodi come Math.sqrt() o Integer.parseInt(). Forniscono funzionalità che hanno senso a livello di classe anziché per i singoli oggetti.

challenge icon

Sfida

Facile

Creiamo una classe di utilità StringUtils che fornisce metodi utili per manipolare le stringhe senza dover creare oggetti: perfetta per mostrare i metodi statici!

Creerai due file per organizzare il codice:

  • StringUtils.java: crea una classe di utilità con metodi statici che eseguono operazioni comuni sulle stringhe:
    • Un metodo statico countVowels(String text) che restituisce il numero di vocali (a, e, i, o, u, sia maiuscole che minuscole) presenti nella stringa data
    • Un metodo statico reverse(String text) che restituisce la stringa invertita
    • Un metodo statico isPalindrome(String text) che restituisce true se la stringa si legge allo stesso modo in avanti e all'indietro (senza distinzione tra maiuscole e minuscole), false altrimenti
  • Main.java: usa la classe di utilità per elaborare una stringa. Riceverai un input: una stringa di testo. Chiama ciascun metodo statico direttamente tramite il nome della classe e stampa tre righe:
    • Vowels: [count]
    • Reversed: [reversed string]
    • Palindrome: true oppure Palindrome: false

Riceverai un input: una stringa di testo da analizzare.

Ricorda che i metodi statici si chiamano usando il nome della classe (come StringUtils.countVowels(text)) invece di creare prima un'istanza. Questo rende le classi di utilità pratiche per le operazioni che non devono mantenere uno stato tra una chiamata e l'altra.

Provalo tu

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String text = scanner.nextLine();
        
        // TODO: Usa i metodi statici di StringUtils per analizzare il testo
        // Chiama StringUtils.countVowels(text) per ottenere il numero di vocali
        // Chiama StringUtils.reverse(text) per ottenere la stringa invertita
        // Chiama StringUtils.isPalindrome(text) per verificare se il testo è palindromo
        
        // TODO: Stampa i risultati nel seguente formato:
        // Vocali: [conteggio]
        // Invertita: [stringa invertita]
        // Palindrome: true/false
        
    }
}
quiz iconMettiti alla prova

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

Esercitati da solo: Compilatore Java online