JAVA关键字static举例子进行说明讲解

static关键字

一旦使用了static关键字 , 那么这样的内容不再属于对象自己 , 而是属于类 , 所以凡是本类的对象 , 都共享同一份

staitc关键字修饰成员变量

public class Person {
    private String name;
    private int age;
    static String classroom;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public static String getClassroom() {
        return classroom;
    }

    public static void setClassroom(String classroom) {
        Person.classroom = classroom;
    }

    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 DemoPerson {
    public static void main(String[] args) {
        Person one = new Person();
        Person two = new Person();
        one.setAge(18);
        one.setName("詹姆斯");
        one.setClassroom("NBA");

        System.out.println(one.getAge()+"..."+one.getName()+"..."+one.getClassroom());
        System.out.println("----------------");
        two.setName("韦德");
        two.setAge(17);
        System.out.println(two.getAge()+"..."+two.getName()+"..."+two.getClassroom());
    }

}

当把classroom用static修饰的时候 , 这样就new出来的对象都可以共享同一个值 , 当然你不想使用这个共用的值 ,你也可以自己来对他进行赋值

staitc关键字修饰成员方法

public class Student {
    public void method(){
        System.out.println("这是一个方法");
    }
    public static void staticmethod(){
        System.out.println("这是一个静态方法");
    }
}
public class DemoStudent {
    public static void main(String[] args) {
        Student student = new Student();
        student.method();
        student.staticmethod(); //这是通过对象进行调用静态方法 , 正确但是不推荐
        Student.staticmethod(); //调用静态方法直接使用类进行调用即可
    }
}

另外静态不可以调用非静态

public class TestClass {
    String name;
    static int age;
    //这是一个成员方法
    public void  method(){
        System.out.println(age);
    }
    //这是一个静态方法
    public static void  staticmethod(){
        //静态不可以直接访问非静态方法
        System.out.println(name);
    }
}

静态代码块

public class 类名称{
    static {
        //静态代码块的内容
    }
}

直接在一个类里面写一个static加一个{}

特点 : 当第一次用到本类时 ,静态代码块执行唯一的一次
静态代码块优先于构造方法执行
静态代码块的典型用途 :
用来一次性的对静态成员变量进行赋值

你可能感兴趣的:(JAVA基础)