您的位置:首页 > 编程语言 > Java开发

java中的this、super、static关键字

2015-02-08 16:06 429 查看
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类似,指向父类的指针,用它可以应用父类对象或者解决父类对象中和子类同名的变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: