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);
    }
}
相关文章
|
存储 Java
static关键字
static关键字
51 0
|
3月前
|
安全 Java
final关键字
final关键字
|
5月前
|
存储 数据安全/隐私保护 C++
C++一分钟之-C++中的静态成员与静态函数
【6月更文挑战第20天】在C++中,静态成员(变量&函数)打破对象实例化规则,提供类级共享。静态变量独占一份,用于计数或共享配置,需类外初始化,注意访问权限。静态函数不依赖对象,直接通过类名调用,不使用`this`指针,适合工具函数或操作静态变量。示例展示了静态成员的使用,强调了理解和避免常见问题的重要性。
54 4
|
6月前
|
Java
static关键字详解~
static关键字详解~
37 0
|
6月前
|
存储 监控 编译器
【C++】static关键字及其修饰的静态成员变量/函数详解
【C++】static关键字及其修饰的静态成员变量/函数详解
151 3
|
6月前
|
编译器
static关键字修饰成员变量与成员函数
1. static概念 声明 为static的类成员称为类的静态成员,用static修饰的成员变量,称为静态成员变量;用static修饰的成员函数,称为静态成员函数,都存放在堆区。 静态成员变量一定要在类外进行初始化。
121 0
|
11月前
|
编译器 C++
类和对象:初始化列表,静态成员,友元,内部类,匿名对象
类和对象:初始化列表,静态成员,友元,内部类,匿名对象
|
存储 Cloud Native Linux
C++ static关键字
C++ static关键字
|
存储 程序员 C语言
【C】static关键字详解
static的汉语意思是静态的,在C语言中static关键字可以用来修饰局部变量、全局变量和函数。
|
Java C语言 C++
static关键字详解(C/C++)
static关键字详解(C/C++)