Concetto di variabile di riferimento (Java)

0

Sto lavorando a modo mio (lentamente, ma sicuramente) attraverso un libro:

Introduction to Java Programming, 10th edition, Comprehensive, by J. Liang (ISBN10: 0133761312)

Spiega l'idea di una variabile di riferimento in un modo che capisco. Tuttavia, l'idea non mi sembra intuitiva. Questo mi fa pensare che mi manca qualcosa nella mia comprensione:

"The declaration of an array variable does not allocate any space in memory for the array. It creates only a storage location for the reference to an array."

Tuttavia, se lo faccio:

double[] MyList;

Non ho creato una variabile MyList di dimensioni doppie? Quando lo faccio, la mia comprensione è che viene creato lo spazio in memoria della dimensione doppia, allo stesso modo di un tipo di dati primitivo (che, a mio avviso, dovrebbe essere diverso).

Un'altra cosa che ho problemi con:

"You cannot assign elements to an array unless it has already been created"

Perché esiste una possibilità di dichiarare un array, invece di crearlo contemporaneamente? Sia per creare e dichiarare una matrice che devo fare:

double[] myList = new double[10]'

Perché non può essere come:

double[10] myList;

Perché devo usare "nuovo"? Perché devo dire a Java, ancora una volta, che è un tipo double quando l'ho già specificato? Non vedo questo spreco in C ++, Python.

Un'altra cosa:

"An array variable that appears to hold an array actually contains a reference to that array"

Qual è la differenza tra i due? Perché deve essere così? Non l'ho mai incontrato in altre lingue. Tutto il resto è chiaro tranne questa piccola sezione.

    
posta silenceislife 11.07.2016 - 10:46
fonte

1 risposta

2

Have I not created a variable MyList of size double?

Con double[] MyList; , hai semplicemente creato una variabile che può in seguito riferirsi a un array di double s. Non hai creato double s. È essenzialmente un puntatore.

Why is there an option of declaring an array, instead of creating it at once?

A volte non vorrai crearlo subito. Ad esempio, se crei una classe in cui il costruttore accetta una matrice e fa riferimento ad essa con una variabile, non vorrai crearla, poiché è già stata creata.

Why do I have to use 'new'?

Perché new è il modo per creare un oggetto.

Why do I have to tell Java, again, that it is a type double when I have already specified it?

Perché è ciò che è richiesto con new . Lo zucchero sintattico avrebbe potuto essere aggiunto, ma non lo era.

What is the distinction between the two? Why does it have to be that way? I've never encountered this in other languages.

È strano. Hai menzionato C ++ come qualcosa che hai sperimentato, ma non sembra che tu abbia affrontato i puntatori, che sono essenzialmente le variabili Java non redditizie.

    
risposta data 11.07.2016 - 11:20
fonte

Leggi altre domande sui tag