Java学习笔记之---static
static不能修饰类,局部变量
(一)静态成员的特征
static+属性 静态属性
- 无论实例化出来多少个对象,都会共用同一块静态空间,类对象共享
- 静态成员从第一次被加载之后一直到这个类不再有任何对象被使用,也就是说被彻底的销毁的时候,才会进行资源的释放,生命周期长
public class Pig { String name; static int price; } class PigTest{ public static void main(String[] args){ Pig a=new Pig(); a.name="小乳猪"; a.price=1000; Pig b=new Pig(); b.name="宠物猪"; b.price=500; System.out.println(a.name+":"+a.price); System.out.println(b.name+":"+b.price); }
运行结果:
小乳猪:500
宠物猪:500
(二)静态成员访问方法
- 对象名.成员
- 类名.成员 (推荐使用) 静态的访问方法
(三)静态方法(类方法)
static+方法
(四)静态方法的调用
- 对象名.方法
- 类名.方法
(五)总结
1.静态方法中不能直接访问同一个类中的非静态成员,可以通过实例化对象进行调用;只能直接调用同一个类中静态成员,
2.静态方法中不能使用this和super,this和super是对象范畴的,而静态方法是类范畴的
3.父类中的静态方法不能被子类重写
(六)静态代码块
优先级:从低到高
- 普通代码块:顺序执行,先出现,先执行
- 构造代码块:创建对象时调用,优先于构造方法执行
- 静态代码块:类加载时调用,优先于构造代码块执行
public class Pig { String name; static int price; public void eat(String name,int price){ this.price=price; this.name=name; } public void run(){ System.out.println("我是普通代码块"); } { System.out.println("我是构造代码块"); } static{ System.out.println("我是静态代码块"); } }
运行结果:
我是静态代码块
我是构造代码块
我是普通代码块