77_初识Java_static_学习

77_初识Java_static_学习

1、static修饰属性-静态属性或类变量
	(1)、在类加载的时候一起加载入方法区中的静态域中
	(2)、先于对象存在
	(3)、访问方式:
			对象名.属性名 
			类型.属性名   --- 推荐用这种
2、static修饰方法-静态方法
	(1)、在类加载的时候一起加载入方法区中的静态域中
	(2)、先于对象存在
	(3)、访问方式:
			对象名.方法名 
			类型.方法名   --- 推荐用这种
	(4)、静态方法中不能访问非静态的属性
	(5)、静态方法中不能访问非静态方法
	(6)、静态方法中不能使用this

1、static修饰属性被所有对象共享

  • 测试代码

public class LearnStatic01 {

    int id;
    static int sid;
    //程序的入口
    public static void main(String[] args) {
        LearnStatic01 s1=new LearnStatic01();
        s1.id=1;
        s1.sid=1;
        LearnStatic01 s2=new LearnStatic01();
        s2.id=2;
        s2.sid=2;
        LearnStatic01 s3=new LearnStatic01();
        s3.id=3;
        s3.sid=3;

        System.out.println(s1.id);
        System.out.println(s2.id);
        System.out.println(s3.id);

        System.out.println(s1.sid);
        System.out.println(s2.sid);
        System.out.println(s3.sid);
    }
}

  • 测试代码运行
    77_初识Java_static_学习

2、尝试画内存图理解

77_初识Java_static_学习

3、static修饰的方法-静态方法

public class LearnStatic02 {
    int id;
    static int sid;
    public void a(){
        System.out.println(id);
        System.out.println(sid);
        System.out.println("========aaaa");
    }
    //public与static都是修饰符,没有先后之分
    public static void b(){
        //System.out.println(id);//静态方法中不能访问非静态的属性
        //System.out.println(this.id);//静态方法中不能使用this
        System.out.println(sid);
        //a();静态方法中不能访问非静态方法
        System.out.println("========bbbb");
    }

    //程序的入口
    public static void main(String[] args) {
        LearnStatic02 s=new LearnStatic02();
        s.a();
        s.b();
        LearnStatic02.b();//静态方法可以用 类名.方法名 偶用

    }
}
上一篇:Javascript:比较为null – !== vs!=


下一篇:web前端程序员代码编辑器推荐