数値+オブジェクト

最近,Javaの勉強を始めました.そしたら,少し気になることが...

Javaのプリミティブ型(言い方あってるかな?)は,オブジェクトではありません.
なのに,

  int n = 1;
  String s = n + "hoge";

とかできます.
オブジェクトではないのにこんなことができるなんて,なんだか不思議な感じがします.あ,もしかしてboxingされてます?

Webで理由を調べてみても,
 n + "hoge" とすればよい
ということはどこにでも書いてあるのに,なぜそれでそうなるのか,については,なかなか見つかりません.そうこうしているうちに,中間コードみた方が早いや,と思ったので
javap -c クラス名
のように,早速試してみると,
どうも String.valueOf が呼ばれているみたいだ,ということがわかりました.へー.
すっきりしたかも.
(あ,もしかして常識?)