 |
karmo |
|
 |
karmo |
.illuminato.

Registered: Feb 2004
Posts: 182 (0.02 al dì)
Location: milano
Corso: informatica
Anno: 3
Time Online: 19:34:43 [...]
Status: Offline
Edit | Report | IP: Logged |
java
ciao ragazzi!
volevo un piccolo aiuto!
sto programmando in java e non riesco a capire il significato delle variabili STATIC e delle variabili FINAL
da quanto ho capito si usa Final per le variabili che non possono essere modificate nel codice sorgente!è cosi!?
spero qualcuno possa aiutarmi!
bye
__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!
|
|
26-10-2004 09:02 |
|
|
|  |
 |
0m4r |
| con final dichiari le costanti, cioè, una volta c ... |
26-10-2004 09:29 |
|
 |
0m4r |
.grande:maestro.

Registered: Mar 2002
Posts: 7287 (0.84 al dì)
Location: Düsseldorf (DE)
Corso:
Anno: ESAMI FINITI
Time Online: 49 Days, 0:57:33 [...]
Status: Offline
Edit | Report | IP: Logged |
con final dichiari le costanti, cioè, una volta che assegni un valore ad una di queste "variabili", questo non può essere più cambiato.
Ad esempio
code:
final int PIPPO = 100;
rappresenta dichiarazione e assegnamento di una costante (che di solito sono rappresentate scrivendole tutte in maiuscolo) al valore 100. Quindi, poer quanto detto prima, se tu provassi a fare
code:
final int PIPPO = 100;
PIPPO = 150;
otterresti un errore in compilazione che ti ricorderebbe che la costante PIPPO è gia stata assegnata (o qualche cosa del genere).
con static invece si "identificano" le variabili che non riguardano un oggetto di una classe ma proprio la classe stessa.
__________________
http://www.twitter.com/0m4r
|
|
26-10-2004 09:29 |
|
|
|  |
 |
Lord_Tom |
| static è usato per condividere la stessa risorsa ... |
26-10-2004 10:33 |
|
 |
Lord_Tom |
gentiluomo

Registered: Dec 2001
Posts: 177 (0.02 al dì)
Location: PAVIA
Corso: laurea quinquennale info
Anno: 5
Time Online: 2 Days, 0:17:35 [...]
Status: Offline
Edit | Report | IP: Logged |
static è usato per condividere la stessa risorsa da più oggetti.
Pensa ad esempio ad una variabile che tiene in memoria i riferimenti ad un database:
...
class DataRetriever
{
...
private static MyDataBase myDataBase ;
...
}
la istanzi una volta e poi tutti gli oggetti la usano
|
|
26-10-2004 10:33 |
|
|
|  |
 |
karmo |
| mmm scusa potresti spoiegare meglio il significato ... |
26-10-2004 10:34 |
|
 |
karmo |
.illuminato.

Registered: Feb 2004
Posts: 182 (0.02 al dì)
Location: milano
Corso: informatica
Anno: 3
Time Online: 19:34:43 [...]
Status: Offline
Edit | Report | IP: Logged |
mmm scusa potresti spoiegare meglio il significato di static?
non l'ho capito molto bene...
grazie!
__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!
|
|
26-10-2004 10:34 |
|
|
|  |
 |
karmo |
| scusa ma se voglio che una variabile venga utilizz ... |
26-10-2004 10:36 |
|
 |
karmo |
.illuminato.

Registered: Feb 2004
Posts: 182 (0.02 al dì)
Location: milano
Corso: informatica
Anno: 3
Time Online: 19:34:43 [...]
Status: Offline
Edit | Report | IP: Logged |
scusa ma se voglio che una variabile venga utilizzata da tutta la classe...non basta metterla fuori dalle parentesi di un suo oggetto o di un suo metodo?
__________________
"ki ha scritto queste stronzate!!??" disse il cieco toccando una grattugia!
|
|
26-10-2004 10:36 |
|
|
|  |
 |
Jacoposki |
| ma static non erano mica i metodi eseguiti diretta ... |
26-10-2004 12:19 |
|
 |
