Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    43

    [JAVA] dichiarazione variabili

    da quanto sembra, i dati membro di una classe vengono inizializzati automaticamente a 0 (se tipi di dato primitivi) o a NULL (se oggetti)... questa caratteristica e' propria di java o e' solo un caso?
    Anche perche' se eseguo il codice tra i commenti, in fase di compilazione viene segnalato un avvertimento di variabile non inizializzata...
    chi mi illumina? :adhone:

    Codice PHP:
    class Inutile {
        
    Inutile() {
            
    System.out.println "c = " );
            
    System.out.println "d = " );
        }
        private 
    int c;
        private 
    String d;
    }


    public class 
    abc {

        public static 
    void mainString[] args ) {
            
    /*int a;
            System.out.println ( "a = " + a );
            String b;
            System.out.println ( "b = " + b );*/

            
    Inutile inutile = new Inutile();
        }



  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    72
    Ciao.
    Ci sono un paio di cose da dire:
    Esattamente come dici tu queste variabili (dette campi o variabili di istanza) sono inizializzate con 0 e null se definite FUORI dai metodi mentre le tue a ,b sono definite DENTRO il metodo main per cui vanno inizializzate altrimenti si ha l'errore.

    Ma anche se tu le inizializzassi non potresti usarle in quanto main è un metodo statico , appartiene cioè all’intera classe per cui anche le variabili dovranno essere static:

    class Inutile {
    Inutile() {
    System.out.println ( "c = " + c );
    System.out.println ( "d = " + d );
    }
    private int c;
    private String d;
    }
    public class abc {
    static int a; // Fuori dal metodo e statica
    static String b; // Fuori dal metodo e statica
    public static void main( String[] args ) {
    System.out.println ( "a = " + abc.a );
    System.out.println ( "b = " + abc.b );
    Inutile inutile = new Inutile();
    }
    }

    Se invece le vorrai usare come variabili locali del metodo main dovrai necessariamente inizializzarle.

    Infine una considerazione sul costruttore della classe Inutile: il costruttore serve a costruire un oggetto e non come una specie di metodo per cui visualizzare le variabili per cui è meglio scrivere un costruttore vuoto (o anche non scriverlo se estende una classe senza parametri) con magari un metodo toString() che me le visualizza:

    class Inutile {
    private int c;
    private String d;
    public String toString(){ // metodo
    return "c = "+c+"\nd = "+d;
    }
    }
    public class abc {
    public static void main( String[] args ) {
    int a=0;
    String b=null;
    System.out.println ( "a = " + a );
    System.out.println ( "b = " + b );
    Inutile inutile = new Inutile();
    System.out.println ( inutile.toString());
    }
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    43
    grazie davvero per la risposta, chiara, completa e precisa
    mi hai tolto molti dubbi
    :sexpulp:

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 © 2024 vBulletin Solutions, Inc. All rights reserved.