星空网 > 软件开发 > Java

静态动态的问题

 

Cannot make a static reference to the non-static field

静态方法中不能引用非静态成员变量及方法

1 class A {2  private int a = 1;3 4  public sttaic void main(String[] args){5   System.out.println(a);6  }7 }

因为实例变量应该是具体对象的状态,应该先A a =  new A();然后System.out.println(a,a);

或者将变量改为static

 

No enclosing instance of type EventApp4 is accessible. Must qualify the allocation with an enclosing instance of type EventApp4 (e.g. x.new A() where x is an instance of EventApp4).

原因:内部类没有用static限定,所以是动态的,而我在main函数中new了这个内部类。为什么这样就出现问题了呢,因为静态的方法以及变量在类加载之时就已经进入内存了,但是非静态的方法和变量只能在实例化之后才会进入内存,所以在静态方法中new非静态的内部类就会出错,因为此时这个内部类还不存在呢。反之,在动态方法中new静态方法是不会出现错误的,原因同样,静态的在非静态的之前就已经存在了。

 

从java的内存机制去分析,首先当你New 一个对象的时候,并不是先在堆中为对象开辟内存空间,而是先将类中的静态方法(带有static修饰的静态函数)的代码加载到一个叫做方法区的地方,然后再在堆内存中创建对象。所以说静态方**随着类的加载而被加载。当你new一个对象时,该对象存在于对内存中,this关键字一般指该对象,但是如果没有new对象,而是通过类名调用该类的静态方法也可以。

 

 

遇到遇上问题时,有以下原则

1.在main中,使用静态方法静态变量静态类,即将变量、方法都限定为static

2.在main中,实例化本类或其他类(要使用的类)

3.将main中的语句放进构造函数中,在main中实例化本类,因为构造函数中可以使用本类的引用this

 

原标题:静态动态的问题

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

搜索热度高出峰值169%!TikTok情人节爆品大预测:https://www.goluckyvip.com/news/9233.html
tiktok爆粉干货!完整起号流程! :https://www.goluckyvip.com/news/9234.html
TikTok有何优势?如何更好地做TikTok运营? :https://www.goluckyvip.com/news/9235.html
突发!Shopee或将于1月13日起退出波兰市场:https://www.goluckyvip.com/news/9236.html
芬兰外贸单证有何要求?芬兰清关注意事项等:https://www.goluckyvip.com/news/9237.html
出口缅甸需要注意哪些问题,清关注意事项等:https://www.goluckyvip.com/news/9238.html
专业戴绿帽,自发货好生意,月赚10万+:https://www.kjdsnews.com/a/1836475.html
请问西安及周边5日游怎么安排?:https://www.vstour.cn/a/364173.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流