这两种变量都实现了对象间数据共享,但static所修饰的变量值时可以改变的,final所修饰的值是不可以改变的,或初始化时没有赋值,仅可以在构造函数中赋值一次。
private static String str=new String("abc");
1.赋值语句首先看右边:new String("abc"); 这条语句用String的构造函数创建了一个字符串,它首先会查看字符串池中有没有"abc"这条字符串。如果有,就创建一个引用指向这条字符串;如果没有,就创建该字符串。
2.然后看左边:private static String str,该语句会在静态区开辟一块空间,存放第一步中创建字符串的地址,也就是指向第一步中创建的字符串。 |