难度
初级
学习时间
30分钟
适合人群
零基础
开发语言
Java
开发环境
- JDK v11
- IntelliJ IDEA v2018.3
提示
本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。
1.static关键字
static关键字用来创建属于类的字段和方法,而不是属于类的实例。
2.类变量
当从同一个类创建许多对象时,它们每个都有自己不同的实例变量。在的情况下Student类,实例变量是name,age和height。每个Student对象都有自己的值,这些变量存储在不同的内存位置。
有时,我们希望拥有所有对象共有的变量。可以通过static修饰符完成。有static修饰的字段被称为静态字段或类变量。它们与类相关联,而不是与任何对象相关联。该类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量。
类变量声明格式:
类变量定义格式:
访问修饰符:public、protected、private、默认的访问修饰符。
static:静态修饰符。
数据类型:任意类型。
标识符:变量名。
演示:
我们要创建多个Student对象并为每个对象分配一个ID,从第一个对象开始为1。此ID号对于每个对象都是唯一的,因此是一个实例变量。同时,我们需要一个字段来跟踪Student已创建的对象数,以便我们知道要分配给下一个对象的ID。这样的字段与任何单个对象无关,而与整个类有关。为此,我们需要一个类变量。
实现:
Student类:
Main类:
结果:
从运行结果来看,准确无误。我们来看id的变化,的确是从0开始累加。
3.通过类名访问类变量
演示:
通过类名访问类变量。前提是类变量不是private所修饰的。
实现:
Student类:
Main类:
结果:
从运行结果来看,准确无误。
我们看到当前类变量确实在内存中只存在一份,所有对象都可以操作它。
4.通过对象访问类变量
演示:
通过对象访问类变量。前提是类变量不是private所修饰的。
实现:
Student类:
Main类:
结果:
从运行结果来看,准确无误。
我们看到当前类变量确实在内存中只存在一份,所有对象都可以操作它。
5.类方法
Java编程语言支持静态方法以及静态变量。静态方法在其声明中具有static修饰符,应该使用类名调用,而不需要创建类的实例。
类方法定义格式:
访问修饰符:public、protected、private、默认的访问修饰符。
static:静态修饰符。
返回值类型:任意类型。
方法名:标识符。
参数列表:形参类型 形参名称
方法体:有返回值则return返回值。
演示:
在Student类中定义一个静态方法,显示输出一句话“我是静态方法”。
实现:
Student类:
Main类:
结果:
当然了,实例对象也能调用类方法。
修改Main类:
结果:
小结:
- 实例方法可以直接访问实例变量和实例方法。
- 实例方法可以直接访问类变量和类方法。
- 类方法可以直接访问类变量和类方法。
- 类方法不能直接访问实例变量或实例方法 - 它们必须使用对象引用。此外,类方法不能使用this关键字,因为没有this要引用的实例。
6.static与final
给类变量加上final就是类常量,给类方法加上final就是最终类方法。
演示:
在Student类里面定义类常量和最终类方法。
实现:
Student类:
Main类:
结果:
从运行结果来看,准确无误。
总结
- static关键字用来创建属于类的字段和方法,而不是属于类的实例。
- 类变量声明格式:访问修饰符 static 数据类型 标识符;
- 类变量定义格式:访问修饰符 static 数据类型 标识符 = 值;
- 类方法定义格式:访问修饰符 static 返回值类型 方法名(参数列表){方法体}
- 实例方法可以直接访问实例变量和实例方法。
- 实例方法可以直接访问类变量和类方法。
- 类方法可以直接访问类变量和类方法。
- 类方法不能直接访问实例变量或实例方法 - 它们必须使用对象引用。此外,类方法不能使用this关键字,因为没有this要引用的实例。
至此,Java中static关键字相关内容讲解先告一段落,更多内容请持续关注。
答疑
如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。
上一章
下一章
“全栈2019”Java第四十二章:静态代码块与初始化顺序
学习小组
加入同步学习小组,共同交流与进步。
- 方式一:关注头条号Gorhaf,私信“Java学习小组”。
- 方式二:关注公众号Gorhaf,回复“Java学习小组”。
全栈工程师学习计划
关注我们,加入“全栈工程师学习计划”。
版权声明
原创不易,未经允许不得转载!