最近在看java虚拟机的知识。关于常量在java内存中的存储有一定的疑惑?主要有以下几点:

疑问:
1,方法区存储的常量是保存在方法区常量池中么。
2,方法区保存的常量包括方法内的局部常量么。或者说当方法运行时,方法入栈,方法体内的常量会保存在方法区么。
3,方法区常量池和字符串常量池有什么区别。
4,方法区常量池和运行时常量池有什么区别。
5,字符串常量池内究竟是保存引用还是保存对象呢。常量池呢?
6,字符串常量池数据结构StringTable的底层实现看网上有的说是类似hashMap 有的说是类似hashSet。 究竟底层实现是哪种呢??