JAVA-初步认识-第七章-static关键字-数据共享

摘要:
一.介绍一个新的关键字,并不陌生,static在写主函数的时候,经常使用到。static是一个关键字,同时也是一个修饰符。通过这两个类名,我们可以认识到,程序是对static的练习,里面用到的是person这个事物的对象。现在的设想是将country变量放置在外面,每个对象使用的时候,直接到外面来提取一下,把country变成所有对象共享的数据。每个对象中的name都不一样,我们称之为,对象的特有数据。static修饰完的数据,是被对象共享的数据。

一.

JAVA-初步认识-第七章-static关键字-数据共享第1张

介绍一个新的关键字,并不陌生,static在写主函数的时候,经常使用到。

static是一个关键字,同时也是一个修饰符。它到底有什么用呢?到底什么时候用呢?

下面的截图中,刚开始对于描述类的书写是String name。并没有加上修饰符private,是为了方便调用,同时也没有书写,get,set两个固定的方法。(对于描述类的书写还是欠缺很多,前面讲解的内容没有深刻理解)

我们观察这个源程序:程序是StaticDemo.java,程序是由两个类构成的,一个是Person类,一个是StaticDemo类。这两个类名起名也挺有意思,一个是描述,一个是创建。通过这两个类名,我们可以认识到,程序是对static的练习,里面用到的是person这个事物的对象。

JAVA-初步认识-第七章-static关键字-数据共享第2张

根据描述类的类名,我们也可以大致确定描述类中的成员变量和函数是个什么样的情况。

JAVA-初步认识-第七章-static关键字-数据共享第3张

对上面截图中的描述类进行分析,人这个事物或者类,他具有姓名和国籍两个属性,人有一个show功能来展现自己的姓名和国籍。

在这里,country变量居然进行了赋值,之前从来没有过。这里这么做的原因是什么?

JAVA-初步认识-第七章-static关键字-数据共享第4张

对程序进行运行,结果如下。在描述类中,对国籍变量进行赋值,相当于提前固定了。

JAVA-初步认识-第七章-static关键字-数据共享第5张

现在对上面的例子进行扩展,如果在类中,创建更多的对象,这些众多的对象的name是不一样的,但是country是一样的。这就带来一个问题,堆内存中这么多相同的country变量存在,有点多余。

现在的设想是将country变量放置在外面,每个对象使用的时候,直接到外面来提取一下(估计目的是为了节省堆内存的空间),把country变成所有对象共享的数据。

JAVA-初步认识-第七章-static关键字-数据共享第6张

怎么来实现这样的操作呢?把country变成所有对象共享的数据,这就需要关键字static。

JAVA-初步认识-第七章-static关键字-数据共享第7张

这个country数据可以称作对象的共享数据。每个对象中的name都不一样,我们称之为,对象的特有数据。对象内部封装的数据,都是它特有的数据。对象封装的不是name,是name所属的值。

static修饰完的数据,是被对象共享的数据。

→对象的数据共享问题。

免责声明:文章转载自《JAVA-初步认识-第七章-static关键字-数据共享》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Jenkins 六: 构建中执行shell或者 windows的批处理程序git查看日志下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Vue实现图片预加载

<script>export default { data () { return { count: 0, } }, mounted: function() { this.preload() }, methods: { preload: function() { let imgs = [ "static/img/back.gif", "sta...

Java的静态代码块是否会在类被加载时自动执行?

JAVA静态代码块会在类被加载时自动执行?一、先看Java静态方法,静态变量 http://www.cnblogs.com/winterfells/p/7906078.html 静态代码块 在类中,可以将某一块代码声明为静态的,这样的程序块叫静态初始化段。静态代码块的一般形式如下: static { 语句序列 } public class stat...

Electron 使用 Tray设置图标的路径问题

问题报错信息如图 上面的代码在dev模式下不报错,但是在build后,安装后,运行会提示错误,错误信息的大意是参数错误,原因应该是安装后的图片文件路径有问题,这块没有详细研究解决上面的问题的方法,是使用nativeImage代替字符串路径 new Tray(nativeImage.createFromPath(path.join(__dirname, '...

静态代码块

static {//静态代码块 }   关于静态代码块,要注意的是: 它是随着类的加载而执行,只执行一次,并优先于主函数。具体说,静态代码块是由类调用的。类调用时,先执行静态代码块,然后才执行主函数的。 静态代码块其实就是给类初始化的,而构造代码块是给对象初始化的。 静态代码块中的变量是局部变量,与普通函数中的局部变量性质没有区别。 一个类中可...

WinForm 限制同一个进程只能打开一次

打开Program.cs 代码文件,这里是程序的入口点,如下: static voidMain() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false)...

【整理】unity3d优化总结篇

对项目优化有很多,如:mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,现在继续补上,该内容为本人经验以及网上收集整理,希望大家有更好的优化方法,能够继续跟帖,一起探讨,共同进步。优化:1. 更新不透明贴图的压缩格式为ETC 4bit,因为android市场的手机中的GPU有多种,每家的GPU支持不同的压缩格式,但他们都...