Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Variabile static non inizializzata nel main

    Salve a tutti! Ho un dubbio riguardo il linguaggio java: se dichiaro una variabile static int a, nel main del mio programma e provo a stamparla con System.out.println(a), il compilatore mi da errore. Invece se dichiaro la stessa variabile prima del main, mi viene stampato il valore 0.

    codice:
    package javaapplication1;
    
    public class JavaApplication1 {
    static int a;
    
    public static void main(String[] args) {
    System.out.println(a);
        }
    }
    output: 0

    Perchè succede questo?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Barbarian Visualizza il messaggio
    se dichiaro una variabile static int a, nel main del mio programma e provo a stamparla con System.out.println(a), il compilatore mi da errore.
    Le variabili "locali" ai metodi(/costruttori) NON possono essere marcate static. E vanno inizializzate esplicitamente prima di poter essere usate.

    Mentre invece:

    codice:
    public class UnaClasse {
        static int x;
        int y;
    }

    La x è una variabile "di classe", ovvero è associata alla classe, che è una sola e quindi ci sarà UNA sola variabile x per UnaClasse indipendentemente da quanti oggetti di tipo UnaClasse andrai a creare.

    La y è una variabile "di istanza", ovvero è associata a ciascun oggetto della classe. Ogni oggetto di tipo UnaClasse ha la SUA propria variabile y, che può valere diversamente da quella degli altri oggetti UnaClasse.

    Le variabili di classe e di istanza, se non inizializzate esplicitamente (es. static int x = 10; ) vengono inizializzate in automatico al loro valore di "default": 0 per tipi numerici/char, false per boolean e null per qualunque reference.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ti ringrazio andbin! Sei stato chiarissimo!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.