2011-12-27 19 views
16

Hace poco un entrevistador solicitó definir la diferencia entre los objetos y los primitivos. Parecía una pregunta extraña considerando que todos los idiomas comienzan con un primitivo. ¿Cómo hubieras respondido esta pregunta?objeto frente a la primitiva

También debería tener en cuenta que esta entrevista fue para un puesto de desarrollo front-end, por lo que el lenguaje (supongo) al que se refería era JavaScript.

+2

Mencionó que supone que el entrevistador se estaba refiriendo a JavaScript. Creo que deberías haberle preguntado solo para estar seguro: no tiene sentido adivinar lo que está preguntando cuando una simple pregunta hubiera aclarado eso. –

+1

Un buen consejo, determinar lo que estaba obteniendo habría ayudado. –

Respuesta

30

Una primitiva es un tipo de datos que no está compuesto de otros tipos de datos y no se puede desglosar más. Es como los átomos en el escenario de programación. Digo átomo porque átomo es una unidad básica de materia y no hay nada que se pueda derivar de ella.

Quiero decir, un int en C no se puede desglosar en un tipo de datos más pequeño. Por otro lado, un objeto puede considerarse una molécula, que consta de más de un tipo primitivo. Por ejemplo, string viene como parte de la biblioteca estándar de C++; sin embargo, es un objeto y está compuesto de tipos de datos más pequeños internamente y contiene métodos.

Es importante tener en cuenta que no todos los lenguajes orientados a objetos están basados ​​en clases (por ejemplo, Javascript) No se puede definir una clase en Javascript, por lo que un objeto es bastante diferente aquí. Aunque todo en Javascript es un objeto (Ruby también), el objeto Number es realmente un contenedor para una primitiva interna.

7

De Java perspectiva:

  1. Una primitiva no está compuesto de otros tipos de datos. Donde como un objeto puede ser y generalmente lo es.
  2. Las primitivas se pasan por valor, es decir, se pasa una copia de la primitiva . Mientras que para los objetos, se pasa la copia de la referencia, , no el objeto en sí.
  3. Los primitivos son tipos de datos independientes, es decir, no existe una jerarquía/superclase para ellos. Mientras que cada Objeto es descendiente de la clase "Objeto".
  4. Cada objeto tiene algunos métodos predeterminados de sí mismo, que hereda de la clase Object (por ejemplo, toString(), clone(), wait(), notify(), notifyAll(), etc.). Las primitivas no tienen asociado ningún método .
  5. Las primitivas son inmutables, se pueden usar como tales sin ninguna atención especial . Mientras que para los objetos, se debe tener especial cuidado, son no inmutables por defecto.
  6. Con los objetos, hay dos tipos de copias, Superficial y Profunda. Hay es una diferencia significativa entre ellos. Entonces la elección depende de cómo pretendemos usarlos. Con las primitivas, no hay tal diferencia , todo es por defecto solo copia profunda.
Cuestiones relacionadas