静态static

发布时间 2023-04-21 17:09:33作者: harper886

静态static

static概述

如果使用了static关键字,这样的内容就不是属于对象自己的,而是属于类的,只要是本类的对象都共享同一份数据.

这份数据保存在类中

image-20230420111108741

static关键字用于成员变量

如果一个成员变量使用了static关键字,那么这个对象就不属于自己而是属于类的

image-20230421161744794

static可以用来计数

代码示例

Student类

public class Student {
    private String name;
    private int age;
    static String room;
    //可以用来自动生成学号
    private static int count;//计数器,可以使用这个静态变量来计算生成对象的个数
    private int id;//学号

    public Student() {
        count++;
        id = count;
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
        count++;
        id = count;

    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

主函数

public class Demo09 {
    public static void main(String[] args) {
        Student two = new Student("易烊千玺", 23);
        two.room = "407实验室";//room为所有对象共享的
        System.out.println("姓名:" + two.getName() + ",年龄:" + two.getAge() + ",教室:" + two.room + ",学号:" + two.getId());
        Student one = new Student("蔡徐坤", 19);
        System.out.println("姓名:" + one.getName() + ",年龄:" + one.getAge() + ",教室:" + one.room + ",学号:" + one.getId());


    }
}



static关键字用于成员方法

静态方法概述

image-20230421164423560

原本的成员方法需要先创建对象才能使用,对于静态方法直接通过类名称使用方法

推荐使用--类名称.静态方法

不推荐--对象名称.静态方法

image-20230421164717350

image-20230421164940269

代码示例

public class Myclass {
    public static void methodStatic()
    {
        System.out.println("我是静态方法");
    }
    public void method()
    {
        System.out.println("我是成员方法");

    }
}

主函数

public class Demo10 {
    public static void main(String[] args) {
        Myclass one=new Myclass();
        one.method();
        one.methodStatic();//不推荐写法
        Myclass.methodStatic();//推荐写法
        hello();
    }
    public static void hello()
    {
        System.out.println("你好");
    }
}

注意事项

静态不能访问非静态

因为在内存中先有静态内容,然后有非静态内容

静态方法里面不能用this

image-20230421165027940

代码截图

image-20230421165044125

代码示例

public class Myclass {
    private String name;
    private static int age;

    public static void methodStatic() {
        System.out.println("我是静态方法");
//        System.out.println(name);
        //静态方法不能访问非静态变量
        System.out.println(age);
        //静态方法可以访问静态变量
//        System.out.println(this);
//        静态方法不能使用this
    }

    public void method() {
        System.out.println(name);
        //成员方法可以访问非静态变量
        System.out.println(age);
        //成员可以访问静态变量
        System.out.println("我是成员方法");
        System.out.println(this);//成员方法可以使用this

    }
}