Jacoposki |
.arcimaestro.

Registered: Sep 2004
Posts: 498 (0.06 al dì)
Location: Milano
Corso: Informatica
Anno: in tesi-sa dio per quanto
Time Online: 4 Days, 0:36:57 [...]
Status: Offline
Edit | Report | IP: Logged |
ma static non erano mica i metodi eseguiti direttamente da una classe invece che da un oggetto?
una risorsa condivisa non è mica una public?
o mi sto incasinando?? ^^
__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori
|
|
26-10-2004 12:19 |
|
|
|  |
 |
Simeon |
| Static come diceva qualcuno sono i metodi che si e ... |
26-10-2004 12:24 |
|
 |
Simeon |
:D
Registered: Aug 2004
Posts: 984 (0.13 al dì)
Location: Milano
Corso: Informatica
Anno: IT IS OVER!
Time Online: 14 Days, 19:29:42 [...]
Status: Offline
Edit | Report | IP: Logged |
Static come diceva qualcuno sono i metodi che si eseguono su una classe anziche' su un oggetto, per esempio
code:
double x = Math.cos(x)
Il metodo cos non puo' essere eseguito su x ( che e' una variabile di tipo primitivo double, non un oggetto ); infatti viene applicato alla CLASSE Math.
Il risultato viene quindi assegnato alla variabile x.
DISCLAIMER : Questo e' tutto quello che so dalla lezione di ieri (25/10), per cui se qualcosa e' incorretto o impreciso mi tutelo
Last edited by Simeon on 26-10-2004 at 12:28
|
|
26-10-2004 12:24 |
|
|
|  |
 |
Lord_Tom |
| [QUOTE][i]Originally posted by karmo [/i]
... |
26-10-2004 13:05 |
|
 |
Lord_Tom |
gentiluomo

Registered: Dec 2001
Posts: 177 (0.02 al dì)
Location: PAVIA
Corso: laurea quinquennale info
Anno: 5
Time Online: 2 Days, 0:17:35 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by karmo
scusa ma se voglio che una variabile venga utilizzata da tutta la classe...non basta metterla fuori dalle parentesi di un suo oggetto o di un suo metodo?
Non capisco l'osservazione...che significa una variabile usata da una classe ? ??
cmq nel mio precedente post volevo indicare l'uso più frequente e sensato di "static". Si usa static quando si vuole condividere un "qualcosa" tra più oggetti.
Un caso d'uso è una risorsa. Con risorsa intendo una variabile, una costante, un riferimento ad un' altra classe, un riferimento ad un file etc...
|
|
26-10-2004 13:05 |
|
|
|  |
 |
nous |
| In effetti ha ragione il Lord. Gli attributi stati ... |
26-10-2004 13:54 |
|
 |
nous |
.:Retore Pomposo:.

