这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战
1. static 修饰成员变量
public class User {
// 在线人数信息:静态成员变量
public static int onLineNumber;
// 实例成员变量
private String name;
private int age;
public static void main(String[] args) {
//1. 类名,静态成员变量
User.onLineNumber ++;
// 注意:同一个类中访问静态成员变量,类名可以省略不写
System.out.println(onLineNumber);
// 2. 对象.实例成员变量
User u1 = new User();
u1.name = "二师兄";
u1.age = 30;
System.out.println(u1.name);
System.out.println(u1.age);
// 对象.静态成员变量
u1.onLineNumber ++;
System.out.println(u1.onLineNumber);
User u2 = new User();
u2.name = "大师兄";
u2.age = 30;
System.out.println(u2.name);
System.out.println(u2.age);
// 对象.静态成员变量
u2.onLineNumber ++;
System.out.println(u2.onLineNumber);
System.out.println(onLineNumber);
}
}
复制代码
2. static 修饰 成员变量的 内存原理。
截图中的代码
加载类的同时,也会加载静态成员变量。
3. static 修饰成员方法的基本用法
public class Student {
private String name;
private int age;
// 实例方法: 无static修饰,属于对象的,通常表示对象自己的行为,可以访问对象的成员变量
public void study(){
System.out.println(name + "在好好学习,天天向上~~");
}
// 静态方法: 有static 修饰,属于类,可以被类和对象共享访问
public static void getMax(int a, int b){
System.out.println(a > b? a : b);
}
public static void main(String[] args) {
// 1.类名,静态方法
Student.getMax(10,100);
// 注意:同一个类中访问静态成员 可以省略类名不写
getMax(200,20);
// 2. 对象.实例方法
// study(); // 报错的
Student s = new Student();
s.name = "全蛋";
s.study();
// 3. 对象.静态方法(不推荐)
s.getMax(10,2);
}
}
复制代码
- static修饰成员方法的内存原理
加载类的时候,同时静态方法会暴露出调用接口,供调用
5. static 实际应用案例:使用静态方法 定义 工具类
public class Login {
public static void main(String[] args) {
System.out.println("验证码:"+ VerifyTool.creteCode(5));
}
}
复制代码
public class VerifyTool {
// 私有构造器
private VerifyTool(){
}
// 静态方法
public static String creteCode(int n){
//1. 使用String开发一个验证码
String chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
//2. 定义一个变量 用于存储5位随机字符作为验证码
String code = "";
Random r = new Random();
for (int i = 0; i<n; i++){
int index = r.nextInt(chars.length());
code += chars.charAt(index);
}
System.out.println("验证码:"+code);
return code;
}
}
复制代码
工具类不需要创建对象,构造器私有化。让调用者使用类名来调用,节约内存。




近期评论