前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java-静态、非静态方法的区别以及on-static method getLastRow() cannot be referenced from a static context问题

Java-静态、非静态方法的区别以及on-static method getLastRow() cannot be referenced from a static context问题

作者头像
Fisherman渔夫
发布2019-07-31 14:41:19
9420
发布2019-07-31 14:41:19
举报
文章被收录于专栏:渔夫

版权声明: https://blog.csdn.net/li_xunhuan/article/details/89048185

代码语言:javascript
复制
public class TestWay {
public static void main(String[] args) {
    //A.test(1,3);这个语句会直接报错
    A t1 = new A();
    t1.test(3, 4);
    B.test2(3, 4);
    B t2 = new B();//当然是对static方法也可以新建一个对象,进行方法调用的
    t2.test2(3, 4);
}

}

class A {
void test(int a, int b) {
    System.out.println(a + b);
}

}

class B {
static void test2(int a, int b) {
    System.out.println(a + b);
}
}

一、问题的解决: on-static method getLastRow() cannot be referenced from a static context问题的出现主要由于是main方法是静态的,如果你在main方法中直接调用一个非静态方法这是不合法的。那么系统就会直接报错。如上述例子中的A.test(1,3);会报错。

二、相关要求: 静态方法可以通过类来调用,其余得创建对象来调用。(且特别注意,这里不是指类的静态与否,因为类只有public和default可以进行描述) 三、相关内存分析: 就是当类被加载的时候静态方法和静态属性(全局静态变量)被加载到内存中,main方法是静态的,所以其在内存中是有代码,有方法的。但是如果直接让其在去执行非静态方法A.test(1,3);,由于其不会自动加载于内存中,所以会导致根本寻址不到其在内存中的相关方法代码,得以执行。new一个非静态方法的实例则会在内存中加载相关代码,这样一来就可以用静态方法-main去访问非静态的全部变量以及方法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档