1 导致该“错误”的示例代码
public class test {
public static void main(String[] args) {
System.out.println("计算加法:");
int a = 10, b = 7;
Plus plus = new Plus();
System.out.println(a + " + " + b + " = " + plus.Add(a, b));
}
class Plus {
public int Add(int x, int y) {
return x + y;
}
}
}

2 “出错”原因解析
- 静态方法或变量:被
static关键字修饰,可通过类直接调用。 - 非静态方法或变量:依赖于对象,是对象的属性,只有先实例化对象,才能使用。
-
错误的原因:无法从静态上下文中(
main)引用非静态 变量this (Plus)。 -
修改方法:将类
Plus放在类test外面。
3 修改后的正确代码
public class test {
public static void main(String[] args) {
System.out.println("计算加法:");
int a = 10, b = 7;
Plus plus = new Plus();
System.out.println(a + " + " + b + " = " + plus.Add(a, b));
}
}
class Plus {
public int Add(int x, int y) {
return x + y;
}
}
4 编译、运行及结果
4.1 编译命令 (支持中文)
javac -encoding utf-8 test.java
4.2 运行
java test
4.3 输出结果
计算加法:
10 + 7 = 17
本文通过一个Java代码示例,展示了在静态上下文中尝试访问非静态成员导致的错误。错误的根本原因是静态成员不能直接引用非静态的实例变量。为解决此问题,建议将非静态类移出静态类。修复后的代码成功实现了加法运算的打印,并给出了编译和运行命令,输出结果为10+7=17。学习这个例子有助于理解Java中静态与非静态的概念和用法。

1万+

被折叠的 条评论
为什么被折叠?



