乐趣区

关于后端:Java-的-static-关键字

static 关键字

1 概述

定义如下类:

public class Student {
    // 成员变量
    public String name;
    public char sex; // '男'  '女'
    public int age;

    // 无参数构造方法
    public Student() {}
    
    // 有参数构造方法
    public Student(String  a) {}}

曾经晓得面向对象中,存在类和对象的概念,在类中定义了一些成员变量,例如 name,age,sex , 后果发现这些成员变量,每个对象都存在(因为每个对象都能够拜访)。

而像 name ,age , sex 的确是每个学生对象都应该有的属性,应该属于每个对象。

所以 Java 中成员(变量和办法)等是存在所属性的,Java 是通过 static 关键字来辨别的。static 关键字在 Java 开发十分的重要,对于了解面向对象十分要害。

对于 static 关键字的应用,它能够用来润饰的成员变量和成员办法,被 static 润饰的成员是 属于类 的是放在动态区中,没有 static 润饰的成员变量和办法则是 属于对象 的。咱们下面案例中的成员变量都是没有 static 润饰的,所以属于每个对象。

2 定义格局和应用

static 是动态的意思。static 能够润饰成员变量或者润饰办法。

2.1 动态变量及其拜访

有 static 润饰成员变量,阐明这个成员变量是属于类的,这个成员变量称为 类变量 或者 动态成员变量。间接用 类名拜访即可。因为类只有一个,所以动态成员变量在内存区域中也只存在一份。所有的对象都能够共享这个变量。

如何应用呢

例如当初咱们须要定义传智全副的学生类,那么这些学生类的对象的学校属性应该都是“传智”,这个时候咱们能够把这个属性定义成 static 润饰的动态成员变量。

定义格局

修饰符 static 数据类型 变量名 = 初始值;

举例

public class Student {
    public static String schoolName = "传智播客";// 属于类,只有一份。// .....
}

动态成员变量的拜访:

格局:类名. 动态变量

public static void  main(String[] args){System.out.println(Student.schoolName); // 传智播客
    Student.schoolName = "黑马程序员";
    System.out.println(Student.schoolName); // 黑马程序员
}

2.2 实例变量及其拜访

无 static 润饰的成员变量属于每个对象的,这个成员变量叫 实例变量,之前咱们写成员变量就是实例成员变量。

须要留神的是:实例成员变量属于每个对象,必须创立类的对象才能够拜访。

格局:对象. 实例成员变量

2.3 静态方法及其拜访

有 static 润饰成员办法,阐明这个成员办法是属于类的,这个成员办法称为 类办法或者 静态方法 **。间接用 类名拜访即可。因为类只有一个,所以静态方法在内存区域中也只存在一份。所有的对象都能够共享这个办法。

与动态成员变量一样,静态方法也是间接通过 类名. 办法名称 即可拜访。

举例

public class Student{
    public static String schoolName = "传智播客";// 属于类,只有一份。// .....
    public static void study(){System.out.println("咱们都在黑马程序员学习");   
    }
}

动态成员变量的拜访:

格局:类名. 静态方法

public static void  main(String[] args){Student.study();
}

2.4 实例办法及其拜访

无 static 润饰的成员办法属于每个对象的,这个成员办法也叫做 实例办法

须要留神的是:实例办法是属于每个对象,必须创立类的对象才能够拜访。

格局:对象. 实例办法

示例

public class Student {
    // 实例变量
    private String name ;
    // 2. 办法:行为
    // 无 static 润饰,实例办法。属于每个对象,必须创建对象调用
    public void run(){System.out.println("学生能够跑步");
    }
    // 无 static 润饰,实例办法
    public  void sleep(){System.out.println("学生睡觉");
    }
    public static void study(){}
}
public static void main(String[] args){
    // 创建对象 
    Student stu = new Student ;
    stu.name = "徐干";
    // Student.sleep();// 报错,必须用对象拜访。stu.sleep();
    stu.run();}

3 小结

1. 当 static 润饰成员变量或者成员办法时,该变量称为 动态变量 ,该办法称为 静态方法 。该类的每个对象都 共享 同一个类的动态变量和静态方法。任何对象都能够更改该动态变量的值或者拜访静态方法。然而不举荐这种形式去拜访。因为动态变量或者静态方法间接通过类名拜访即可,齐全没有必要用对象去拜访。

2. 无 static 润饰的成员变量或者成员办法,称为 实例变量,实例办法,实例变量和实例办法必须创立类的对象,而后通过对象来拜访。

3.static 润饰的成员属于类,会存储在动态区,是随着类的加载而加载的,且只加载一次,所以只有一份,节俭内存。存储于一块固定的内存区域(动态区),所以,能够间接被类名调用。它优先于对象存在,所以,能够被所有对象共享。

4. 无 static 润饰的成员,是属于对象,对象有多少个,他们就会呈现多少份。所以必须由对象调用。

退出移动版