2011-12-31 21 views
7

Al construir un objeto nuevo, utilizo el siguiente código. En este código, ¿el objeto hace referencia a la variable 'a'?Java - Declaración de objeto e inicialización

BankAcc a = new BankAcc(); 

También, por interés, si lo anterior construye un nuevo objeto a la variable a, ¿qué hace el siguiente? ¿Simplemente crea un nuevo objeto sin una referencia variable/objeto?

new BankAcc(); 

Gracias!

Respuesta

7

Sí y sí.

El segundo puede ser útil cuando solo quiere usar un objeto anónimo sin preocuparse por tener una referencia. Al igual que:

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

+1 No he hecho mucho con los hilos todavía pero encuentro este ejemplo de por qué es posible que no necesite una referencia a un objeto interesante –

+1

. Tampoco necesita mantener una referencia si el objeto se agrega a una especie de colección como parte de su construcción interna/inicialización. –

+0

@ AaronJLang Esto también es muy interesante, no estoy seguro de dónde/cuándo harías esto, pero lo investigaré, gracias. –

1

Sí, sólo crea objeto, pero no va a ser asignado a cualquier referencia, por lo que no puede tener acceso a ese objeto y hacer todas las operaciones en ese objeto. Permanecerá allí en la memoria hasta que se recoja la basura.

1

Sí y sí.

Tenga en cuenta que la creación de una nueva instancia de una clase sin mantener una referencia no es desconocida (aunque no necesariamente ideal), ya que el constructor de la clase puede hacer todo lo que se espera de una operación determinada.

1

La segunda línea de código crea una instancia anónima de la clase BankAcc.

Es una forma rápida de crear una instancia de una clase, se utiliza generalmente cuando se necesita la referencia de una sola vez, por ejemplo, para pasar a una instancia de clase a un argumento de un método:

myFunc(new BankAcc()); 
0

Si la variable de referencia es "a" y sí new BankAcc(); crea un nuevo objeto sin ninguna variable por lo que es anónimo.

3

new BankAcc() crea el objeto y llama al constructor. A veces es necesario hacer eso, por ejemplo:

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

Eso es sólo un ejemplo de código de manera que se puede ver cómo se puede utilizar.

0

creo Sun alguna hasta bastante bien,

"El nuevo operador crea la instancia de una clase mediante la asignación de memoria para un nuevo objeto y devolver una referencia a la memoria. El nuevo operador también invoca al constructor de objetos."

Así que sí a es una referencia al objeto BankAcc que ejemplarizado con el operador new es decir, está asignando = el regreso de new a la variable a que es una referencia a una instancia de tipo BankAcc

En cuanto a su segunda punto, esto se puede hacer (compilar y ejecutar) pero no puedo ver muchas razones por las que lo haría a menos que el constructor hiciera algo 'importante'.

Editar: por favor refiérase a la respuesta del entramado de ejemplos en los que instanciar sin una referencia es aplicable

6

Como se explica en this Java tutorial, la creación de un objeto mediante

BankAcc a = new BankAcc(); 

es un multi-paso proceso. Usted tiene la declaración , instanciación y la inicialización paso

sólo pondrá de relieve las partes más interesantes de ese tutorial que son relevantes a su pregunta:

  • Para declaran una variable, usa type name; (en este caso BankAcc a;), que indica a se puede/se puede utilizar para referirse a los datos del tipo BankAcc. En este momento, a no hace referencia a ningún objeto

  • Para instantiatea utiliza la palabra clave new. Esto asignará memoria para un nuevo objeto y devolverá una referencia a esa memoria. El operador new necesita un único argumento de postfijo: una llamada a un constructor. Si usted asigna o no la referencia devuelta llamando al new a una variable o no, es su elección. También puede utilizar esta referencia directamente en una expresión (por ejemplo new Rectangle().height;)

  • El inicialización es la llamada real al constructor, que inicializa el nuevo objeto. El constructor es invocado por el operador new

-5

El objeto es una entidad en tiempo real o entidad del mundo real. Ejemplos de objeto es la pluma, coche, tablero, mesa, lápiz, etc.,

Supongamos ver el nombre de la clase es Book.here cómo declaramos objeto

libro obj = new Libro();

Cuestiones relacionadas