static
静态变量:
static
修饰的变量称为静态变量,静态变量属于类
,而不是属于类的实例,
所有实例共享一个静态变量(访问、修改)
public class MyClass {
public static int count; // 静态变量
}
静态方法:
static
修饰的方法称为静态方法,静态方法可以直接通过类名调用
,无需创建类的实例。
public class MyClass {
public static void printMessage() { // 静态方法
System.out.println("Hello, world!");
}
}
静态代码块:
使用static
关键字修饰的代码块称为静态代码块,静态代码块在类加载时执行,用于执行静态变量的初始化或者其他静态操作
。
public class MyClass {
static {
// 静态代码块
System.out.println("Static block is executed.");
}
}
注意点
-
静态变量、静态方法,可以直接通过类名访问(类名.静态变量、类名.静态方法),无需创建类的实例。
-
静态方法中,不能直接访问非静态变量和非静态方法,只能访问其他静态成员。
-
静态变量、静态方法属于类而不是对象,因此它们在内存中只有一份拷贝,所有对象共享。
-
静态方法不能被声明为抽象方法,因为静态方法属于类而不是对象。
-
静态方法中,不可以出现this关键字。
使用场景:
-
表示对象自己的行为的,且,方法中需要访问实例成员的,则该方法必须定义成实例方法
-
如果该方法是以执行一个共用功能为目的,则可以定义成静态方法
static应用知识:工具类
概念
:类中都是一些静态方法,每个方法都是以完成一个共用的功能为目的,这个类用来给开发人员共同使用的。
好处
:一是调用方便,二是提高了代码复用(一次编写,处处可用)
为什么工具类中的方法不用实例方法做?
因为,实例方法需要创建对象调用,此时创建对象只是为了调用方法,这样只会浪费内存。
工具类定义时的其他要求:
因为,工具里面都是静态方法,直接用类名即可访问,
所以,工具类无需创建对象,建议将工具类的构造器进行私有
声明一个工具类
src/util
文件夹中,新建Code.java
import java.util.Random;
public class Code{
public static String verification(int n) {
Random random = new Random();
String code = "";
for(int i=0; i<n; i++){
int type = random.nextInt(3); // 生成一个0到2之间的随机整数(包含0和2)
switch(type){
case 0: // 大写字母
char ch = (char)(random.nextInt(26)+65);
code += ch;
break;
case 1: //小写字母
char ch1 = (char) (random.nextInt(26)+97);
code += ch1;
break;
case 2: //数字
code += random.nextInt(10);
break;
}
}
return code;
}
}
使用这个工具类
src/project
文件夹中,新建base.java
import util.Code;
public class Base {
public static void main(String[] args) {
// 使用工具类
System.out.println(Code.verification(5));
}
}