文章目录
一:static关键字
- 用于定义类级别的属性和方法,这些属性和方法属于类本身,而不是类的任何特定实例对象
- static 修饰的方法或变量,优先于对象执行,所以内存会先有 static修饰的内容,后有对象的内容
- static关键字有两个主要的应用场景
- 静态变量(也称为类变量)
- 静态方法(也称为类方法)
- 还有一个重要的概念是静态代码块(也称为静态初始化块)
- 修饰变量就是类变量,修饰方法就是类方法
- 类变量或者类方法,可以直接通过类名.方法名或者类名.变量名进行调用,不用经过对象
package chapter5;
public class Student {
// 静态变量
static int age;
static String name;
// 静态方法
public static void sleep(){
System.out.println("睡觉");
System.out.println("age : "+age);
}
}
二:静态变量
- 是类级别的变量,它们在类的所有实例之间共享,在内存中只有一个副本,无论创建多少个类的实例。
- 静态变量通常用于存储那些与类本身相关,而与类的任何特定实例无关的信息。
- 静态变量在类的加载阶段被初始化,并且只能使用类名来访问它们(而不是实例名)。
public class MyClass {
// 静态变量
public static int staticVar = 42;
// ... 其他代码 ...
}
// 访问静态变量,以下格式为类名.变量名
int value = MyClass.staticVar;
三:静态方法
- 是类级别的方法,它们不需要类的实例就可以被调用。
- 静态方法不能直接访问类的非静态成员(变量和方法),因为它们属于类的特定实例。
- 静态方法通常用于执行那些与类本身相关,而与类的任何特定实例无关的操作。
- 静态方法可以使用类名来调用,而不是通过类的实例。
public class MyClass {
// 静态方法
public static void staticMethod() {
System.out.println("This is a static method.");
}
// ... 其他代码 ...
}
// 调用静态方法
MyClass.staticMethod();
四:静态代码块
- 是一段在类加载时自动执行的代码,通常用于初始化静态变量或执行其他只需要执行一次的类级别的操作。
- 静态代码块在类的准备阶段(在类的初始化阶段之前)被执行,并且只执行一次,无论创建多少个类的实例。
- 在类中的位置可以是任意的,但通常放在类的顶部,它们不能包含任何参数,并且没有返回值。
public class MyClass {
// 静态变量
public static int staticVar;
// 静态代码块
static {
staticVar = 42;
System.out.println("Static block executed.");
}
// ... 其他代码 ...
}
// 当类被加载时,静态代码块会被执行
// 静态变量会被初始化,并且会输出 "Static block executed."
五:总结
- 静态变量是类级别的变量,在类的所有实例之间共享。
- 静态方法是类级别的方法,不需要类的实例就可以被调用。
- 静态代码块是在类加载时自动执行的代码块,通常用于初始化静态变量或执行其他只需要执行一次的类级别的操作。
- 静态方法不能直接访问非静态变量,静态方法当中不能使用this
- 重点:一个类里面 static修饰的不能访问非static修饰的成员或方法,而非static修饰的可以访问static修饰的成员或者方法