Newsgroup: it.comp.java
Titolo: Modifica delle variabili passate a un metodo...

in C++ per modificare i valori dei parametri passati a un metodo basta fare:
void classe::metodo   (int &Var1, int &Var2) {
    Var1 = 100;
    Var2 = 200;
}
come posso fare la stessa cosa in Java?
Con una sola variabile, la posso restituire come valore di ritorno del
metodo, ma quando sono 2 o più come faccio?
Le variabili passate sono di tipo primitivo (int, double, long....)
Grazie
Scusate per la domanda banale, ma ho iniziato ieri a programmare in Java

 metodo, ma quando sono 2 o piů come faccio?


 ha scritto nel messaggio
news:kah19.155259$vm5.5...@news2.tin.it...

Perchè non crei un tuo "tipo dato" ovvero una classe che funga da wrapper
intorno ai dati
che ti interessano ?
Qualcosa come :
class MioDato
{
    int i ;
    long l;
    double d;
    float f;
    .......
    public MioDato(...)
    {
        .....
    }
    public void setInt(int i){
        this.i = i;
    }
    public int getInt(){
        return i;
    }
    ........
    ........
    ........
}
Ciao :)

Ciao Alex.
Invece di utilizzare i tipi primitivi, utilizza la loro forma ad Oggetti.
Java, per ogni dato primitivo, mette a disposizione la versione ad oggetti.
Lo riconosci perchè la prima lettera è maiuscola.
boolean   -> Boolean
byte         -> Byte
char         -> Character
double     -> Double
float         -> Float
int            -> Integer
long         -> Long
short        -> Short
Essendo degli Object il loro passaggio avviene per riferimento.
ATTENZIONE!!! String è volutamente omessa da questa lista, perchè
l'assegnazione o il passaggio avviene per valore, quindi i dati vengono
duplicati. String è [immutable]

Ohibò.... Caro TelespallaBob chissà dove l'hai sentita questa ....
la prossima volta niente caciottina.... hehhehehehhe .....

 come posso fare la stessa cosa in Java?
Non si puo' fare la "stessa" cosa, dato che in Java (come in C) non esiste 
il passaggio per riferimento per tipi primitivi .
Si possono ottenere risultati funzionali identici in una marea di modi, da 
barbari (tipo passare un array di due interi - e un array in Java e' un 
oggetto e quindi passato per riferimento) a ragionevoli (tipo usare un 
oggetto apposito per trasportare il risultato).
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

Dimenticavo; Byte,Double,Float,Integer,Long e Short estendono la classe
astratta: [Number], quindi se per esempio il tuo metodo invece di prendere
in input oggetti specifici (ad esempio Integer), accetta dei Number, diventa
molto più generico.
Vediti la classe Number.

Dalla Sardegna riporta anche il cervello. Lo so che lo spirito e la mente è
ancora a PortoPuddo, ma prenota un traghetto (con quella compagni che ti
piace tanto) per loro entro pochi giorni.
P.S. quanto vino te sei bevuto? Zozzo!!!! ;)

 Essendo degli Object il loro passaggio avviene per riferimento.
Sono tutti immutable. E il passaggio di String avvengono per riferimento, 
come per tutti gli altri oggetti. Per l'assegnamento, l'unica differenza e' 
che x = "blahblah" e' un'abbreviazione per x = new String("blahblah") - 
cioe' c'e' una semantica specifica per l'operatore '=' sul tipo String


 P.S. quanto vino te sei bevuto? Zozzo!!!! ;)
heheheheheh... dai non fare cosě.... scherzavo, se riandrň in Sardegna ti
riporterň
la caciottina..... e per quanto specificato nel PS, č forse un modo che
avete a Eton per richiedere anche una bottiglia di Vermentino ?

Ed in ultima analisi (che stamo a sforà) quel "dove l'hai sentita questa"
evidentemente NON significava "o ciccio guarda che hai detto na caXXata"....
me pare che lo sapemo tutti e due come far si che una routine modifichi un
dato (qualunque esso sia)... o no ?
E comunque ricorda sempre una cosa
SETTE PEPETTE FA RIMA E C'E'.... STACCE........

 cioe' c'e' una semantica specifica per l'operatore '=' sul tipo String
Sorry!!!

 omogenea.
Non sono troppo d'accordo.... rischi (in casi un pò più complicati del
solito)
di compromettere la leggibilità del codice....
te la immagini una situazione del tipo
double d =  ((Double)vct.elementAt(0)).doubleValue();
int i = ((Integer)vct.elementAt(1)).intValue();
......
etc
etc
etc
senza considerare che ti dovresti mettere a saltare da una parte all'altra
del codice
per ricordarti qual era l'indice del vettore che identifica il Double (ed in
particolare il Double
che ti serve in quel momento visto che potrebbero essercene n).....
Secondo me  sarebbe meglio utilizzare un proprio "wrapper" creato
appositamente per la problematica riscontrata.
ciao .

 Essendo degli Object il loro passaggio avviene per riferimento.
Tutti quelle citate sono sottoclassi final di Number
che *non* implementano metodi del tipo setNeValue()
e quoindi le rispettive istanze sono immutabili.
Una volta creato una istanza, per esempio con new Float(3.5),
non e' piu' possibile cambiare il suo valore.
Quindi anche se usi queste classi non potrai mai passare
una loro istanza ad un metodo e pretendere che questa
ritorni /modificata/ dal metodo stesso.
-- Dario

Cacchio, hai ragione.