Registered: Dec 2001
Posts: 2945 (0.33 al dì)
Location: Fino Mornasco - Como
Corso: Informatica
Anno: Specialista
Time Online: 16 Days, 13:56:49 [...]
Status: Offline
Edit | Report | IP: Logged |
In effetti ha ragione il Lord. Gli attributi statici sono attributi di classe, non di istanza. Questo vuol dire che sono condivisi dagli oggetti che sono istanza di una classe (essendo la classe definita come l'insieme degli oggetti che ne sono istanza) ma non sono da loro modificabile.
Sono modificabili (nel caso in cui la visibilità lo permetta) prima di istanziare un oggetto che li utilizzerà, la modifica ovviamente si ripercuoterà su tutti gli oggetti istanza della classe.
A livello di allocazione di memoria ho una sola allocazione per l'attributo, invece di averne tante quanti gli oggetti che istanzio.
I metodi statici sono utilissimi nelle classe di utilità, nei singleton, nei costruttori statici.
__________________
Cristian,il Nous che invoglia ^_^
"La capa è troppo in la,e la sbarba è troppo giovane..mi sa che qua si va in bianco"
Ryo Saeba (City Hunter)
Last edited by nous on 26-10-2004 at 13:57
|
|
26-10-2004 13:54 |
|
|
|  |
 |
Lord_Tom |
| [QUOTE][i]Originally posted by nous [/i]
... |
26-10-2004 13:59 |
|
 |
Lord_Tom |
gentiluomo

Registered: Dec 2001
Posts: 177 (0.02 al dì)
Location: PAVIA
Corso: laurea quinquennale info
Anno: 5
Time Online: 2 Days, 0:17:35 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by nous
Questo vuol dire che sono condivisi dagli oggetti che sono istanza di una classe ma non sono da loro modificabile.
Questo non è vero. Anzi, ogni oggetto può modificare un attributo statico...
Ovviamente questa è causa dei buchi più difficili da individuare.
Un esempio sono le race condition.
Un thread accede al campo statico "number" e lo imposta a 5.
Un altro thread lo imposta a 7.
Il primo prosegue l'esecuzione, pensando sia 5 mentre invece è 7...
Insomma, è importante non abusare dei metodi static ! !
Cmq nous ha evidenziato il secondo grande impiego di static: le classi di utilità !
|
|
26-10-2004 13:59 |
|
|
|  |
 |
holylaw |
| cmq vorrei precisare, onde evitare confusione, che ... |
26-10-2004 18:17 |
|
 |
holylaw |
.grande:maestro.

Registered: Feb 2003
Posts: 3142 (0.37 al dì)
Location: milano
Corso: Magistrale Informatica
Anno: bella domanda
Time Online: 88 Days, 5:30:09: [...]
Status: Offline
Edit | Report | IP: Logged |
cmq vorrei precisare, onde evitare confusione, che esistono sia le variabili static (definiti da Lord_Tom e da nous) sia i metodi static (definiti da Simeon), che sono 2 cose distinte
__________________
La mia epoca ed io non siamo fatti l'uno per l'altro:questo è chiaro. Ma è da vedere chi di noi due vincerà il processo di fronte al tribunale dei posteri.
AV MJØDEN VART DU VIS OG KLOK, SÅ DREKKA MER!!!!
Le persone sagge parlano perché hanno qualcosa da dire.
Le persone sciocche perché hanno da dire qualcosa.
|
|
26-10-2004 18:17 |
|
|
|  |
 |
Lord_Tom |
| [QUOTE][i]Originally posted by holylaw [/i]
... |
26-10-2004 18:55 |
|
 |
Lord_Tom |
gentiluomo

Registered: Dec 2001
Posts: 177 (0.02 al dì)
Location: PAVIA
Corso: laurea quinquennale info
Anno: 5
Time Online: 2 Days, 0:17:35 [...]
Status: Offline
Edit | Report | IP: Logged |
Originally posted by holylaw
cmq vorrei precisare, onde evitare confusione, che esistono sia le variabili static (definiti da Lord_Tom e da nous) sia i metodi static (definiti da Simeon), che sono 2 cose distinte
No, il concetto di static è lo stesso.
Ovviamente si applica a contesti diversi.
E' un po' come dire che un coltello può servire sia come arma bianca sia per tagliare il cibo !
Cmq sono distinzioni un po' inutili...
|
|
26-10-2004 18:55 |
|
|
|  |
 |
andreamoz |
| Vediamo se mi spiego:
... |
02-11-2004 15:48 |
|
 |
andreamoz |
.consigliere.

Registered: Jul 2002
Posts: 102 (0.01 al dì)
Location: perduta campagna
Corso: Informatica
Anno: IndexOutOfBoundException
Time Online: 1 Day, 4:26:09: [...]
Status: Offline
Edit | Report | IP: Logged |
Vediamo se mi spiego:
come ben sapete (vero?) quando chiamate un costruttore di una classe create una nuova istanza di quella classe, cioè un nuovo oggetto. Pensate alla classe come allo "stampino" e all'oggetto come al biscotto (i puristi mi perdonino la semplificazione, che non è neanche corretta fino in fondo, ma è solo per chiarire il concetto...).
Quando avete istanziato un oggetto potete chiamarne i metodi, leggerne o modificarne, ove permesso, i membri, etc.
Ogni oggetto ha i membri definiti dalla classe, ciascuno con i propri valori che variano da oggetto a oggetto. (es classe Persona, oggetti Piero età 25, Luigi età 32, Mario età 13, etc)
Finchè non ho un Piero (o in generale un'istanza di Persona) non posso avere un attributo età, nè di valore 25 nè di nessun altro valore, null compreso.
La variabile età è una variabile di istanza, cioè ha senso solo se abbiamo un'istanza (es. Piero) della classe (Persona).
Pensate invece che alle persone alle automobili: ciascuna automobile ha il proprio numero di telaio, che tendenzialmente è il successivo della macchina costruita precedentemente (la mia povera prof di italiano!). Ora, in ogni istanza (in ogni automobile costruita) io metto una targhetta con il numero di telaio, ma non so quale sarà il numero della prossima automobile costruita. Non ha infatti senso che la singola automobile sappia qualcosa degli altri numeri di telaio.
Questo numero è un attributo di classe, cioè viene usato dalla classe Automobile quando istanzia (attraverso un costruttore) un nuovo oggetto automobile. In Java tale attributo viene identificato con la parola chiave static, che significa appunto che esiste anche senza che esistano istanze di Automobile.
Se a static aggiungiamo final otteniamo una bella costante da utilizzare in lungo e in largo (es banale il fattore di conversione lira/euro).
La stessa cosa, anche se ci sono alcune sottili differenze, vale per i metodi statici. Parlo di differenze perché in realtà i metodi di una classe (statici e non) vengono caricati una sola volta in memoria, e non una volta per istanza (sono uguali per tutti gli oggetti della classe!).
I metodi statici operano tipicamente non su istanze specifiche della classe (ad esempio sull'automobile di telaio 123456) ma sulla classe in genere (ad esempio il costruttore userà un metodo statico per sapere quale sarà il numero di telaio della prossima automobile e ad aggiornare l'attributo statico).
Se pensate, come altro esempio, ai metodi statici della classe Math potete notare che operano non su istanze della classe Math stessa, ma su numeri (int, double, etc).
Se non sono stato chiaro martellatemi pure. Se sono stato chiaro accetto donazioni... 
__________________
D'OH!
|
|
02-11-2004 15:48 |
|
|
|  |
 |
loly |
| aiuto per java |
10-11-2004 11:09 |
|
 |
loly |
.simpatizzante.
Registered: Oct 2003
Posts: 12 (0.00 al dì)
Location: Milano
Corso: informatica
Anno: 2
Time Online: 2:30:41 [...]
Status: Offline
Edit | Report | IP: Logged |
aiuto per java
Buon giorno sono una studentessa di informatica triennale Seguo il corso di programmazione di pighizzini e dopo aver istallato (come da istruzioni di Pighizzini) java
sul mio pc(windows xp)non riesco a compilare nessun programmino.
Il messaggio che mi da il compilatore è:
C:\>j2sdk1.4.1_02/bin/javac prova.java
error cannot read prova.java
1 error
Rimango in attesa di aiuto
Salutoni
Loly
|
|
10-11-2004 11:09 |
|
|
|  |
 |
tandrea85 |
| hai scritto questa riga di comando C:\>j2sdk1.4.1_ ... |
10-11-2004 11:13 |
|
 |
tandrea85 |
.precettore.
Registered: Sep 2004
Posts: 95 (0.01 al dì)
Location:
Corso: informatica
Anno: 1
Time Online: 18:21:48 [...]
Status: Offline
Edit | Report | IP: Logged |
hai scritto questa riga di comando C:\>j2sdk1.4.1_02/bin/javac prova.java? se è cosi il tuo file prova.java deve essere nella directory C:\>j2sdk1.4.1_02/bin
|
|
10-11-2004 11:13 |
|
|
|  |
 |
| All times are GMT. The time now is 03:37. |
|
|
 |
|
 |
|
|
|  |
Forum Rules:
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
|
HTML code is OFF
vB code is ON
Smilies are ON
[IMG] code is ON
|
|
|
|
|
|