Torna indietro   Hardware Upgrade Forum > Software > Programmazione

 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP
OPPO ha appena lanciato sul mercato la nuova serie Find X10, che ha come smartphone premium il Find X10 Pro Max, uno smartphone completo, che fa del comparto fotografico il suo vero punto di forza. Ma sono tante le novità, tra cui l'AI che adesso diventa agentica. Ma andiamo a vedere nel dettaglio questo nuovo smartphone.
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato
Abbiamo provato la beta di World of Warcraft: Forever, il Classic+ di Blizzard in arrivo il 4 novembre: la nuova razza Skyborne restituisce la sensazione di un gioco nuovo, ma le zone storiche conservano la noia divertita di Classic. Classi ribilanciate, sciamani anche nell'Alleanza e un motore grafico che in 4K gira bene anche su una RTX 3070. Cosa cambia in Forever? La risposta nell'articolo
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita
TCL P80 Ultra abbina per la prima volta un pannello AMOLED alla tecnologia NXTPAPER con finitura opaca, affiancandoci una fotocamera periscopica da 50 MP con zoom ottico 3x, il SoC Dimensity 7400 Elite e una batteria da 5.800 mAh. Nella prova sul campo emergono luminosità di picco molto elevata, comparto fotografico solido per la fascia di prezzo e autonomia nella media, a fronte di velocità di scrittura dello storage piuttosto contenute
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-04-2009, 19:15   #1
australopiteci
Member
 
Iscritto dal: Feb 2005
Messaggi: 127
[JAVA] swap e passaggio per copia

salve a tutti, ho letto che in java esiste il solo passaggio per copia.. anche i riferimenti vengono passati per copia. Non capisco allora l'output del seguente codice:
Codice:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication1;





/**
 *
 * @author Administrator
 */
public class Main {

    
     public static class Prova
     {
         int x;
         int y;
         Prova (int xx,int yy)
             {
                x=xx;
                y=yy;
             }
     }

    private static void swap(Prova a, Prova b)
    {
        System.out.println("DENTRO PRIMA: uno= " + a.x + " due= " + b.x );
        Prova temp;
        temp=a;
        a=b;
        b=temp;
        System.out.println("DENTRO DOPO: uno= " + a.x + " due= " + b.x );
    }

    private static void change(Prova a, Prova b)
    {
        a.x=999999999;
        b.x=999999999;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        System.out.println("Hello World!");

        Prova uno,due;

        uno = new Prova(1,1);
        due = new Prova(2,2);
        System.out.println("PRIMA: uno= " + uno.x + " due= " + due.x );
        swap(uno,due);
        System.out.println("DOPO: uno= " + uno.x + " due= " + due.x );


        change(uno,due);
        System.out.println("DOPO ANZ: uno= " + uno.x + " due= " + due.x );
    }

    

}

