![]() |
Pages (4): [1] 2 3 4 » Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Programmazione (http://www.dsy.it/forum/forumdisplay.php?forumid=259)
-- [JAVA] Aiuti (http://www.dsy.it/forum/showthread.php?threadid=14494)
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!
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;
code:
final int PIPPO = 100; PIPPO = 150;
__________________
http://www.twitter.com/0m4r
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
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!
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!
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
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)
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?
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)
Originally posted by nous
Questo vuol dire che sono condivisi dagli oggetti che sono istanza di una classe ma non sono da loro modificabile.
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.
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
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!
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
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
| All times are GMT. The time now is 17:07. | Pages (4): [1] 2 3 4 » Show all 56 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.