本文为学习笔记 能力有限 如有错误望指正。谢谢!!!
this: this 可以看作是一个变量,值是当前对象的引用
super:当前子类对象的父类对象的引用(当我们初始化子类对象时也会随之初始化父类对象,子类对象若想引用父类对象的的成员变量需要使用super关键字)
public class Leaf {
int i = 0;
Leaf ( int i ) {
this.i = i;//可以用来解决参数变量和成员变量重名的情况
}
Leaf increasment () {
i++;
return this;
}
void print () {
System.out.println( "i = " + i );
}
public static void main(String[] args) {
Leaf leaf = new Leaf(100);
leaf.increasment().increasment().print();
}
}
static :
1.用static声明的成员变量是静态变量存储在程序的datasegment,它为该类的公用变量,在类第一次使用的时候初始化且只有一份,该类的所有对象共享这一个变量。而非静态成员变量在类实例化的时候初始化,而且每new一个对象都会在堆内存里开辟新的一段空间存储新的对象。从生命周期上看static变量属于类,类被加载时初始化,类被销毁时也随之消失。
2. 用static声明的方法是静态方法,静态成员变量一样,属于类本身,在类装载的时候被装载到内存(Memory),不自动进行销毁,会一直存在于内存中,直到JVM关闭。 static 方法不可以访问非static成员(试想一个随着类的加载而载入到内存的静态方法怎样引用一个还没有实例化的类的非静态的成员变量呢?)同理在static方法中也不能使用this和super关键字。
3.可以通过对象引用和类名(不需要实例化)访问静态成员。
网友评论