2011-12-31 5 views
7

Durante la costruzione di un nuovo oggetto, utilizzo il seguente codice. In questo codice, l'oggetto fa riferimento alla variabile 'a'?Java - Dichiarazione dell'oggetto e inizializzazione

BankAcc a = new BankAcc(); 

Inoltre, per interesse, se quanto sopra costruisce un nuovo oggetto alla variabile a, che cosa fa il seguente fare? Crea semplicemente un nuovo oggetto senza un riferimento a variabile/oggetto?

new BankAcc(); 

Grazie!

risposta

7

Sì e sì.

Il secondo potrebbe essere utile quando si desidera utilizzare un oggetto anonimo senza preoccuparsi di avere un riferimento. Come:

new Thread(new Runnable() { 
    public void run() { } 
}).start(); 
+0

+1 Non ho ancora lavorato molto con i thread, ma trovo questo esempio del perché potresti non aver bisogno di un riferimento a un oggetto interessante –

+1

Inoltre, non è necessario mantenere un riferimento se l'oggetto si aggiunge a una sorta di collezione come parte della sua costruzione/inizializzazione interna. –

+0

@AaronJLang Anche questo è molto interessante, non so dove/quando lo faresti, ma lo esaminerò, grazie. –

1

Sì, crea solo oggetto, ma non sarà assegnata a un qualsiasi riferimento, in modo non è possibile accedere a tale oggetto e fare qualsiasi operazione su tale oggetto. Rimarrà in memoria finché non verranno raccolti i rifiuti.

1

Sì, e sì.

Si noti che la creazione di una nuova istanza di una classe senza tenere un riferimento non è inaudita (sebbene non necessariamente ideale), in quanto il costruttore della classe può eseguire tutto ciò che è previsto per una determinata operazione.

1

La seconda riga di codice crea un'istanza anonima della classe BankAcc.

Si tratta di un modo rapido per creare un'istanza di una classe, di solito è utilizzato quando è necessario il riferimento una sola volta, ad esempio per passare un'istanza di classe a un metodo di ragionamento:

myFunc(new BankAcc()); 
0

Sì, il riferimento variabile è "a" e sì new BankAcc(); crea un nuovo oggetto senza variabile, rendendolo così anonimo.

3

new BankAcc() crea l'oggetto e chiama il costruttore. A volte è necessario per farlo, ad esempio:

Rectangle rect = new Rectangle(new Point(100, 200), new Dimension(100, 300)); 

Questo è solo un esempio di codice in modo che si può vedere come esso può essere utilizzato.

0

ho Sun che alcuni in su abbastanza bene,

"Il nuovo operatore crea un'istanza di una classe assegnando memoria per un nuovo oggetto e restituire un riferimento a quel ricordo. L'operatore new invoca anche il costruttore dell'oggetto."

Quindi sì a è un riferimento all'oggetto BankAcc si istanziato con l'operatore new IE si sta assegnando = il ritorno della new alla variabile a che è un riferimento a un'istanza di tipo BankAcc

Per quanto riguarda il secondo punto, questo può essere fatto (compilato ed eseguito) ma non vedo molti motivi per cui lo faresti a meno che il costruttore non faccia qualcosa di "importante".

Edit: fare riferimento alla risposta di Tudor per esempi in cui istanziazione senza riferimento è applicabile

6

Come spiegato nel this Java tutorial, la creazione di un oggetto utilizzando

BankAcc a = new BankAcc(); 

è un multi-step processi. Hai la dichiarazione, esemplificazione e la di inizializzazione passo

mi metterà in evidenza solo le parti più interessanti che tutorial che sono rilevanti per la tua domanda:

  • Per dichiarare un variabile, si utilizza type name; (in questo caso BankAcc a;), che indica a sarà/può essere utilizzato per fare riferimento ai dati di tipo BankAcc. In questo momento, a non fa riferimento alcun oggetto

  • Per instantiatea si utilizza la parola chiave new. Questo alloca memoria per un nuovo oggetto e restituisce un riferimento a quella memoria. L'operatore new ha bisogno di un singolo argomento postfix: una chiamata a un costruttore. Se si assegna o meno il riferimento restituito chiamando new a una variabile o meno, è la vostra scelta. È inoltre possibile utilizzare questo riferimento direttamente in un'espressione (per esempio new Rectangle().height;)

  • Il inizializzazione è la chiamata effettiva al costruttore che inizializza il nuovo oggetto. Il costruttore è invocato dall'operatore new

-5

L'oggetto è un'entità in tempo reale o entità del mondo reale. Esempi di oggetti è la penna, macchina, bordo, tabella, matita ecc,

Supponiamo che vedi il tuo nome classe è Book.here come dichiariamo oggetto

Prenota obj = new Book();