Java基础 第二节 第八

网友投稿 560 2022-05-29

static 关键字

概述

定义和使用格式

类变量

静态方法

注意事项

调用格式

静态原理图解

静态代码块

概述

关于 static 关键字的使用, 它可以用来修饰的成员变量和成员方法. 被修饰的成员是属于类的, 而不是单单属于某个对象的. 也就是说, 既然属于类, 就可以不靠创建对象来调用了.

定义和使用格式

类变量

当 static 修饰成员变量时, 该变量称为类变量. 该类的每个对象都共享一个类变量的值. 任何对象都可以更改该变量的值. 但也可以在不创建该类的对象的情况下对类变量进行操作.

类变量: 使用 static 关键字修饰的成员变量.

定义格式:

static 数据类型 变量名;

1

举例:

static int numberID;

1

比如说, 基础班新班开班, 学员报到. 现在想为每一位新来报到的同学编学号 ( sid ), 从第一名同学开始, sid 为 1, 以此类推. 学号必须是唯一的, 连续的, 并且与班级的人数相符, 这样便知道要分配给下一名新同学的学号是多少. 这样我们就需要一个变量, 与单独的每一个学生对象无关, 而是与整个班级同学数量有关.

所以, 我们可以这样定义一个静态变量 numberOfStudent, 代码如下:

public class StudentPlus { private String name; private int age; // 学生的id private int sid; // 类变量, 记住学生数量, 分配学号 public static int numberOfStudent = 0; public StudentPlus(String name, int age){ this.name = name; this.age = age; // 通过 numberOfStudent 给学生分配学号 this.sid = ++numberOfStudent; } // 打印属性值 public void show(){ System.out.println("Student: name=" + name + ", age=" + age + ", sid=" + sid); } } class Demo{ public static void main(String[] args) { StudentPlus s1 = new StudentPlus("张三", 23); StudentPlus s2 = new StudentPlus("李四", 24); StudentPlus s3 = new StudentPlus("王五", 25); StudentPlus s4 = new StudentPlus("赵六", 26); s1.show(); // Student : name=张三, age=23, sid=1 s2.show(); // Student : name=李四, age=24, sid=2 s3.show(); // Student : name=王五, age=25, sid=3 s4.show(); // Student : name=赵六, age=26, sid=4 } }

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

静态方法

当 static 修饰成员方法时, 该方法称为类方法. 静态方法在声明中有 static, 建议使用类名来调用, 而不需要创建类的对象. 调用方式非常简单.

类方法: 使用 static 关键字修饰的成员方法, 习惯称为静态方法.

定义格式:

修饰符 static 返回值类型 方法名 (参数列表){ // 执行语句 }

1

2

3

举例: 在 Student 类中定义静态方法

public static void showNum() { System.out.println("num:" + numberOfStudent); }

1

2

3

注意事项

静态方法可以直接访问类变量和静态方法

静态方法不能直接访问普通成员变量或者方法. 反之, 成员方法可以直接访问类变量或静态方法

静态方法中, 不能使用 this 关键字

注: 静态方法只能访问静态成员

调用格式

被 static 修饰的成员可以并建议通过类名直接访问. 虽然也可以通过对象名访问静态成员, 原因即多个对象均属于一个类, 共享使用同一个静态成员. 但是不建议, 会出现警告信息.

格式:

// 访问类变量 类名.类变量名; // 调用静态方法 类名.静态方法名(参数);

1

2

3

4

5

调用演示, 代码如下:

public class Test71 { public static void main(String[] args) { // 访问类变量 System.out.println(StudentPlus.numberOfStudent); // 调用静态方法 StudentPlus.showNum(); } }

1

2

3

4

5

6

7

8

静态原理图解

static 修饰的内容:

是随着类的加载而加载的, 且只加载一次

存储于一块固定的内存区域 (静态区), 所以, 可以直接被类名调用

它优先于对象存在, 所以, 可以被所有对象共享

静态代码块

静态代码块: 定义在成员位置, 使用 static 修饰的代码块 {}.

位置: 类中方法外

执行: 随着类的加载而执行且执行异常, 优先于 main 方法的执行

格式:

public class ClassName{ static { // 执行语句 } }

1

2

Java基础 第二节 第八课

3

4

5

作用: 给类变量进行初始化赋值. 代码如下:

import java.util.ArrayList; public class Game { private static int number; private static ArrayList list; static { // 给类变量赋值 number = 2; list = new ArrayList(); // 添加元素到集合中 list.add("张三"); list.add("李四"); } }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

注: static 关键字, 可以修饰变量, 方法和代码块. 在使用过程中, 其主要目的还是想在不创建对象的情况下, 去调用方法.

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《深入理解OpenStack Neutron》—1.2 Neutron的特性与应用
下一篇:“Windows + VirtualBox Ubuntu” 问题与解决笔记【持续更新】
相关文章