this关键字
this,当前对象的默认引用。(调用这个方法的对象的引用)
在一个类中,其中一个构造方法调用其他构造方法可以使用this关键字。
1、调用成员变量,用来解决成员变量和局部变量同名的问题。
2、在本类中构造调用其他构造方法。(注意:在构造方法中调用其他构造方法时,this语句必须方法在第一句)
static关键字
static关键字可以用于成员变量、方法、代码块和类。
static修饰的变量称为静态变量。
static修饰的方法称为静态方法。
static修饰的初始化代码块,称为静态初始化块。
静态的解释:static关键字
静态、静止的。静态变量不会随着对象的变化而变化
加载时机:
随着类的加载而加载。
静态变量随着类的加载进方法区,就直接在静态区给开辟了存储静态变量的内存空间
静态变量优先于对象而存在
静态变量被所有该类对象所共享
代码层面:可以使用类名直接调用,不需要使用对象名称。在不创建对象的前提下,仍然可以使用这个静态变量。建议使用类名来访问。
概念上,所属不同:
非静态变量属于对象
静态变量属于类,类变量
内存空间不同,存储位置不同
非静态变量属于对象,所以存储在堆内存中
静态变量属于类,存储在方法区的静态区中
内存时间不同,生命周期不同
非静态变量属于对象,所以生命周期和对象相同,随着对象的创建而存在,随着对象的消失而消失
静态变量属于类,所以生命周期和类相同,随着类的加载(创建对象、类名访问静态变量、类名访问静态方法、反射的方式、加载子类、运行某个测试类)而存在,随着类的消失(内存管理)而消失
访问方式不同
非静态变量只能使用对象名访问
静态变量既可以使用对象访问,也可以通过类名访问:
类名.静态变量名
类名.静态方法名()
静态方法可以直接访问静态变量和静态方法。(静态可以访问静态)
静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。(静态不能访问非静态)
静态方法中,不能使用this关键字。