views:

32

answers:

5

is declaring/initializing primitives the same as creating new objects? from what i know when we create primitives, we also creating wrapper classes for them. im implementing on java btw.

A: 

No. Prinmitives are not objects in java.

Ingo
+2  A: 

No, declaring and initializing a primitive variable does not create an object. Let's take a class with two integer values - one using the wrapper type and one not.

public class Foo
{
    private int primitive = 10;
    private Integer wrapper = new Integer(10);
}

The value of the primitive variable is just the number 10. The value of the wrapper variable is a reference to an Integer object which in turn contains the number 10. So an instance of Foo would keep state for the number in primitive and the reference in wrapper.

There are wrapper classes for all primitive types in Java, but you don't use them automatically.

Jon Skeet
+2  A: 

Creating a primitive DOES NOT also create a wrapper class for them.

As for your original question: Declaring/initializing a primitive will create it on the stack, whereas declaring an object will allocate a variable to hold a reference to an object. Initializing the object will allocate it on the heap.

Hank Gay
+1  A: 

Answer: No.

Check this out: http://java.sun.com/docs/books/tutorial/java/nutsandbolts/datatypes.html

Tim Drisdelle
+4  A: 

No, assigning primitive values does not create any objects.

What you might be referring to is the fact that primitive values can be auto-boxed into the corresponding wrappers, when they are used in a context where a reference type (a.k.a "an object") is required:

int i = 13;     // this line does not create an object
Integer i2 = i; // at this line 13 is auto-boxed into an Integer object

char c = 'x';   // again: no object created:
List<Character> l = new ArrayList<Character>();
l.add(c);       // c is auto-boxed into a Character object

Also, I'll try to describe the difference between declare and initialize:

int i;          // an int-variable is declared
int j = 0;      // an int-variable is declared and initialized
i = 1;          // an int-variable is assigned a value, this is *not* initialization

A variable is "declared" when it is created for the first time (i.e. you specify the type and name of the variable). It is initialized when it's assigned a value during declaration.

Joachim Sauer