hadoop学习序曲之java基础篇--java静态

1:static
    什么时候使用静态?
针对所有对象的属性值都一样的时候,这个属性就可以使用static修饰,这个时候这个属性就存在于方法区中的静态区中。被所有对象共享。
针对每个对象特有的属性,这个就不能使用static修饰了。
    针对静态修饰的变量有两种调用方式
1:使用对象进行调用
        2:直接使用类名调用。
    生命周期:
    静态区中的变量(所属于类的) > 堆内存中对象里面的变量(所属于对象的) > 栈内存中变量(所属于当前的花括号)
    注意:
    在静态方法内部只能调用静态属性,如果想要调用非静态属性,必须先要获取到这个属性所属的对象。
    总结:静态的使用场景一些注意事项
        成员变量
            普通成员变量(实例变量)
                所属于对象,必须先创建对象,才能使用这个变量,这个变量是存在于堆内存中,它的生命周期和对象一样,对象消失,实例变量才消失。
            静态成员变量(类变量)
                所属于类,不需要对象,可以直接通过类名来调用,这个变量存在于方法区的静态区中,它的生命周期和java虚拟机一样,虚拟机执行结束,类变量才消失。
        成员函数
            普通成员函数
                可以调用普通成员变量和静态成员变量。
            静态成员函数
                只能调用静态成员变量,因为当静态成员函数被调用的时候,可能对象还不存在,所以不能调用对象中的特有属性。
                在静态成员函数中不能使用this关键字
2:main函数(主函数)
    main方法的作用主要是为了创建其他类的对象,对对象中的功能进行调用,验证功能的执行结果。
    public:是一个权限修饰符,最大权限,因为这个方法需要被虚拟机所调用,所以这个函数的权限应该设置为最大 
    static:因为java虚拟机在调用这个方法的时候,还没有对象,所以需要静态
    void :因为虚拟机不需要返回值
    main:就是一个函数名,一个标识符,只不过比较特殊,可以被java虚拟机识别
    String[]:表示是一个字符串数组,
    args:参数名称//arguments
3:静态代码块
    格式:
    static{
    }
    静态代码块一般放在类中,和构造代码块平级
    作用:
    可以负责对类进行初始化。

    静态代码块什么时候执行呢?
        当类被加载进内存的时候,静态代码块执行
4:设计模式
    表示是解决某一个类问题最行之有效的方法。
    23种设计模式
        单例设计模式
            :这个设计模式可以保证在内存中一个对象只存在一份。
    例子:现在有A程序和B程序,
    分析:
    1:保证其他地方不能创建这个config的对象,
    2:我们自己创建一个对象,把这个对象对外开放出去
    3:对外提供公共的访问方式
    代码实现
    1:私有化构造函数
    2:在类中创建一个私有对象
    3:对外提供一份public的静态方法,把刚才创建的对象返回出去
    单例有两种形式
    1:饿汉式,一开始就直接创建对象
    class Single
{
//1:私有化构造函数
private Single(){
}
//2:创建一个私有对象
private static Single sd = new Single();


//3:对外提供一个公共的访问方法
public static Single getInstance(){
return sd;
}
}
    2:懒汉式,在需要使用对象的时候才会创建
class Single2 
{
//私有化构造函数
private Single2(){
}
//定义一个对象的引用变量
private static Single2 s2 = null;


//对外提供公共的访问方式
//TODO--这块其实是存在线程安全问题的,后期讲完多线程之后再优化
public static Single2 getInstance(){
if(s2==null){
s2 = new Single2();
}
return s2;
}

}

你可能感兴趣的:(hadoop学习序曲之java基础篇--java静态)