Java:“错误: 无法从静态上下文中引用非静态 变量 this”

本文通过一个Java代码示例,展示了在静态上下文中尝试访问非静态成员导致的错误。错误的根本原因是静态成员不能直接引用非静态的实例变量。为解决此问题,建议将非静态类移出静态类。修复后的代码成功实现了加法运算的打印,并给出了编译和运行命令,输出结果为10+7=17。学习这个例子有助于理解Java中静态与非静态的概念和用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 “出错”原因解析

  1. 静态方法或变量:被static关键字修饰,可通过类直接调用。
  2. 非静态方法或变量:依赖于对象,是对象的属性,只有先实例化对象,才能使用。
  • 错误的原因:无法从静态上下文中(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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值