1.static修饰的成员变量
static修饰的成员变量,称为静态成员变量,静态成员变量最大的特性:不属于某个具体的对象,是所有对象所共享的。
【静态成员变量特性】
- 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中
- 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问
- 类变量存储在方法区当中
- 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁
2.static修饰的成员方法
static修饰的成员方法,成为静态方法,其也是不属于某个具体的对象,是所有对象共享的.
【静态成员方法特性】
- 不属于某个具体的对象,是类的属性,是所有对象共享的,不存在对象的空间中
- 既可以通过对象访问,也可以通过类名访问,但是一般更推荐使用类名访问,体现其实类的属性
3.成员方法与静态成员变量一样储存在方法区中
4.生命周期伴随类的一生
package demo3;
public class Demo3 {
static String name;
int age;
public static void func(){
System.out.println("这是一个静态的成员方法");
}
}
class Demo99{
public static void main(String[] args) {
Demo3 demo3=new Demo3();
Demo3.func();//使用类名来调用静态的成员方法
demo3.func();//使用对象的引用来调用静态的成员方法
demo3.name="yaoyao";//使用对象的引用对静态的成员变量进行赋值
Demo3.name="哈哈";//使用类名对静态成员变量进行赋值
System.out.println(demo3.name);//使用对象的引用来调用静态
//成员变量
System.out.println(Demo3.name);//使用类名来调用静态成员变量
}
}
3. 如何对静态成员进行初始化
方法一:
在创建时进行初始化
方法二:
后续初始化
方法三:
用set方法进行初始化
方法四:
使用静态的代码块进行初始化
但是我发现使用非静态的代码块好像也可以对静态成员变量进行初始化
运行结果如图:(结果就是非静态的代码块覆盖掉了静态代码块所赋的值)
方法五:
在构造方法中初始化静态成员变量(仅仅是尝试)
运行结果:(目前根据运行结果来看是可以的)
应该还有很多方法来初始化我们的静态成员变量,我们可以不断尝试下…
🐾完…