【发布时间】:2017-04-07 00:50:10
【问题描述】:
//已编辑:我想我把问题表述错了。我熟悉“我们需要一个实例来访问非静态变量和方法”的概念。
但我的问题是
当我在 Eclipse 中键入 prgm 时,它在 B 行显示错误,但我希望在 A// 上也显示错误//
这是一个基本问题,请不要介意。
package com.sigma.java;
import java.util.*;
public class Test1 {
private int a=1;
public void add(){
System.out.println(a);-------->A
}
public static void main(String[] args) {
Test1 t=new Test1();
System.out.println(a);-------------->B
}
}
编译器在尝试打印 a(标记为 B)时在 main 方法中显示错误 (错误 - 无法对非静态字段 a 进行静态引用) 问题-为什么我在 add() 方法中没有得到相同的错误(标记为 A)
【问题讨论】:
-
因为
add()不是static而main()是。尝试打印t.a。 -
你正在调用一个非静态变量,它是`private int a=1;
from a static method which ismain()`方法。只需制作private static int a=1;,您就会看到不同之处。 -
请在提问之前搜索您的问题,因为这个问题之前已经被问过数千次了。如果您觉得我们真的需要更多,那么首先搜索并找到之前的规范问题/答案,在您的问题中展示此搜索的成果,并清楚地说明您认为您的问题不同的原因。
-
(1) 请格式化您的代码,使其看起来整洁,并且只包含真实代码(或者,如果您想编写伪代码,请确保您清楚地标记它)。 (2) “编辑”标记在这里通常不是必需的,而且通常只是膨胀一个问题——如果有人关心这个问题曾经问过什么,它在历史记录中是可见的,你可以通过单击“已编辑”的链接来查看[some time] ago”在您的问题下方,在您的个人资料图片和用户名旁边。 (3) 不,您显然不了解差异,因为差异导致了此错误。重新阅读链接问题的答案