static final this super关键字

Static

    类变量属于整个类,当系统第一次准备使用该类时,系统会为该类分配内存空间,类变量开始生效,直到改类被卸载,该类的类变量所占有的内存才被系统的垃圾回收机制会后。类变量随着类的加载而加载。

    静态初始化块也是类成员的一种,静态初始化块用于执行类初始化动作。在类的初始化阶段,系统会调用该类的静态初始化代码块来对类进行初始化。一旦该类初始化结束后,静态初始化块永远不会获得执行的机会。

    对static关键字而言,有一条非常重要的规则:类成员(包括方法、初始化块、内部类和枚举类)不能访问实例成员(包括成员变量、方法、初始化块、内部类和枚举类)。因为类成员时属于类的,类成员的作用域比实例成员的作用域更大,完全可能出现类成员已经初始化完成,但实例成员还不曾初始化的情况,如果允许类成员访问实例对象会将引起大量错误。

类成员的特点
    1.随着类的加载而加载
    2.优先于对象存在
    3.修饰的成员,被所有对象所共享
    4.访问权限允许时,可不创建对象,直接被类调用
    5.静态方法中不能调用非静态水性和非静态方法
    6.静态方法好着呢个不能使用this和super,因为类加载时,this和super不存在

类变量的调用:类名.类变量名

何时使用static?
    static修饰属性:一般修饰常量
    static修饰方法:一般为工具类里的方法

单例模式
    提高系统性能(频繁地创建对象、回收对象所带来的系统开销问题)
    方式:1.私有化构造器
                2.提供一个类变量来缓存曾经创建的实例
                3.提供一个静态方法返回实例

饿汉式:(线程安全的)

    class Bank{
    	//1.私有化构造器 - 不能再通过构造器创建对象了
    	private Bank(){}
    	//2.创建对象。私有化并使用static修饰
    	private static Bank bank = new Bank();
    	//3.提供一个公共的get方法返回当前类的对象
    	public static Bank getInstance(){
    		return bank;
    	}
    }

懒汉式:(线程不安全的,延缓了对象的创建节省了内存)

    class Computer{
    	//1.私有化构造器
    	private Computer(){}
    	//2.提供该类的实例的声明,私有化并使用static修饰
    	private static Computer c = null;
    	//3.提供一个公共的get方法返回当前类的对象,并在方法中创建该类的对象
    	public static Computer getInstance(){
    		if(c == null){
    			c = new Computer();
    		}
    		return c;
    	}
    }

final

    1.final标记的变量(成员变量或局部变量)即称为常量。必须被显示赋值,名称大写,且只能被赋值一次,编译时初始值已经被确定下来。
    2.final标记的方法不能被子类重写。(如Object类中的getClass())
    3.final标记的类不能被继承。提高安全性,提高程序的可读性。(如java.lang.Math)

不可变类:创建该类的实例后,该实例的实例变量是不可改变的,Java提供的8个包装类和java.lang.String类都是不可变类
例如:Double d = new Double(6.5);
            String str = new String(“Hello”)


this

    1.this表示当前对象,可以调用类的属性、方法和构造器
    2.使用this()必须放在构造器的首行
    3.使用this调用本类中其它的构造器,至少有一个构造器是不用this的。


super

    1.super可用于访问父类中定义的属性
    2.super可用于调用父类中定义的成员方法
    3.super可用于在子类构造器中调用父类的构造器


super和this的区别

猜你喜欢

转载自blog.csdn.net/qq_38697437/article/details/82973691