Static关键字的使用

时间:2022-07-25
本文章向大家介绍Static关键字的使用,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Static关键字的使用

static关键字的作用:

用来修饰成员变量和方法,被修饰的成员是属于类的,而不单单是属于某个对象的,也就是说,可以不靠对象来调用。

首先我们来介绍类变量

当static修饰成员变量时,该变量称为类变量,该类的每个对象都共享同一个类变量的值,任何

对象都可以更改该变量的值,但也可以在不创建该类对象的情况下,通过类名对类变量进行操作

命名格式

static 数据类型 变量名;

static int age;

下面我们来举个例子,让大家体会体会类变量的作用

就比如梁山有108位好汉我们给这108位好汉按照次序每人一个编号,这就需要使用到类变量

定义一个Person类

public class Person {
    private int age;
    private  String name;
    private   int id;
    private  static  int count=1;
    public  int getId() {
        return id;
    }

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

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

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

    public Person() {
    }

    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

主函数

public class Test {
    public static void main(String[] args) {
        Person one = new Person(18, "及时雨宋江");
        System.out.println(one);
        Person two = new Person(18, "卢俊义");
        System.out.println(two);

    }
}

结果

我们看到id的数值在不断的+1,这是因为他们的id都等于了一个公共的类变量

接下来我们来介绍静态方法

静态方法即类中使用static修饰的方法,该方法使用类名可以直接调用,不需要创建类的对象

定义格式

修饰符 static 返回置类型 方法名 (参数列表){

//执行语句

}

示例

public static void eat(){
System.out.println("吃饭了");
}

使用静态方法的注意事项

静态方法只可以直接访问类变量与静态方法

静态方法不能访问普通成员变量或成员方法

静态方法中不可以使用this关键字(因为this代表的是使用该方法的对象,而静态方法是属于类的,this无从指向,所以不可以使用)

下面我们写一段代码来使用一下静态方法

public class Person2 {
    public  static void test(){
        System.out.println("这是静态方法" );
    }
}
public class Test {
    public static void main(String[] args) {
        System.out.println("这是使用类名调用的:");
         Person2.test();
        Person2 person2 = new Person2();
        System.out.println("这是使用对象调用的:");
        person2.test();

    }
}

运行结果

下面我们从内存的角度来讲讲静态的原理

先上代码

public class Teacher {
    private  int age;
    private  String name;
    private  static  String subject="math";
    public Teacher(int age, String name) {
        this.age = age;
        this.name = name;
    }

    public Teacher() {
    }

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

    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

    public static String getSubject() {
        return subject;
    }

    public static void setSubject(String subject) {
        Teacher.subject = subject;
    }
}
public class Test {
    public static void main(String[] args) {
        Teacher wang = new Teacher(18, "wang");
        Teacher li = new Teacher(19, "li");
    }
}

小结:普通成员变量操作各自空间,静态变量操作共享空间

静态代码块,敲重点!!!这个在我们后面学习中会经常使用到

什么是静态代码块呢?

定义在成员位置,使用static修饰的代码块{}

位置:类中方法外

执行随着类的加载而执行且只执行一次,优先于main方法和构造方法的执行

格式

1 public class Person {
2   static {
3       
4   }
5 }

这里就不深究了后面的文章我找几乎再说说

以上就是static关键字的一些基础知识,如有错误请各位批评指正