十九、static关键字

1.1、概述

static是静态修饰符,一般修饰成员。static修饰的成员被多个对象共享,所以会影响每一个对象。被static修饰的成员又叫类成员,不叫对象的成员。

static是修饰成员为静态,让实例出来的对象都能共享static静态成员。

1.2、static特点

  1. 被static修饰的成员,被所在类的所有对象共享
  2. 静态成员可以通过对象调用,也可以通过类名调用,建议使用类名调用。
  3. 静态成员随着类的加载而加载,优先于对象存在

1.3、定义和使用格式

类变量定义

定义格式:
static 数据类型 变量名;

举例:
static String room;

比如说,同学们来xx学校学习,那么我们所有同学的学校都是xx学生, 不因每个同学不同而不同。所以,我们可以这样定义一个静态变量school,代码如下:

public class Student {
  private String name;
  private int age;
  // 类变量,记录学生学习的学校
  public static String school = "xx学校";

  public Student(String name, int age){
    this.name = name;
    this.age = age;     
  }

  // 打印属性值
  public void show() {
    System.out.println("name=" + name + ", age=" + age + ", shool=" + shool );
  }
}

public class StuDemo {
  public static void main(String[] args) {
    Student s1 = new Student("张三", 23);
    Student s2 = new Student("李四", 24);
    Student s3 = new Student("王五", 25);
    Student s4 = new Student("赵六", 26);

    s1.show(); // Student : name=张三, age=23, shool=xx学校
    s2.show(); // Student : name=李四, age=24, shool=xx学校
    s3.show(); // Student : name=王五, age=25, shool=xx学校
    s4.show(); // Student : name=赵六, age=26, shool=xx学校
  }
}

静态方法定义

定义格式:
修饰符 static 返回值类型 方法名(参数列表){ 
	// 执行语句 
}

举例:在Student类中定义静态方法
public static void showNum() {
	System.out.println("num:" +  numberOfStudent);
}

变量与方法调用

被static修饰的成员可以并且建议通过类名直接访问。虽然也可以通过对象名访问静态成员,原因即多个对象均属于一个类

格式:
    // 访问类变量
	类名.类变量名;
	// 调用静态方法
	类名.静态方法名(参数);

调用演示,代码如下:
    public class StuDemo2 {
        public static void main(String[] args) {      
            // 访问类变量
            System.out.println(Student.numberOfStudent);
            // 调用静态方法
            Student.showNum();
        }
    }

1.4、类内部静态方法调用的注意事项

  • 静态方法直接访问本类中其他成分时,只能访问静态成分(类成分),不能访问非静态成分(实例成分)。
  • 静态方法中,不能使用this关键字(因为this属于实例)。
  • 反之,非静态方法可以访问本类中的静态和非静态成分。

1.5、问题:

如果想要在静态方法中调用非静态成员能不能做到?

  • 创建对象调用!!!

面向对象中为什么方法不设置static?

  • 因为面向对象共享不合理。而且static 声明周期长,占用内存

static 使用场景

  • 一般用于工具类中,可以通过类名直接调用
posted @ 2021-06-23 15:35  火烧云Z  阅读(63)  评论(0)    收藏  举报