一、基础概念
静态关键字 static 是成员修饰符,直接用于修饰成员。
(一)特点:
1.被静态修饰的成果,可以直接被类名所调用。
2.静态成员优先于对象存在。
3.静态成员随着类的加载而加载。随着类的消失而消失。静态成员的生命周期很长。
(二)注意事项:
1.静态方法只能访问静态成员,不能访问非静态成员。
2.静态方法中不能出现this或者super关键字。
3.主函数是静态的。
(三)什么时候用:
1.成员变量:如果数据在所有对象中都是一样的。直接用静态修饰。
2.成员函数:如果函数没有访问过对象中的属性数据,那么该函数就是静态的。
(四)成员变量和静态变量的区别:
1.名称:成员变量也叫实例变量。静态变量也叫类变量。
2.内存存储:成员变量存储到堆内存的对象中。静态变量存储到方法区的静态区中。
3.生命周期:成员变量随着对象的出现而出现,随着对象的消失而消失。静态变量随着类的加载而加载。随着类的消失而消失。
(五)静态代码块:
1.随着类的加载而执行,而且只执行一次。
2.给类进行初始化。
3.类不需要创建对象,但是需要初始化。这是将部分代码存储到静态代码块中。
二、实例代码
class Person { private String name; private int age; Person(String name,int age) { this.name = name; this.age = age; } public void show() { System.out.println("name="+name+",age"+age); } //既然sleep方法没有访问到对象中的属性,可以用static修饰该方法。(节约内存的使用) public static void sleep() { System.out.println("sleep......"); } //静态代码块 static { System.out.println("static......"); } } class StaticDemo { public static void main(String[] args) { Person p = new Person("xiangming",20); Person.sleep();//调用sleep方法,可以通过类名的方式访问。 Person.sleep();//用类名调用的方法必须通过指定修饰符static来修饰 } }
三、代码运行
原文地址:https://www.cnblogs.com/zhuxr/p/8850227.html
时间: 2024-10-11 00:44:05