static关键字

static 可以修饰属性、方法、代码块、内部类。

static修饰属性:

package com.demo4;

/**
 * @Auther:liu
 * @Date:-14:24:35
 * @Description:IntelliJ IDEA
 * @Version:1.0
 */
public class Test {
    int id;
    static int sid;

    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        Test t1 = new Test();
        t1.id=10;
        t1.sid=10;
        Test t2 = new Test();
        t2.id=20;
        t2.sid=20;
        Test t3 = new Test();
        t3.id=30;
        t3.sid=30;
        System.out.println(t1.id);
        System.out.println(t2.id);
        System.out.println(t3.id);
        System.out.println(t1.sid);
        System.out.println(t2.sid);
        System.out.println(t3.sid);
    }
}

内存分析

 

 

一般官方的推荐访问方式:类名.属性名访问

 

 static修饰属性总结:

在类加载的时候一起加载如方法区的静态域中

先于对象存在

访问方式:对象名.属性名    类名.属性名

static修饰属性的应用场景
某些特定的数据想要在内存中共享,只有一块---》这个情况下就可以用static修饰;

package com.demo4;

/**
 * @Auther:liu
 * @Date:-16:00:49
 * @Description:IntelliJ IDEA
 * @Version:1.0
 */
public class MsbStudent {
    int id;
    String name;
    static String school;

    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        MsbStudent.school="海淀中学";
        MsbStudent s1=new MsbStudent();
        s1.id=1;
        s1.name="张三";
//        s1.school="海淀中学";
        MsbStudent s2=new MsbStudent();
        s2.id=2;
        s2.name="李四";
//        s2.school="海淀中学";
        System.out.println(s1.school);
    }
}

属性:

静态属性(类变量)

非静态属性:(实例变量)

static修饰方法package com.demo4;

/**
 * @Auther:liu
 * @Date:-17:11:01
 * @Description:IntelliJ IDEA
 * @Version:1.0
 */
public class Demo {
    int id;
    static  int sid;

    public void a(){
        System.out.println(id);
        System.out.println(sid);
        System.out.println("------a");
    }
    //1.static public 都是修饰符,并列的没有先后顺序,先写谁后写谁都行
    static public void b(){
        //System.out.println(this.id);//4.在静态方法中不能使用this关键字
        //a();//3.在静态方法中不能访问非静态方法
        //System.out.println(id);//2在静态方法中不能访问非静态的属性,
        System.out.println(sid);
        System.out.println("------b");
    }

    //这是一个main方法:是程序的入口
    public static void main(String[] args) {
        //5 非静态的方法可以用对象名.方法名去调用
        Demo d=new Demo();
        d.a();
        //6.静态方法可以用 对象名.方法名调用  也可以用类名.方法名(推荐)
        Demo.b();
        d.b();
    }
}

 

posted @ 2022-08-22 17:32  爱的加勒比  阅读(12)  评论(0)    收藏  举报