Static关键字

简介: Static关键字

Static引入

在我们生活当中 , 有些事物不属于某一个对象,而是属于整个事物的类型

比如:全世界人口的总数

人的毁灭行为:毁灭的行为应该属于人类, 不应该属于某一个人

状态和行为应该 有 对象和类之分

有的状态和行为,应该属于某个对象

有的状态和行为,应该属于类型

Static作用

  • 通过 static 修饰符就能解决这个问题,它修饰的成员就不属于对象,它属于类本身
  • 它可以修饰字段,方法,内部类
  • 作用:确定修饰的内容是属于类还是属于对象

Static特点

1.static 修饰的内容,附着类的加载而加载

2.优先于对象的存在

3.static 修饰的成员被该类型的所有对象共享

4.可以直接使用当前类的类名访问 static 成员

总结





public class Person {
  //人口
  static int totalNums = 0;
  //毁灭
  static void destroy() { //静态方法 只能访问静态成员 
    System.out.println("人类毁灭啦");
    //System.out.println(age);
  }
  //状态:名词
  String name;
  int age;
  //行为:动词
  void die(){
    System.out.println(name+"死了");
    Person.totalNums--;
  }
  //---------以上属于对象---------
  //构造器的作用,创建对象,一创建对象时,就给内部 的字段做初始化
  Person(String n,int a){
    name = n;
    age = a;
    Person.totalNums++;
  }
  public static void main(String[] args) {
    System.out.println(Person.totalNums);
    Person per =  new Person("zs",1);
    System.out.println(per.name);
    System.out.println(per.age);
    per.die();
    System.out.println(Person.totalNums);
    Person per2 = new Person("ls",2);
    System.out.println(per2.name);
    System.out.println(per2.age);
    Person.destroy();
    //通过类名调用
    System.out.println(Person.totalNums);
    //可以通过 对象来去调用静态成员。
    //本质还是通过类名来调用
    System.out.println(per2.totalNums);
  }
}


public class Person {
    static int totalNums = 0;
    String name;
    int age;
    void eat(String food){
        System.out.println(name+"吃了"+food);
    }
    Person(String name,int age){
        this.name = name;
        this.age =age;
        Person.totalNums++;
    }
    Person(int age){
        this.age = age;
        Person.totalNums++;
    }
    void die(){
        System.out.println(name+"从地球上消失");
        Person.totalNums--;
    }
    static void destroy(){
        Person.totalNums = 0;
    }
}
class test{
    public static void main(String[] args) {
        Person person = new Person("张三",1);
        person.name = "张四";
        person.eat("奶粉");
        System.out.println(Person.totalNums);
        Person person1 = new Person(1);
        person1.name = "李四";
        person1.eat("奶粉");
        Person ww = new Person("王五", 1);
        ww.eat("奶粉");
        person.die();
        Person.destroy();
        System.out.println("总人口:"+Person.totalNums);
        //当使用对象调用静态的内容(方法,还是字段 )在运行时, 都会去掉
        //还是使用类名来调用
        System.out.println(ww.totalNums);
    }
}
相关文章
|
弹性计算 Linux Shell
ECS基本命令及简单应用
本场景介绍如何申请阿里云ECS环境资料,并在其下进行基本的Linux命令操作。
|
12月前
|
人工智能 数据可视化 C++
Math24o:SuperCLUE开源的高中奥数推理测评基准,85.71分屠榜
Math24o是首个针对高中奥林匹克数学竞赛的中文大模型测评基准,采用2024年预赛真题实现自动化评估,为模型数学推理能力提供客观衡量标准。
412 48
Math24o:SuperCLUE开源的高中奥数推理测评基准,85.71分屠榜
|
弹性计算 应用服务中间件 Linux
阿里云ECS服务器快速搭建Docker环境
阿里云ECS服务器快速搭建Docker环境
1064 0
阿里云ECS服务器快速搭建Docker环境
|
SQL 数据采集 JSON
Pandas 使用教程 Series、DataFrame
Pandas 使用教程 Series、DataFrame
354 0
|
存储 人工智能 JSON
|
自然语言处理 PyTorch 算法框架/工具
Transformers 4.37 中文文档(八十三)(5)
Transformers 4.37 中文文档(八十三)
88 4
|
前端开发 架构师 Java
基于SSM实现考研信息管理平台系统
基于SSM实现考研信息管理平台系统
232 0
|
容器
Vue3.0实现todolist-实现todolist每个组件需要用到的方法
Vue3.0实现todolist-实现todolist每个组件需要用到的方法
149 1
|
负载均衡 算法 Java
Spring Cloud:使用Ribbon实现负载均衡详解(上)
Spring Cloud:使用Ribbon实现负载均衡详解(上)