Buongiorno a tutti.Sto studiando i costruttori e i distruttori Java e però non mi sono molto chiari.Correggetemi se sbaglio.I costruttori servono ad inizializzare un oggetto, mentre i distruttori, come suggerisce il nome, servono a distruggere l’oggetto. I costruttori sono dei normalissimi metodi giusto? che vengono chiamati automaticamente quando creo un nuovo oggetto. Se mi creo il mio costruttore per chiamarlo quando creo il nuovo oggetto devo chiamarlo come un normale metodo?
Grazie a tutti. Probabilmente aggiungerò altro + tardi B-)Buona giornata.Nicola Trentin
--
You received this message because you are subscribed to the Google Groups "JUG Trentino Alto Adige Suedtirol" group.
To post to this group, send email to jug...@googlegroups.com.
To unsubscribe from this group, send email to jugtaa+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/jugtaa?hl=en.
To unsubscribe from this group, send email to mailto:jugtaa%2Bunsu...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/jugtaa?hl=en.
Aggiungo un’altra domanda:Gli identificatori sono le handle??
In java non esistono, almeno esplicitamente, i puntatori. In c++ i puntatori avevano delle handle (maniglie) che permettevano di accedere ai puntatori. Quello che non ho capito è cosa sono gli identificatori in java. Grazie=)
From: Mario Alexandro SantiniSent: Tuesday, January 17, 2012 2:02 PMSubject: Re: [JUGTAA] Costruttori e distruttori
2012/1/17 nicola trentin <trenti...@hotmail.it>
Aggiungo un’altra domanda:Gli identificatori sono le handle??Scusa ma non mi è chiara la domanda, potresti spiegarti un po' meglio?--
Ciao,
Mario--
You received this message because you are subscribed to the Google Groups "JUG Trentino Alto Adige Suedtirol" group.
To post to this group, send email to jug...@googlegroups.com.
To unsubscribe from this group, send email to jugtaa+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/jugtaa?hl=en.--
You received this message because you are subscribed to the Google Groups "JUG Trentino Alto Adige Suedtirol" group.
To post to this group, send email to jug...@googlegroups.com.
To unsubscribe from this group, send email to jugtaa+un...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/jugtaa?hl=en.
In java non esistono, almeno esplicitamente, i puntatori. In c++ i puntatori avevano delle handle (maniglie) che permettevano di accedere ai puntatori. Quello che non ho capito è cosa sono gli identificatori in java. Grazie=)
From: Mario Alexandro SantiniSent: Tuesday, January 17, 2012 2:02 PMSubject: Re: [JUGTAA] Costruttori e distruttori
2012/1/17 nicola trentin <trenti...@hotmail.it>
Aggiungo un’altra domanda:Gli identificatori sono le handle??Scusa ma non mi è chiara la domanda, potresti spiegarti un po' meglio?--
Ciao,
Mario
--
You received this message because you are subscribed to the Google Groups "JUG Trentino Alto Adige Suedtirol" group.
To post to this group, send email to jug...@googlegroups.com.
To unsubscribe from this group, send email to mailto:jugtaa%2Bunsu...@googlegroups.com.
--
You received this message because you are subscribed to the Google Groups "JUG Trentino Alto Adige Suedtirol" group.
To post to this group, send email to jug...@googlegroups.com.
To unsubscribe from this group, send email to mailto:jugtaa%2Bunsu...@googlegroups.com.
Spesso si dice che i puntatori esistono, ma non possono essere gestiti
esplicitamente.
Un qualsiasi oggetto è in realtà accessibile solo come puntatore, e
quindi ad esempio passare un'oggetto come parametro non passa
l'oggetto in sè (by value),
ma solo il suo riferimento, in maniera esattamente equivalente al
passaggio "by reference" in C/C++.
Questo spiega perchè, se a e b sono oggetti istanze di una certa
classe, contenente un membro intero m:
a.m = 0;
b.m = 0;
b = a;
a.m = 1;
... contrariamente a quanto ci si potrebbe aspettare, anche b.m vale 1.
In altri termini, l'operazione b = a non rende b uguale a, ma rende il
"riferimento a b" uguale al "riferimento ad a".
L'operazione non copia gli oggetti, ma i riferimenti. Qundi dopo di
essa a e b sono esattamente lo stesso oggetto, non oggetti distinti ma
uguali.
Il riferimento all'oggetto b è perso (se non era copiato altrove),
così come la possibilità di accedere ai dati referenziati, che sono
così
disponibili per la garbage collection.
Anche se non sono manipolabili direttamente, qualcosa di correlato
(l'"hascode" dell'oggetto) è visualizzabile con un semplice print
(se gli oggetti in questione non fanno override del metodo toString()
ereditato da Object ).
"As much as is reasonably practical, the hashCode method defined by
class Object does return distinct integers for distinct objects. (This
is typically implemented by converting the internal address of the
object into an integer, but this implementation technique is not
required by the JavaTM programming language.)"
Un paio di link interessanti:
http://mindprod.com/jgloss/reference.html
http://csis.pace.edu/~bergin/papers/JavaPointerTraps.html
ciao,
rob
In C, ad esempio, è possibile da un puntatore recuperare il suo indirizzo
(tramite l'anteposizione della &). Se ad esempio il puntatore è ad un tipo
di dato char, mi è possibile incrementare il valore del suo indirizzo di 1 byte
e accedere al "char successivo" di una stringa.
A dire il vero è anche possibile con estrema facilità uscire alla lunghezza
della mia stringa e andare a leggere (o scrivere!) per sbaglio chissà
che cosa... :-P
ciao
t.
> --
> You received this message because you are subscribed to the Google Groups "JUG Trentino Alto Adige Suedtirol" group.
> To post to this group, send email to jug...@googlegroups.com.
> To unsubscribe from this group, send email to jugtaa+un...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/jugtaa?hl=en.
>
--
-- Tiziano Lattisi
Esatto, e su questo si basa tutta l'aritmrtica dei puntatori che ad
esempio permette di scorrere
un'array incrementando semplicemente l'indirizzo del suo puntatore, molto
"svelto e sporco", ma sono felice che non sia possibile in java ;.)
> In C, ad esempio, è possibile da un puntatore recuperare il suo indirizzo
> (tramite l'anteposizione della &). Se ad esempio il puntatore è ad un tipo
> di dato char, mi è possibile incrementare il valore del suo indirizzo di 1 byte
> e accedere al "char successivo" di una stringa.
naturalmente cose similari puoi fare in java con gli operatori di
"shift" e bitwise conditional ...
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html
> A dire il vero è anche possibile con estrema facilità uscire alla lunghezza
> della mia stringa e andare a leggere (o scrivere!) per sbaglio chissà
> che cosa... :-P
eh già. Oppure allocare aree di memoria tramite malloc() senza
bilanciarle sempre con un free()
quando non servono più ...
Facilissimi i memory leak in C C++, anche se ci si può ingegnare di
crearne di bellissimi anche in Java ;-) .
ciao
rob
Anche a me non dispiace che in Java sia più difficile spararsi su un piede. :-D
infatti per chi come me ha iniziato a lavorare in C, risulta comodo
pensare gli le variabili java di tipo oggetto come se avessero
sempre davanti un & invisibile ... oppure fossero proprio dei puntatori.
rob
A beh, anche se tu ci riesci, magari ci pensano altri a spararti,
succede anche per classi standard java ...
qui c'è una rassegna:
http://stackoverflow.com/questions/1281549/memory-leak-traps-in-the-java-standard-api
In generale bisogna stare *molto* attenti alle classi e variabili
dichiarate static, e ai riferimenti alle stesse.
rob