<p>I want to convert a primitive to a string, and I tried:</p>

<pre><code>myInt.toString();
</code></pre>

<p>This fails with the error:</p>

<pre><code>int cannot be dereferenced
</code></pre>

<p>Now, I get that primitives are not reference types (ie, not an Object) and so cannot have methods.  However, Java 5 introduced autoboxing and unboxing (a la C#... which I never liked in C#, but that's beside the point).  So with autoboxing, I would expect the above to convert myInt to an Integer and then call toString() on that.</p>

<p>Furthermore, I believe C# allows such a call, unless I remember incorrectly.  Is this just an unfortunate shortcoming of Java's autoboxing/unboxing specification, or is there a good reason for this?</p>

Java autoboxing/unboxing doesn't go to the extent to allow you to dereference a primitive, so your compiler prevents it. Your compiler still knows
```
myInt
```
as a primitive.  There's a paper about this issue at
jcp.org
.
Autoboxing is mainly useful during assignment or parameter passing -- allowing you to pass a primitive as an object (or vice versa), or assign a primitive to an object (or vice versa).
So unfortunately, you would have to do it like this: (kudos Patrick, I switched to your way)
```
```
Integer.toString(myInt);
```
```