先说
class Test{
static final String strName="abc";
}
这种赋值,听人说,是只有在第一个对象实例化的时候会赋值,是吗?
class Test{
static final HashMap<String, String> hm = new HashMap<String, String>();
Test()
{
hm.put("abc","123");
}
}
这种类型,只能在构造函数里初始化,要怎么只初始化一次呢?(只从语言角度讲,先不考虑hashTable了)
------解决方案--------------------
把?HashMap提到类外边,做个单例
------解决方案--------------------
class base
{
public base()
{
System.out.println("base");
}
}
class useBase
{
static final base b=new base();
public useBase()
{
}
}
public class classTest {
public static void main(String args[])
{
useBase ub1=new useBase();
useBase ub2=new useBase();
}
}
------解决方案--------------------
第一种是不是在第一个对象实例化的时候赋值的,是在jvm启动的时候被赋值的;
第二种也不是只能在构造函数里初始化,你可以做个测试,调用的时候你一样可以对他进行put进对象,我的理解是,用final修饰的变量,它指向的内存地址就是固定死了,但里面存放的内容可以发生变化。