“全栈2019”Java第四十一章:static关键字

91 阅读5分钟
原文链接: www.toutiao.com

难度

初级

学习时间

30分钟

适合人群

零基础

开发语言

Java

开发环境

  • JDK v11
  • IntelliJ IDEA v2018.3

提示

本教学属于系列教学,内容具有连贯性,本章使用到的内容之前教学中都有详细讲解。

1.static关键字

static关键字用来创建属于类的字段和方法,而不是属于类的实例。

2.类变量

当从同一个类创建许多对象时,它们每个都有自己不同的实例变量。在的情况下Student类,实例变量是name,age和height。每个Student对象都有自己的值,这些变量存储在不同的内存位置。

有时,我们希望拥有所有对象共有的变量。可以通过static修饰符完成。有static修饰的字段被称为静态字段类变量。它们与类相关联,而不是与任何对象相关联。该类的每个实例共享一个类变量,该变量位于内存中的一个固定位置。任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量。

类变量声明格式:

“全栈2019”Java第四十一章:static关键字

类变量定义格式:

“全栈2019”Java第四十一章:static关键字

访问修饰符:public、protected、private、默认的访问修饰符。

static:静态修饰符。

数据类型:任意类型。

标识符:变量名。

演示:

我们要创建多个Student对象并为每个对象分配一个ID,从第一个对象开始为1。此ID号对于每个对象都是唯一的,因此是一个实例变量。同时,我们需要一个字段来跟踪Student已创建的对象数,以便我们知道要分配给下一个对象的ID。这样的字段与任何单个对象无关,而与整个类有关。为此,我们需要一个类变量。

实现:

Student类:

“全栈2019”Java第四十一章:static关键字

Main类:

“全栈2019”Java第四十一章:static关键字

结果:

“全栈2019”Java第四十一章:static关键字

从运行结果来看,准确无误。我们来看id的变化,的确是从0开始累加。

3.通过类名访问类变量

演示:

通过类名访问类变量。前提是类变量不是private所修饰的。

实现:

Student类:

“全栈2019”Java第四十一章:static关键字

Main类:

“全栈2019”Java第四十一章:static关键字

结果:

“全栈2019”Java第四十一章:static关键字

从运行结果来看,准确无误。

我们看到当前类变量确实在内存中只存在一份,所有对象都可以操作它。

4.通过对象访问类变量

演示:

通过对象访问类变量。前提是类变量不是private所修饰的。

实现:

Student类:

“全栈2019”Java第四十一章:static关键字

Main类:

“全栈2019”Java第四十一章:static关键字

结果:

“全栈2019”Java第四十一章:static关键字

从运行结果来看,准确无误。

我们看到当前类变量确实在内存中只存在一份,所有对象都可以操作它。

5.类方法

Java编程语言支持静态方法以及静态变量。静态方法在其声明中具有static修饰符,应该使用类名调用,而不需要创建类的实例。

类方法定义格式:

“全栈2019”Java第四十一章:static关键字

访问修饰符:public、protected、private、默认的访问修饰符。

static:静态修饰符。

返回值类型:任意类型。

方法名:标识符。

参数列表:形参类型 形参名称

方法体:有返回值则return返回值。

演示:

在Student类中定义一个静态方法,显示输出一句话“我是静态方法”。

实现:

Student类:

“全栈2019”Java第四十一章:static关键字

Main类:

“全栈2019”Java第四十一章:static关键字

结果:

“全栈2019”Java第四十一章:static关键字

当然了,实例对象也能调用类方法。

修改Main类:

“全栈2019”Java第四十一章:static关键字

结果:

“全栈2019”Java第四十一章:static关键字

小结:

  • 实例方法可以直接访问实例变量和实例方法。
  • 实例方法可以直接访问类变量和类方法。
  • 类方法可以直接访问类变量和类方法。
  • 类方法不能直接访问实例变量或实例方法 - 它们必须使用对象引用。此外,类方法不能使用this关键字,因为没有this要引用的实例。

6.static与final

给类变量加上final就是类常量,给类方法加上final就是最终类方法。

演示:

在Student类里面定义类常量和最终类方法。

实现:

Student类:

“全栈2019”Java第四十一章:static关键字

Main类:

“全栈2019”Java第四十一章:static关键字

结果:

“全栈2019”Java第四十一章:static关键字

从运行结果来看,准确无误。

总结

  • static关键字用来创建属于类的字段和方法,而不是属于类的实例。
  • 类变量声明格式:访问修饰符 static 数据类型 标识符;
  • 类变量定义格式:访问修饰符 static 数据类型 标识符 = 值;
  • 类方法定义格式:访问修饰符 static 返回值类型 方法名(参数列表){方法体}
  • 实例方法可以直接访问实例变量和实例方法。
  • 实例方法可以直接访问类变量和类方法。
  • 类方法可以直接访问类变量和类方法。
  • 类方法不能直接访问实例变量或实例方法 - 它们必须使用对象引用。此外,类方法不能使用this关键字,因为没有this要引用的实例。

至此,Java中static关键字相关内容讲解先告一段落,更多内容请持续关注。

答疑

如果大家有问题或想了解更多前沿技术,请在下方留言或评论,我会为大家解答。

上一章

“全栈2019”Java第四十章:this关键字

下一章

“全栈2019”Java第四十二章:静态代码块与初始化顺序

学习小组

加入同步学习小组,共同交流与进步。

  • 方式一:关注头条号Gorhaf,私信“Java学习小组”。
  • 方式二:关注公众号Gorhaf,回复“Java学习小组”。

全栈工程师学习计划

关注我们,加入“全栈工程师学习计划”。

“全栈2019”Java第四十一章:static关键字

版权声明

原创不易,未经允许不得转载!