java中的this、super、static关键字

来源:互联网 发布:赚钱宝pro映射哪些端口 编辑:程序博客网 时间:2024/05/17 09:08
this关键字:
1.用于指代本对象

2.用于指代类中的成员,解决变量同名问题

/*this 关键字*/public class Leaf{int i = 0;Leaf(int i){this.i = i;}Leaf increament(){i++;return this;}void print(){System.out.println("i="+i);}public static void main(String args[]){Leaf leaf = new Leaf(100);leaf.increament().increament().print();}}

下面是关于这个代码的内存分析:


从图中可以清晰的看到this关键字存的就是一个指针,并且他指向对象本身在堆中的首地址

static修饰符关键字:
static修饰的成员属于类(只有一份)而不属于某一个具体的对象,因此访问时可以通过对象引用或者类名(不需要实例化)
1.static修饰的成员变量(不能修饰局部变量)位于静态数据段,第一次使用便存在,直到程序运行结束。
2.static修饰的成员方法是静态方法,静态方法不再针对某一个对象,所以静态方法里面不能访问非静态成员(因为非静态成员属于一个对象)
3.static一般用于计数

下面是一个关于static的测试代码:

public class Cat{private static int sid = 0;private String name;private int id;Cat(String name){this.name = name;id = sid++;}public void info(){System.out.println("my name is "+name+" No."+id);}public static void main(String args[]){Cat.sid = 100;Cat mimi = new Cat("mimi");Cat bibi = new Cat("bibi");mimi.info();bibi.info();}}
下面是关于这段代码的内存分析:

从内存图中可以看出,static成员变量在数据区,第一次使用时便被初始化,直到程序结束。


super关键字

super同this类似,指向父类的指针,用它可以应用父类对象或者解决父类对象中和子类同名的变量

0 0