Java static关键字

来源:互联网 发布:北欧沙发品牌 知乎 编辑:程序博客网 时间:2024/06/18 04:23

static 关键字
static可以修饰类(内部类),成员变量,方法
局部变量不能用static修饰
static修饰成员变量
static修饰的成员变量称为静态成员变量,没有使用static修饰的变量叫做实例成员变量
静态成员变量与实例成员变量的区别
1.从变量的个数上讲
静态成员变量归整个类所有,由所有的对象所共享
改变了静态成员变量的值,其他对象调用的结果是修改后的结果,影响其他对象。
实例成员变量归当前对象所有,值的改变不影响其他对象。
2.访问方式
静态成员变量的推荐访问方式,通过类名.静态成员变量的方式访问。
3.初始化时间
类初始化的时候静态成员变量初始化,实例成员变量在创建对象时才会初始化,静态成员
变量初始化早于实例成员变量,静态成员变量不依赖对象而存在。
static修饰方法
使用static修饰的方法称为静态方法
没有使用static修饰的方法称为实例方法
1.从访问方式上讲
静态方法既可以通过类名来访问也可以通过指向对象的引用来访问(不推荐)
2.成员的访问
静态方法只能访问类中的静态成员,不能访问实例成员
实例方法既可以访问静态成员,也可以访问实例成员
3.this和super的使用
静态方法中不能使用this与super。
而实例方法中可以使用this与super。

public class Static {    //静态成员变量    static int x=1;    //实例成员变量    int y = 2;    public void method(){}    public static void method1(){}    public static void main(String[] args) {        Static s = new Static();        Static s2 = new Static();        s.y=3;        System.out.println("y的值:"+s2.y);        s.x=3;        System.out.println("x的值:"+s2.x);        //实例方法的调用        s.method();        //静态方法的调用        s.method1();        Static.method1();        method1();    }}y的值:2x的值:3

静态成员变量的初始化
1.声明处初始化
2.使用静态初始化块
3.两种初始化执行顺序,按代码编写顺序执行
不能在构造器中对静态成员变量进行初始化,因为构造器在创建
对象的时候才会得到执行。而静态成员变量不需要创建任何对象
就能够进行访问。

public class StaticInit {    //声明处初始化    static int x=getX();    //静态初始化块    //静态初始化块会在初始化类时得到执行(在main方法执行之前执行)    static{        x = 2;        System.out.println("静态初始化块");    }    public static int getX(){        System.out.println("声明处初始化");        return 5;    }    public static void main(String[] args) {        System.out.println("main方法");    }}声明处初始化静态初始化块main方法
0 0
原创粉丝点击