Scala boxes and unboxes silently, so there is just one class. The compiler will try to use primitive values when it can, and uses boxed values when it can't. This happens using the Value Class mechanisms, which are classes that have specific properties that allow the compiler to take them apart when possible.
More on value classes: http://docs.scala-lang.org/overviews/core/value-classes.html