当前位置: 首页 > 知识库问答 >
问题:

为什么这里不能使用“this”关键字?

陆高峰
2023-03-14

我理解这是指当前对象。所以,与其使用 objectname.fun(objectname.非静态成员),为什么我不能使用 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个答案

裴星洲
2023-03-14

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

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

}}

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

张逸清
2023-03-14

main()是一个静态方法(类方法),它不从对象运行。由于它在类上下文中,关键字<code>this<code>没有意义(它没有可引用的对象)。

锺离德运
2023-03-14

正如您提到的<code>这个main中使用它(this)。也请检查此链接。

 类似资料:
  • 问题内容: 我了解这代表调用方法的对象,并且静态方法未绑定到任何对象。但是在上述情况下,变量y也是静态的。 如果我们可以在类对象上调用静态方法,为什么不能允许静态方法设置类的静态变量。 此附加约束的目的是什么? 问题答案: 因为是指对象实例。静态方法的调用中没有对象实例。但是当然你可以访问你的静态字段(仅静态字段!)。只需使用 如果要确保获取的是静态字段,而不是某些具有相同名称的局部变量,请使用类

  • 问题内容: 在这段代码中,当我使用 然后我的应用崩溃了,Logcat说 这是与此代码关联的XML文件 问题答案: 在这段代码中,当我使用TextView text =(TextView)getActivity()。findViewById(R.id.text1) 然后我的应用程序崩溃了,Logcat说这是由以下原因引起的:java.lang.NullPointerException:尝试在空对象引

  • 请问这个为什么要用this啊,不是都在export default中吗? 我只知道this有代表当前类的意思,这个不太懂欸。目前做毕设在跟小白速成课,基础非常差,希望有好心人可以帮忙解答一下,谢谢啦。

  • 问题内容: 当我使用关键字访问类中的非静态变量时,Java不会给出任何错误。但是当我不使用它时,Java会给出一个错误。为什么要使用? 我知道什么时候应该正常使用,但是这个示例与正常用法大不相同。 例: 问题答案: 首先声明变量,然后赋值。该类与此相同: 您无法执行此操作的原因是,在创建对象时尚未定义,但是对象本身(即)及其所有成员变量都存在。 这是每个的说明:

  • 问题内容: 似乎几乎没有人意识到这一点,但是Java中的“ thisreference”是最终的。在正常的编程天中,我认为可以通过在自己的类中重新定义此引用来重新定义整个实例: 为什么此引用在Java中是最终的? 问题答案: 问题不在于它是参考,而是它本身根本不是参考。是一个 关键字 ,“表示一个值,该值是对为其调用实例方法或默认方法的对象的引用”(JLS§15.8.3)。 此外,从可以重新分配变

  • 为什么我们不能决定让它不是静态的呢?它让我们做什么?