Non capisco perchè la funzione change funzioni e la funzione swap no.
Che significa copiare i riferimenti?
alla fine anche se copio l'indirizzo (il riferimento) di un oggetto X, se vi accedo, accederò allo stesso oggetto.. non ad una copia dell'oggetto (perchè non lo creo da nessuna parte con l'operatore new..)
__________________
the AUSTRALOPITECI
australopiteci è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2009, 19:41   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
all'oggetto accedi dereferenziando (termine orrendo) il puntatore. a e b sono puntatori, l'invocazione crea una copia di quel puntatore, ottieni due puntatori il cui valore è lo stesso indirizzo.

La differenza sta nel ri-assegnamento. Se nel metodo scrivi a = new Prova() cambi il valore della copia del puntatore usata nel metodo ma non il valore di quello che hai usato per l'invocazione.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2009, 23:37   #3
australopiteci
Member
 
Iscritto dal: Feb 2005
Messaggi: 127
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
all'oggetto accedi dereferenziando (termine orrendo) il puntatore. a e b sono puntatori, l'invocazione crea una copia di quel puntatore, ottieni due puntatori il cui valore è lo stesso indirizzo.

La differenza sta nel ri-assegnamento. Se nel metodo scrivi a = new Prova() cambi il valore della copia del puntatore usata nel metodo ma non il valore di quello che hai usato per l'invocazione.
si ok, ma in swap non uso nessuna new e nemmeno in change.. però i due effetti sono diversi.. col primo non modifico i due oggetti, col secondo si..
__________________
the AUSTRALOPITECI
australopiteci è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2009, 00:14   #4
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
Nella swap scambi i valori dei puntatori all'interno del metodo, ma questi sono solo delle copie dei puntatori originali, quindi all'esterno del metodo non è accaduto nulla.
Nella change invece accedi tramite il puntatore ad un attributo dell'oggetto e lo modifichi.

EDIT: avevo scambiato change e swap, sorry

Ultima modifica di wingman87 : 18-04-2009 alle 00:59.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2009, 00:36   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da australopiteci Guarda i messaggi
si ok, ma in swap non uso nessuna new e nemmeno in change.. però i due effetti sono diversi.. col primo non modifico i due oggetti, col secondo si..
Ma non modifichi l'oggetto per via del passaggio, modifichi l'oggetto per via della dereferenziazione
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2009, 11:05   #6
australopiteci
Member
 
Iscritto dal: Feb 2005
Messaggi: 127
ok ragazzi ho capito, grazie mille..

la swap allora è possibile

Codice:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication1;





/**
 *
 * @author Administrator
 */
public class Main {

    
     public static class Prova
     {
         int x;
         int y;
         Prova (int xx,int yy)
             {
                x=xx;
                y=yy;
             }
     }

    private static void swap(Prova a, Prova b)
    {
        System.out.println("DENTRO PRIMA: uno= " + a.x + " due= " + b.x );
        Prova temp;
        temp=a;
        a=b;
        b=temp;
        System.out.println("DENTRO DOPO: uno= " + a.x + " due= " + b.x );
    }

     private static void swap2(Prova a, Prova b)
    {
        System.out.println("sw2 DENTRO PRIMA: uno= " + a.x + " due= " + b.x );
        Prova temp = new Prova(0,0);
        temp.x=a.x;

        a.x=b.x;
        b.x=temp.x;
        System.out.println("sw2 DENTRO DOPO: uno= " + a.x + " due= " + b.x );
    }


    private static void change(Prova a, Prova b)
    {
        a.x=999999999;
        b.x=999999999;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        System.out.println("Hello World!");

        Prova uno,due;

        uno = new Prova(1,1);
        due = new Prova(2,2);
        System.out.println("PRIMA: uno= " + uno.x + " due= " + due.x );
        swap(uno,due);
        System.out.println("DOPO: uno= " + uno.x + " due= " + due.x );


        //change(uno,due);
        //System.out.println("DOPO ANZ: uno= " + uno.x + " due= " + due.x );



        System.out.println("sw2 X PRIMA: uno= " + uno.x + " due= " + due.x );
        swap2(uno,due);
        System.out.println("sw2 X DOPO: uno= " + uno.x + " due= " + due.x );
    }

    

}
__________________
the AUSTRALOPITECI
australopiteci è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2009, 13:12   #7
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2794
E' corretto, però avresti potuto usare una variabile temporanea int invece di instanziare un nuovo oggetto solo per usarne un attributo.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 18-04-2009, 14:51   #8
australopiteci
Member
 
Iscritto dal: Feb 2005
Messaggi: 127
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
E' corretto, però avresti potuto usare una variabile temporanea int invece di instanziare un nuovo oggetto solo per usarne un attributo.
si è vero..

thx 4 all

ciao
__________________
the AUSTRALOPITECI
australopiteci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


 Recensione OPPO Find X10 Pro Max: un top di gamma completo con tre fotocamere da 200MP Recensione OPPO Find X10 Pro Max: un top di gam...
WoW Forever provato: il MMORPG che la community chiedeva da anni è arrivato WoW Forever provato: il MMORPG che la community ...
TCL P80 Ultra: con un display AMOLED opaco è una gioia per gli occhi e per le dita TCL P80 Ultra: con un display AMOLED opaco &egra...
HUAWEI MatePad Air recensione: OLED opaco e tastiera dedicata per lavorare meglio HUAWEI MatePad Air recensione: OLED opaco e tast...
NVIDIA RTX Spark: il PC Windows on ARM costruito per l'IA agentica NVIDIA RTX Spark: il PC Windows on ARM costruito...
Electronic Arts avvia una profonda riorg...
NVIDIA rilascia i driver 621.01: debutta...
Rowenta X-Clean 12: lavapavimenti con fu...
OPPO Enco X4 ufficiali: doppio driver Dy...
OPPO Find X10 e Find X10 Pro Max arrivan...
Recensione OPPO Enco X4: tecnologia da t...
Qualcomm, ricavi in calo e svolta verso ...
Blink Mini 4K+ e Pan-Tilt 2K+ in preordi...
Booking.com sotto indagine UE: nel mirin...
Generative Bionics apre la più gr...
Mercury 3 di Inception: 1 milione di tok...
RAM per portatili e PC all-in-one in off...
PHP, due falle critiche: patch alle 16 e...
ISRO sta proseguendo lo sviluppo della n...
Greenpeace interrompe il keynote di Jens...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:49.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v