java常量池是如何存放基本类型字面量的?和String 的处理方式是一样的吗?常量池的设计原则是什么?

public class Test
{
public final int a=5;
public final int b=5;
public final int c=5;

String d="abc";
String e="abc";
String f="abc";
}

常量池在存储 基本类型的字面量 ,和存储字符串 的存储方式是否一样,
比如说 字符串[color=red]"abc"[/color] ,在常量池中只存储一份,
那么基本类型 字面量 比如说上面定义的 [color=blue]5 [/color], 他会在编译 在常量池中存储几个?
java常量池有什么设计原则吗?
[color=blue]希望看懂我的意思,真正研究过jvm 的高手回答问题,谢谢![/color]