Java - 24 类变量和类方法
类变量(静态变量)
非静态变量 = 普通变量 = 实例变量
class Main{
public static void main(String[] args){
Child c1 = new Child("wu");
c1.join();
c1.count++;
Child c2 = new Child("xin");
c2.count++;
// 类变量可以通过类名访问
System.out.println("共有" + Child.count + "个小孩加入了游戏");
}
}
class Child{
private String name;
/* ======== */
public static int count = 0; // 被Child所有对象实例共享
public Child(String name){
this.name = name;
}
public void join(){
System.out.println(name + "加入了游戏...");
}
}
类变量内存布局
static变量在哪里?
- jdk8之前,在堆中class实例的尾部;
- 在方法区的静态域
static变量在类加载的时候生成
类变量细节
- 类变量在类加载时就初始化了,即使没有创建对象,只要类加载了,就可以使用类变量了
- 类变量的生命周期随类的加载开始,随类消亡而销毁
类方法(静态方法)
访问修饰符 static 数据返回类型 方法名(){}
类方法的调用
类名.类方法名
对象名.类方法名
使用场景
方法中不涉及到任何和对象相关的成员 (不创建实例也可以调用方法),则可以将方法设计成静态方法,提高开发效率
类方法细节
- 类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区
- 类方法中 不能使用和对象有关的关键字,比如: this 和 super
- 类方法中,只能访问静态变量和静态方法
class Person{
private static int total = 0;
private static void setTotalPerson(int total){
Person.total = total; // 不是this.total = total;
}
}
标签:24,Java,变量,static,Child,total,方法,加载
From: https://www.cnblogs.com/wxrwajiez/p/18518099