Can a single object in Java have two distinct names?
In Java, gli oggetti non hanno nomi, hanno riferimenti.
Le variabili di tutti i tipi hanno nomi, ma le variabili sono distinte dagli oggetti. Le variabili possono fare riferimento agli oggetti.
Is it possible for two object names references to point to the same object (i.e. piece of memory) ?
Sì, due o più riferimenti, ad esempio da parametri e / o variabili locali e / o variabili di istanza e / o variabili statiche possono fare riferimento allo stesso oggetto.
Questo è ciò che accade quando copi una variabile che è un tipo di oggetto (per semplice assegnazione, ad esempio a = b;
): il riferimento viene copiato, cioè duplicato - mentre l'oggetto stesso non è influenzato da tale assegnazione (è solo influenzato da ciò che potresti fare in seguito con il riferimento). Con tale assegnazione la nuova variabile, assegnazione del post, si riferisce allo stesso oggetto e il riferimento della vecchia variabile continua a rimanere valido.
Questo stesso tipo di copia di riferimento avviene durante il passaggio dei parametri, che è proprio come l'assegnazione.
Naturalmente, qualsiasi riferimento (attivo) impedisce che l'oggetto venga raccolto.
Un riferimento valido è uno che è ancora in ambito o raggiungibile da qualcosa che è ancora in ambito. Quando una funzione termina, tutte le sue variabili e parametri locali escono dall'ambito di applicazione, rilasciando eventuali riferimenti a quelli in attesa.