高级特性2

1. static关键字

1.1 类变量、类方法

    /**
     * static关键字
     * 类变量不用实例化,直接类名.属性名就可以使用,是类的一部分,被所有这个类的实例化所共享,也可以叫做静态变量
     * 如果想让一个类的所有实例共享数据,就用类变量!
     * 
     * 实列变量,只是实例化后才能使用,属于实例化对象的一部分,不能公用
     * 
     * 使用范围
     * 可用static修饰属性、方法、代码块、内部类
     * 被修饰后的成员具备以下特点
     * 1.随着类的加载而加载(类加载后,静态方法或属性就可以使用了,类名.方法名)
     * 2.优先于对象存在,不用new就可以使用
     * 3.修饰的成员被所有对象所共享
     * 4.访问权限允许时,可不创建对象,直接被类调用
     * 
     * 注意:
     * 类变量,这种可以被所有实例化对象所共享的属性,使用起来要慎重,因为只要一改,所有类都能得到变化
     * 
     * 类方法:作为工具类的情况较多
     * static方法内部不能有this(也不能有super),因为this是针对对象的,static是类的,重载方法的方法需要同时为static或非static

     */

1.2 工具类

静态方法

//判断字符串是否为空或null
public class Utils {
    public static boolean isEmpty(String s) {
        boolean flag = false;
        if (s ==null && s.equals("")){
            flag = true;
        }
        return flag;
    }
    
}

//调用工具类
Utils.isEmpty("test")

1.3 单例 (Singleton)设计模式

懒汉式单例设计模式

public class Single1 {
    private Single1() {}
    /**
     * 懒汉式实例:第一次创建实例前为null,第一次创建实例后,创建,后面的都是同一个实例
     */
    //私有的类变量,为null;
    private static Single1 s1 = null;
    
    //公共的方法,如果s1为null,就创建实例,后面的就不用创建了
    public static Single1 getInstance() {
        if(s1 == null) {
            s1 = new Single1();
        }
        return s1;
    }
}

饿汉式单例设计模式

public class Single {
    /**
     * 单例设计模式:
     * 设计模式:就是在我们实际编程过程中,逐渐总结出的一些解决问题的套路
     * 单例设计模式:只有一个实例(实例化对象)在整个软件系统运行过程中,这个类只被实例化一次,以后无论在哪都只调用这一个实例
     */

    //饿汉式
    //私有的构造方法
    private Single() {
        
    }
    //私有的类变量,创建实例
    private static Single s = new Single();
    
    //公共的方法,返回私有的类变量 
    public static Single getInstance() {
        return s;
    }
}

懒汉式和饿汉式的区别

        /**
         * 懒汉式和饿汉式的区别:
         * 就是什么时候new这个对象,懒汉式,是在第一次有人调用getlnstance方法时类new对象,
         * 以后再有人调用getinstance方法直接就返回第一次new好的对象
         * 
         * 饿汉式,是在类加载之后,还没有人调用的时候,就new好一个对象,以后无论谁来调用
         * getinstance方法都直接返回直接new好的那个对象
         */

1.4 main方法

        /**
         * main方法
         * public static void main(String[] args) {}
         * 由于java虚拟机需要调用类的main()方法,所以该方法的访问权限必须是public,
         * 又因为java虚拟机在执行main()方法时不必创建对象,所以该方法必须是static的,
         * 该方法接收一个String类型的数组参数,
         * 该数组中保存执行java命令时传递给所运行的类的参数
         */

猜你喜欢

转载自www.cnblogs.com/istart/p/11954601.html