static 表示全局的静态的优先被加载的。,可以用来修饰 方法 变量 和代码块。被static修饰的方法叫静态方法 被static修饰的变量 叫成员变量。
被static修饰的属性不需要创建对象 可以直接类.属性。被本类对象共享。
生活中的例子,老师这里有十个苹果全班有十个同学,一人拿一个。这样就可以把属性修饰为成员属性。成员变量又叫做类变量,在类加载的时候自动初始化。
编程实现 班级有十本书 小明 拿走一本 小红拿走一本 小李拿走一本 最后还有几本
class Books{ static int count=10; } public class Test { public static void main(String[] args) { Books xiaoming = new Books(); xiaoming.count--; Books xiaohong = new Books(); xiaohong.count--; Books xiaoli = new Books(); xiaoli.count--; System.out.println(xiaoli.count); } }
class Books{ static int count=10; public Books(String string){ count--; } } public class Test { public static void main(String[] args) { Books m = new Books("小明 "); System.out.println(m.count); Books h = new Books("小红"); System.out.println(h.count); Books l = new Books("小李"); System.out.println(l.count); } }
静态变量 实例变量
类加载到额时候已经创建了 对象创建的时候才会创建
类被销毁变量被释放 对象被销毁变量被释放
属于类不属于对象 在方法区 属于对象在堆中
可以不创建对象进行方法的调用、
package com.hainniu.algorithm; public class TestStaticMethod { int n = 11; static int k =22; public void f(){ System.out.println(n); System.out.println(k); } public static void ff(){ System.out.println(k); } public static void main(String[] args) { // TODO Auto-generated method stub //TestStaticMethod t = new TestStaticMethod(); TestStaticMethod.ff(); } }
静态方法 实例方法
只能访问静态成员 可以访问静态 也可以访问非静态成员
不能使用this,super 可以使用
如果有些代码必须在项目启动的时候就执行,需要使用静态代码块。这种代码是主动执行的,需要在项目启动的时候就初始化。
静态代码块只执行一次。
格式:
import static 包名.类名.静态变量名(方法);
静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”即可调用类方法,更加方便
原文:https://www.cnblogs.com/yaojun3/p/11529565.html