为什么不能在Java类的主方法中使用它?

为什么不能在Java类的主方法中使用它?,java,Java,我已经使用Java大约六个月了,但是对于这个语句的具体工作原理,我有点不知所措。我知道它是用来指调用实例的。但是为什么不需要在主方法中使用它来引用在主方法中创建的对象呢 我认为这总是指当前对象,它比其他对象具有优先级。在构造函数中,这是针对正在创建的新对象的,正确。在main方法中,this.x.method引用main语句中的对象 问题:this关键字是指正在创建的当前对象吗?或者它是指正在被制作成新对象的对象 类别: public class DDHThisTest { public

我已经使用Java大约六个月了,但是对于这个语句的具体工作原理,我有点不知所措。我知道它是用来指调用实例的。但是为什么不需要在主方法中使用它来引用在主方法中创建的对象呢

我认为这总是指当前对象,它比其他对象具有优先级。在构造函数中,这是针对正在创建的新对象的,正确。在main方法中,this.x.method引用main语句中的对象

问题:this关键字是指正在创建的当前对象吗?或者它是指正在被制作成新对象的对象

类别:

public class DDHThisTest {
    public int x = 0;
    public int y = 0;

    public DDHThisTest(int a, int b) {
        this.x = a;
        this.y = b;
    }

    public static void main(String[] args) {
        DDHThisTest i = new DDHThisTest();
        this.i.x = 10;

    }
}
错误:

无法在静态上下文中使用此选项

在静态函数中,没有this。

您不能使用this.i.x,因为您不能在静态方法(在本例中为main)中引用实例变量。要解决这个问题,只需在i.x.之前移除这个


注意:在创建DdhtHistTest实例时,不要忘记将参数传递给构造函数,因为您没有声明没有参数的构造函数。

关键字this保留为用作实例的一部分。
如果删除this.,您应该会没事。

当您处于静态块中时,您没有对象范围。这意味着您正在使用的类没有特定实例,因此没有对该类实例的引用。

Main是一个静态方法,在生成DDHThisTest类的对象之前调用它。所以ypu试图引用一个尚未实例化的类的实例。所以你得到了错误。换句话说,您知道只能从静态方法访问静态变量。但是可以说,‘this’是一个实例变量;因此,您无法从静态方法访问它。

主方法是静态方法。 关键字这将在对象/实例范围中使用,而不是在静态块中使用


简单地替换这个。i.x=10;i.x=10;您应该很好。

正如错误消息所说,您不能在静态方法中使用此方法。这是一个特殊变量,自动提供给类的所有实例。静态方法没有实例,因此它们不能引用这个…您可能会有一些用处…我不是一个成员字段,它只是局部范围中的一个变量。main是一个静态方法,它不引用上下文对象,也不涉及如何在引擎盖下实现静态。有人能评论一下为什么main是静态的吗?
i.x = 10;
public static void main(String[] args)
{
    DDHThisTest i = new DDHThisTest(1, 2);
    i.x = 10;
}