一.
介绍一个新的关键字,并不陌生,static在写主函数的时候,经常使用到。
static是一个关键字,同时也是一个修饰符。它到底有什么用呢?到底什么时候用呢?
下面的截图中,刚开始对于描述类的书写是String name。并没有加上修饰符private,是为了方便调用,同时也没有书写,get,set两个固定的方法。(对于描述类的书写还是欠缺很多,前面讲解的内容没有深刻理解)
我们观察这个源程序:程序是StaticDemo.java,程序是由两个类构成的,一个是Person类,一个是StaticDemo类。这两个类名起名也挺有意思,一个是描述,一个是创建。通过这两个类名,我们可以认识到,程序是对static的练习,里面用到的是person这个事物的对象。
根据描述类的类名,我们也可以大致确定描述类中的成员变量和函数是个什么样的情况。
对上面截图中的描述类进行分析,人这个事物或者类,他具有姓名和国籍两个属性,人有一个show功能来展现自己的姓名和国籍。
在这里,country变量居然进行了赋值,之前从来没有过。这里这么做的原因是什么?
对程序进行运行,结果如下。在描述类中,对国籍变量进行赋值,相当于提前固定了。
现在对上面的例子进行扩展,如果在类中,创建更多的对象,这些众多的对象的name是不一样的,但是country是一样的。这就带来一个问题,堆内存中这么多相同的country变量存在,有点多余。
现在的设想是将country变量放置在外面,每个对象使用的时候,直接到外面来提取一下(估计目的是为了节省堆内存的空间),把country变成所有对象共享的数据。
怎么来实现这样的操作呢?把country变成所有对象共享的数据,这就需要关键字static。
这个country数据可以称作对象的共享数据。每个对象中的name都不一样,我们称之为,对象的特有数据。对象内部封装的数据,都是它特有的数据。对象封装的不是name,是name所属的值。
static修饰完的数据,是被对象共享的数据。
→对象的数据共享问题。