为什么这个'这个'关键字在这里使用?

时间:2015-10-19 03:42:30

标签: java oop this

据我所知,这是指当前的对象。因此,我不能使用objectname.fun(objectname.nonstaticmember),而是使用objectname.fun(this.nonstaticmember)

请参考下面的示例,并在最后看到最后两条评论。

public class Question
{
    int data;

    void myfun(int data)
    {
        System.out.println("data=="+data);
    }

    public Question(int data)
    {
        this.data = data;
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args)
    {   
        Question question = new Question(10);
        //question.myfun(question.data);//WORKS
        question.myfun(this.data);//DOES NOT WORK
    }
}

3 个答案:

答案 0 :(得分:5)

正如您所提到的,this关键字用于引用当前对象而不是类。在您的情况下,您尝试在静态方法this中使用它(main)。另请查看link

答案 1 :(得分:3)

main()是一个static方法(类方法),它不从对象运行。由于它位于类上下文中,因此关键字this没有意义(它没有可引用的对象)。

答案 2 :(得分:1)

在java中,这个关键字用于引用当前对象但main是静态方法,在static方法中这个关键字没有任何意义。

public class Line {
public static void main(String[] args){
    System.out.println(this);

} }

输出:编译时错误“非静态变量,这不能从静态上下文引用”。