Array in Java

di il
4 risposte

Array in Java

Salve, non riesco a capire perchè in Java per dichiarare un array di interi si scrive
int [] v;
v=new int[10]

a differenza del C/C++ dove si scrive
int v[10]

Non riesco a capire perchè si debba richiamare new che se non ho capito male alloca lo spazio di memoria e restituisce un indirizzo che viene memorizzato in v.
Non riesco a capire il senso. int non è un dato primitivo? La new non viene usata quando richiamo il costruttore per creare un oggetto?

Grazie

4 Risposte

  • Re: Array in Java

    La domanda non è proprio chiarissima, forse ti stai ponendo il problema "esistenziale" sul perchè in Java gli oggetti sono più "visibili", tanto da usare new quando in altri linguaggi (C++) si dichiarano vettori "brutalmente".
    La risposta è duplice.
    In C++ banalmente si mantiene la compatibilità con C.
    Rammento che - inizialmente - il compilatore C++ non faceva altro che tradurre il sorgente C++ in ... C "liscio", che poi veniva compilato normalmente.

    La new non fa PER NULLA quello che pensi faccia (cioè una sorta di malloc() ).
  • Re: Array in Java

    reynold ha scritto:


    int non è un dato primitivo? La new non viene usata quando richiamo il costruttore per creare un oggetto?
    Sì, int è un tipo primitivo. Ma in Java gli array (di qualunque tipo!) sono degli oggetti.
    Quindi hanno un ciclo di vita che è sostanzialmente uguale a quello di qualunque altro oggetto: un array va prima istanziato, poi lo puoi usare, passare, restituire ecc e quando non sarà più "raggiungibile" allora verrà dato in pasto al garbage collector.
  • Re: Array in Java

    La new non fa PER NULLA quello che pensi faccia (cioè una sorta di malloc() ).
    Ho trovato scritto nella documentazione di java che l'operatore new restituisce l'indirizzo dell'oggetto che viene creato. Ho dedotto che, poichè l'oggetto occupa una certa area in memoria, la new restituisce l'indirizzo di questa area di memoria. Il costruttore della classe inizializza le variabili e assegna i valori. La new crea dinamicamente spazio in memoria.
    Io ho capito cosi ma se ho cannato di brutto correggetemi.
    Per il discorso degli array ho capito. Sono degli oggetti e vanno istanziati come tali
    Grazie
  • Re: Array in Java

    reynold ha scritto:


    Ho trovato scritto nella documentazione di java che l'operatore new restituisce l'indirizzo dell'oggetto che viene creato. Ho dedotto che, poichè l'oggetto occupa una certa area in memoria, la new restituisce l'indirizzo di questa area di memoria. Il costruttore della classe inizializza le variabili e assegna i valori. La new crea dinamicamente spazio in memoria.
    Sì, il succo grosso modo è quello. In Java comunque non ci sono indirizzi .. ci sono valori/variabili reference. Un reference per la JVM è alla fin fine, sotto sotto, un indirizzo. Ma per il programmatore Java un reference è qualcosa di molto "opaco" nel senso che lo puoi usare solo per accedere a campi/metodi degli oggetti (ed elementi degli array) ma nient'altro di più a parte assegnare il reference ad altre variabili.
Devi accedere o registrarti per scrivere nel forum
4 risposte