静态关键字:static

这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

  1. static 修饰成员变量

成员变量可以分为2类:

  1. 静态成员变量 (有static修饰,属于类,内存中加载一次):常表示如在线人数信息,等需要被共享的信息,可以被共享访问。
  2. 实例成员变量 (无static修饰,存在于每个对象中):常表示姓名、年龄 等属于每个对象的信息。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
ini复制代码
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);

}
}
  1. static 修饰成员方法的基本用法

成员方法的分类:

静态成员方法(有static修饰,属于类)建议用类名访问,也可以使用对象访问。

实例成员方法 (无static修饰,属于对象),只能用对象触发访问。

使用场景:

表示对象自己的行为的,且方法中更需要访问实例成员的,则该方法必须申明成实例方法。

如果该方法是以执行一个通用功能为目的,或者需要方便访问,则可以申明成静态方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
csharp复制代码
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);
}
}

1.成员方法的分类和访问分别是什么样的?

静态成员方法(有static 修饰,属于类和对象共享)访问格式

类名.静态成员方法。

对象.静态成员方法。(不推荐)

实例成员方法 (无static修饰,属于对象)的访问格式:

对象.实例成员方法。

  1. 每种成员方法的使用场景是什么样的?

表示对象自己的行为的,且方法中需要访问实例成员的,则该方法必须申明成实例方法。

如果该方法是以执行一个通用功能为目的,或者需要方便访问,则可以申明成静态方法。

  1. static修饰成员方法的内存原理

加载类的时候,同时静态方法会暴露出调用接口,供调用

  1. static 实际应用案例:使用静态方法 定义 工具类

工具类:

对于一些应用程序中,多次需要用的功能,可以将这些功能封装成静态方法。放在一个类中,这个类就是工具类。

工具类的作用:一是方便调用,二是提高了代码复用。

工具类原理和延伸:

一次编写,处处可用。

建议将工具类的构造器私有,不让工具类对外产生对象。

1
2
3
4
5
typescript复制代码public class Login {
public static void main(String[] args) {
System.out.println("验证码:"+ VerifyTool.creteCode(5));
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
arduino复制代码

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;
}
}

工具类不需要创建对象,构造器私有化。让调用者使用类名来调用,节约内存。

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%