【NB】Java面向对象之类的静态资源

3180386827   ·   发表于 2021-3-14   ·   编程代码
上次说了一些有关于方法的很多东西,这次我们介绍一些类的其他特性(静态方法、静态变量)。
通俗的来讲,静态方法就是工具包,来完成某种行为,静态变量相当于各种公共资源,用来辅助某种行为。
静态资源是类成员中可有可无的东西,但却起着至关重要的作用,他能够帮我们剩下很多的代码量,是简化代码的一种利器!

20 Reply   |  Until 2021-3-15 | 2055 View

12100213
发表于 2021-3-14

一、为什么需要静态资源
几年前共享经济兴起,我们共享单车、共享电动车、共享充电宝等等,很多事物可以供我们共同使用。那么我们为什么需要共享?我们外出,但是距离较远,因此我们急需一辆自行车进行骑行,但是我们手边却没有自行车,共享经济出现前,我们可以采取购买自行车、借用自行车,但是保管不易,我们拥有了一辆自行车后需要维护,我们购买了自行车后我们需要保持自行车的洁净度,我们借用了自行车我们需要保证自行车不被弄丢。这些维护成本有时显得非常高昂,我们出门是去办事情,这些维护成本分担了我们的精力,且需要承担一部分风险。

评论列表

  • 加载数据中...

编写评论内容

794229345
发表于 2021-3-14

这就是共享经济的作用,我们专注于事物本身的作用,过滤掉其他无用的元素,达到了如今如此方便的共享经济。这就是静态资源的作用,静态资源能够达到拿来就用的作用,极大的方便了我们的使用,很多时候我们做某件事情,急需某一种辅助工作,辅助完毕后我们继续做我们该做的事情,极大的优化了我们的编码体验。

评论列表

  • 加载数据中...

编写评论内容

admin
发表于 2021-3-14

静态资源实战中主要针对于两种情况,都是基于资源共享的,第一种常见方式就是:同一个类的对象之间数据互通;第二种情况静态资源是模仿一个工具包,这个工具包能够完成我们大大小小的工作(例如类型转化等等),这个工具包通常是作为辅助存在,有了这个工具包的存在我们能够轻而易举的完成我们所想要的功能,当然,现在市面上有一个非常好用的工具包:hutool,该工具包内容纳了很多种常用工具,常见的有:日期、文件、缓存、定时任务等。

评论列表

  • 加载数据中...

编写评论内容

asdfkns
发表于 2021-3-14

二、对象数据的隔离性
我们先说资源共享问题,在说资源共享问题之前我们需要先证明下对象间数据的隔离性,当前有A类,A类中有属性a,有两个对象:a1、a2(图1)。

评论列表

  • 加载数据中...

编写评论内容

10086
发表于 2021-3-14

我们分别将a1、a2的两个对象的a属性进行赋值,并将其打印(图2)。

评论列表

  • 加载数据中...

编写评论内容

salkfdn
发表于 2021-3-14

我们会发现,打印了1和2,充分见证了对象间数据的隔离性,其实原因很简单,我们在此简单说一下,a1 = new A,执行完毕后,我们在堆内存中开辟空间,a1指向了这一块堆内存空间,a2 = new A执行完毕后,我们又在堆内存中开辟了一块空间,a2指向了这块堆内存空间,我们给它们的a属性赋值,实际上是给各自的堆内存空间中的a属性赋值,因此相互隔离(图1)。

评论列表

  • 加载数据中...

编写评论内容

pole资源网
发表于 2021-3-14

我们如何才能达到数据互通?我们可以在堆中另开辟一块空间,然后在这块空间中存放我们这个类的公共变量,这个类的所有对象指向这块公共空间就可以了。

评论列表

  • 加载数据中...

编写评论内容

1797591992
发表于 2021-3-14

事实上Java的确是这样做的,只不过笔者这里的图画得并不是那么严谨,但是,Java的静态资源存储在堆中,有关这个我们不做特殊说明,因为牵扯到了JVM底层,网上的确有人通过jol证明了这个问题,此证明偏底层,小白勿入,详情请见:https://blog.csdn.net/x_iya/article/details/81260154。

评论列表

  • 加载数据中...

编写评论内容

1769176
发表于 2021-3-14

三、静态变量
静态变量主要是实现类中资源共享,例如,我们在A类中定义b属性,想让A类所有对象都能够访问到这个b属性,且每个b属性的值都互通。我们可以使用static关键字定义静态变量,当一个变量加了static关键字之后,就实现了对象间的资源共享(图1)。

评论列表

  • 加载数据中...

编写评论内容

张小枫
发表于 2021-3-14

我们可以尝试给b赋值,并查看是否完成了资源共享(图1)。

评论列表

  • 加载数据中...

编写评论内容
LoginCan Publish Content