关于static的一些疑惑

七彩乱码 七彩乱码 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
今天老师上课讲的关于static的一些问题,还有些不懂,故来请教各位。
首先,老师举了个例子:
class Duck{
private int size;
public static void main(String[] args){
System.out.println("Size is"+getSize());
}
public int getSize(){
return size;
}
}
好了,老师说不能在静态方法中调用非静态成员变量,还说,成员变量是在堆中产生,由于没有new 一个实例变量,JVM找不到size到底是哪个…………开头我相信了。。
后面老师又讲到静态变量存储在静态存储区。我就在想,是不是调用静态方法时,编译器或者JVM只在静态存储区上找变量,所以才是上面的例子不能通过呢?
然后,我就有了如下举例(自己想的):
class Duck{
private int size;
public int getSize(){
return size;
}
}
class DuckTest{
Duck d=new Duck();
public static void main(String[] args){
System.out.println("Size is"+d.getSize());
}
}
这又有问题了,eclipse又报错了,d 要声明为static 。这时我已经new了一个对象d,JVM应该能找到是d的size了吧??可是为什么还是有错呢???是我哪里想错了??还是真的是像我说的一样,调用静态方法时,编译器或者JVM只在静态存储区上找变量,找不到静态变量所以才会报错呢??
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
七彩乱码
Java SE 62,620 成员 307,251 内容