static关键字(重点)
2024-04-09 22:40:05  阅读数 304

1.static关键字【重点】

static中文意思:静态的

static是和对象无关的。

1.1生活的角度来理解静态的资源

公共的资源的都属于静态的东西

  对象可以使用静态的资源,但是和对象无关

  宿舍饮水机 就是静态资源

1.2Java中的静态

1.修饰成员变量 静态属性
类名.变量

2.修饰成员方法 静态方法
类名.方法名

3.修饰代码块 静态代码块
类加载时候就执行了,比构造代码块还靠前,因为
构造代码块在new对象的时候执行,而静态代码块
在类加载的时候就执行了。

1.2.1static修饰成员变量

静态成员变量:

static String name;

语法格式:

static 数据类型  变量名;

被static修饰的变量名是斜体的

package com.wyx.a_static;

class Person{
    String name;
    int age;
    static String country;
    
}

public class Demo1 {
    public static void main(String[] args) {
        Person zhangsan = new Person();
        zhangsan.name = "张三";
        zhangsan.age = 23;
        Person.country = "中国";
        System.out.println(zhangsan.country);//中国,zhangsan这个对象也可以调用国家这个属性,不规范
        zhangsan.country = "日本";
        System.out.println(Person.country);
        
        
        
    }
}

4.png

注意事项:

1.使用static修饰的变量叫静态变量

2.代码中对象还没有创建的时候,如果加载了类,static修饰的属性已经存在了,和对象没有关系。

1.2.2static修饰成员方法

静态方法

语法格式:

public static 返回值 方法的名字 (参数列表) {}

调用静态方法:

类.方法名字();
package com.wyx.a_static;

class Dog{
    public void eat() {
        System.out.println("普通成员方法");
    }
    
    public static void sleep() {
        System.out.println("静态方法");
    }
}
public class Demo2 {
    public static void main(String[] args) {
        Dog.sleep();
    }
}
1.2.3static修饰代码块

语法格式: 静态代码块

static {
  语句体
}

只要这个类加载,那么静态代码块一定会执行

执行顺序: 静态代码块-》构造代码块-》构造方法

package com.wyx.a_static;

class Cat{
    public Cat() {
        System.out.println("构造方法");
    }
    {
        System.out.println("构造代码块");
    }
    static {
        System.out.println("静态代码块");
    }
}
public class Demo4 {
    public static void main(String[] args) {
        Cat cat = new Cat();
        /*
          静态代码快
          构造代码块
          构造方法
         */
    }
}