詳しくは、以下のissueに全部書いてある。
https://bugs.openjdk.java.net/browse/JDK-8176335
public static Character valueOf(char c) {
if (c <= 127) { // must cache
return CharacterCache.cache[(int)c];
}
return new Character(c);
}
このようにvalueOf
メソッドには、キャッシュの仕組みがあり、インスタンスの生成コストが低い、とのこと。