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

Java Notes: Java的this和static

2016-07-29 16:06 344 查看
this 关键字:

Java调用非静态的成员方法的机制中需要将当前调用方法的对象传入方法,以识别是谁调用该方法。(隐式传入)

例如:

public class Banana{
public void func(int i){
}

public static void main(String[] args){
Banana a = new Banana();
Banana b = new Banana();
a.func(1);
b.func(2);
}
}

这里的a.func(1)实质是Banana.func(a,1),而b.func(1)的实质是Banana(b,2)。但这只是编译器内部的写法,不能这样写程序。但是如果我需要使用传入函数的对象引用,可使用this关键字。this只能在方法内使用,表示调用方法的那个对象。

而通常会用到this的时候:

1) 为了区分同名的参数:

public class Point {
private int x;

public Point(int x) { this.x = x;}
}

2) 为了调用本身的另外一个构造器 

public Rectangle() {
this(1,1);
}

public Rectangle(int width, int height) {
......
}

static 关键字:

static方法就是没有this的方法。调用语法只能是用"类名.静态方法()"。没有this,意味着不能传进调用的当前对象,所以不能使用对象去调用方法。所以,在静态方法内部不能直接调用非静态的方法,因为没有this对象。但是非静态方法是可以访问静态方法和静态域的。

由于Java禁止使用全局方法,所以使用static方法来代替。static方法可以访问属于同类的static方法和static变量。我们称static方法为属于该类的东西。由所有类的对象所共享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: