gpt4 book ai didi

Java:非静态变量 this 不能从静态上下文中引用

转载 作者:行者123 更新时间:2023-12-02 00:08:00 33 4
gpt4 key购买 nike

Possible Duplicate:
What is the reason behind “non-static method cannot be referenced from a static context”?

我是 Java 新手。我有以下几组代码。

class Default
{
private short s;
private int i;
private long l;
private float f;
private double d;
private char c;
private String str;
private boolean b;

public static void main (String args[ ])
{

Default df = new Default();

System.out.println("\n Short = "+s);

System.out.println ("\n int i =" + i);
System.out.println ("\n long l =" + l );
System.out.println ("\n float f =" + f);
System.out.println ("\n double d =" + d);
System.out.println ("\n char c =" + c);
System.out.println ("\n String s =" + str);
System.out.println("\n boolean b =" + b);
}
}

这会产生一条错误消息作为此问题的主题,但以下代码可以完美运行。

class Default
{
private short s;
private int i;
private long l;
private float f;
private double d;
private char c;
private String str;
private boolean b;

public static void main (String args[ ])
{

Default df = new Default();

System.out.println("\n Short = "+df.s);

System.out.println ("\n int i =" + df.i);
System.out.println ("\n long l =" + df.l );
System.out.println ("\n float f =" + df.f);
System.out.println ("\n double d =" + df.d);
System.out.println ("\n char c =" + df.c);
System.out.println ("\n String s =" + df.str);
System.out.println("\n boolean b =" + df.b);
}
}

这给出了期望的结果。这两套代码有什么区别。

最佳答案

您有一个名为 dfDefault 实例化对象,它正在调用这些变量。由于您创建的变量不是静态,因此它们必须是已创建的某个对象的一部分。

Default df = new Default();
df.i //<- is now a part of the instantiated object df.

如果关键字static不与对象一起使用,则可以使用它。所以你可以说:

private static char c;

然后您可以随时调用 char c,该函数将为 null,因为您尚未为其赋值。

当您要在没有对象的情况下使用该变量或方法时,请使用static

关于Java:非静态变量 this 不能从静态上下文中引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13464086/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com