Newsgroup: it.comp.java
Titolo: metodi e variabili static

Ciao a tutti,
avrei una domanda, forse banale ma a cui non riesco a dare una
risposta.
Sul libro della Sun per la certificazione di programmatore Java,
riguardo alla parola chiave static trovo scritto testualmente:
things tou can mark as static:
1)Methods
2)Variables
3)Top-level nested classes
Things you can't mark as static:
1)Constructors
2)Classes
3)Interfaces
4)Inner Classes
5)Inner Classes methods and instance variables
6)Local variables
Mi do una spiegazione su tutto tranne che :
Nel punto 5 sostanzialmente mi dicono che non posso marcare come static
le variabili di istanza. Ma io credevo che le variabili di istanza
erano quelle non-statiche. Quindi ci deve essere qualcosa che mi
sfugge. Quali sono allora le variabili non di istanza, se tutto in Java
è una classe????
In sostanza vorrei sapere la differenza tra Variabili e variabili di
istanza.
1000 Grazie a chi vorrà rispondermi.
Ivan

 istanza.
Le variabili hanno un "ciclo vitale" (scope): quelle di istanza sono
quelle il cui ciclo vitale è l'intera istanza di una classe (oggetto),
quelle - in pratica - dichiarate all'interno di una classe ma *fuori*
da qualsiasi metodo.

 da qualsiasi metodo.
quindi secondo te quelli della sun intendono dire che non posso marcare
static le variabili dichiarate fuori dai metodi????
non credo...
grazie comunque per la risposta
ciao

 è una classe????
Le variabili locali
Le variabili static

 grazie comunque per la risposta
dn

 dn
Grazie mille, ma ho ancora dei dubbi,
public class prova1 {
int VariabileIstanzaGlobale1=0;
static int variabileStaticaGlobale=0;
static class A{
	static int variabileStaticaClasseInterna=0;
             static class B{
                         static int
variabileStatica_classeInterna_alla_classeInterna=0;
                                     }
                      }
public static void main (String[] args){
System.out.println("ciao");
}
}
perchè riesco lo stesso a compilare questa prova che ho fatto, non
dovrebbe darmi errore, per due motivi:
1)ho dichiarato statiche 2 variabili di sotto-classe, certo ho dovuto
dichiarare anche le classi statiche ma
2)nel manuale c'è scritto che non potevo marcare le classi interne
come static.
Continuo a non capire, scusami ma sono di coccio!!!!
Grazie Ciao

 Continuo a non capire, scusami ma sono di coccio!!!!
Nessun trucco: di fatto, dichiarandole static, le classi interne non
sono pių (solo) interne, acquistano uno "spazio di esistenza" maggiore.
Il manuale SUN si riferisce strettamente alle Classi Interne
propriamente dette, mentre quelle da te utilizzate sono le classi cui
si riferisce chiamandole "Top-level nested classes".
Prova a compilare:
public class prova1 {
  static void a() {
    static int a;
    static class A {
    }
  }
}
Nessuno dei due static viene accettato, neanche impostando il metodo
a() come static: il primo viene attribuito ad una variabile locale, il
secondo
ad una classe interna.
Saluti

 sono più (solo) interne, acquistano uno "spazio di esistenza" maggiore.


Ma B1 nell'esempio precedente non è quello che il manuale chiama
Method Local Inner class???
NON ci sto capendo una ma.....
:D
Ivan.M...@gmail.com
 ha scritto:


> NON ci sto capendo una ..zza
Gran calma!: al di là di qualsiasi nome o definizione l'importante
è come funziona il codice, no?
Per cui pensa bene agli esempi che abbiamo visto, a cosa si può
dichiarare static e a cosa no, fai qualche prova e poi ti sarà tutto
più chiaro. :)
In sostanza ha senso dichiarare static (e perciò con persistenza
indipendente dalla singola istanza della classe contenitore) una
variabile, un metodo o una classe che siano al di fuori di contesti
prettamente locali (metodi e inner classes nei metodi).
Chiaro, no?
:D