- 静态的特点
- 静态的内存图
- 静态的注意事项
- 静态变量和成员变量的区别
- main方法
静态的特点
1、可以修饰成员变量和成员方法
2、随着类的加载而加载
3、优先于对象存在
4、被类的所有对象共享(这是我们判断该不该使用静态的依据)
5、通过类名调用(既可以通过对象名调用,也可以通过类名调用,建议通过类名调用)
静态的内存图
静态的内容在方法区的静态区
静态的注意事项
1、在静态中没有this对象
2、静态只能访问静态
静态变量和成员变量的区别
1、所属不同
- 静态变量:属于类,类变量
- 成员变量:属于对象,对象变量,实例变量
2、内存位置不同
- 静态变量:方法区的静态区
- 成员变量:堆内存
3、生命周期不同
- 静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
- 成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失
4、调用不同
- 静态变量:可以通过对象名调用,也可以通过类名调用
- 成员变量:只能通过对象名调用
main方法
public static void main(String[] args){}
1、public:公共的,访问权限是最大的,由于main方法是被jvm调用,所以访问权限足够大
2、static:静态的,不需要创建对象,通过类名就可以,方便jvm调用
3、void:方法的返回值是返回给调用者,而main方法是被jvm调用,所以返回内容给jvm没有意义
4、main:是一个常见的方法入口
5、String[] args:早期是为了接收键盘录入的数据
在工具类中使用静态方法,将其构造函数私有化,通过类直接调用方法。
class Teacher {
public int num = 10;
public static int num2 = 20;
public void show() {
System.out.println(num); //隐含的告诉你访问的是成员变量
System.out.println(this.num); //明确的告诉你访问的是成员变量
System.out.println(num2);
//function();
//function2();
}
public static void method() {
//无法从静态上下文中引用非静态 变量 num
//System.out.println(num);
System.out.println(num2);
//无法从静态上下文中引用非静态 方法 function()
//function();
function2();
}
public void function() {
}
public static void function2() {
}
}
class TeacherDemo {
public static void main(String[] args) {
//创建对象
Teacher t = new Teacher();
t.show();
System.out.println("------------");
t.method();
}
}