静态关键字static以及帮助文档的制作

        我们每次写主函数都会用到static关键字,对于新人来说,我们只要按照固定格式写就不会出错,但是我们并不知道static是什么含义。static关键字是静态的意思,用于修饰成员变量和成员函数。当一个成员被static修饰的时候,它也能被对象调用,和其它成员表现上是一样的,区别在于:静态的成员除了被对象所调用外还可以被类名直接调用,在内存上的区别就是被静态修饰的成员在内存上有一独立的存储空间,这个空间就叫做方法区或者共享区。static的特点:随着类的加载而加载;优先于对象而存在;被所有对象共享;可以直接被类名调用。static还可以修饰方法,但是被static修饰的方法只能使用静态的成员变量,不能使用实例变量(实例变量就是随着对象的建立而存在的成员变量)。而且静态方法时优先于对象存在的,所以静态方法中不能出现this、super等关键字,因为this这些关键字都是代表对象的,而静态方法存在的时候没有对象,所以会报错。静态修饰好处在于,可以节省空间,对共享数据单独开辟空间,所有对象都可以访问;坏处在于既然被修饰了之后,静态只能访问静态,访问上存在限制,而且生命周期过长,

        这时我们会发现主函数就是一个被static修饰的函数,这里我们分析一下主函数:

        public static void main(String[] args){}:

        1、public:代表着该函数的访问权限是最大的;

        2、static:代表着主函数随着类的加载而加载;

        3、void:代表着主函数没有返回值;

        4、main:main不是关键字,但是十一个特殊的单词,可以被Java虚拟机识别;

        5、String[] args:这是一个字符串数组,而字符串数组的名字是唯一一个主函数中可以改变的地方。

主函数是有固定格式的,用于Jvm的识别,固定格式中只有字符串数组的名字可以改变,但是我们因为习惯问题,一般还是写args,而args就是单词arguments(参数的复数形式)的缩写形式。

        现在我们了解了静态static,那么我们就会想我们什么时候使用static呢?首先对于静态成员变量,只有我们的程序中出现共享数据时,我们用static进行定义以减少内存的占用。对于方法而言,当我们方法内部没有用到非静态的的成员变量时,该方法可以定义成静态的方法。

        有时候我们自己也可以制作工具类,这些工具类里封装一些方法,提供给别人使用,但是别人不知道你里面都有什么函数和怎么去使用这些函数,这时候我们就需要制作一个帮助文档来让别人知道你的工具类的具体使用方法,那么这个帮助文档具体是怎么制作的呢?

        帮助文档格式:/**

                                    函数功能的描述

                                    @param 描述一下我们需要接收什么类型的参数

                                    @return 描述一下函数的返回值

                                     */

这就是具体的格式,当然如果读者想知道具体的文档描述的关键字,可以自行查阅。

        这里我们介绍一种简单的设计模式:单例设计模式。什么时候单例设计模式呢?单例模式就是当一个程序只能允许一个对象,这个时候我们就需要使用单例设计模式。单例设计模式分为两种,一种叫做饿汉式,另一种是懒汉式。我们可以将构造函数私有化,这样就禁止了其它程序自行创建对象,在类中自己创建一个本类对象,然后在自己创建一个方法让其它程序获得该对象。饿汉式具体代码:private Single();private static Single s=new Single();public staticSingle getInstance(){return s};我们每次返回的都是对象s,无论你接收多少个对象,指向的都是同一个地址。懒汉式是在需要的时候在创建对象:private static Single s=null;private Single();public static Single getInstance(){if s==null   s=new Single(); return s;}但是这个在判断的时候有点问题,因为CPU访问进程的时候是间断的,只是因为时间太短,我们感觉不出来而已。当访问到if那一句是如果间断了,然后又进来一个进程判断,这时候如果继续就有可能导致两个对象被建立,所以一般我们都有饿汉式,当然这个我们也有解决方法,就是在这个方法上加一个锁public static synchronized SinglegetInstance(){if(s==null){SinglegetInstance(Single.class){if(s==null) s=new Single();}}return s;}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章