关于一个静态变量的问题

dyy830606 2008-03-31 07:35:30
我在父类里边定义一个变量,在子类的main函数中调用,提示非静太变量不能在静态 的变量中使用,难道非要将父类中的变量定义为静太的才能在子类的main函数中使用么.能不能具体的分析一下内存,说明一下为什么!
...全文
127 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
nihuajie05 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java2000_net 的回复:]
那是因为你的main是static,当然只能直接访问static的变量啦!
[/Quote]
奋斗并快乐着 2008-04-02
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liyuzhu_1984 的回复:]
static声明的变量存放在静态存储区中,相当于全局变量 也就是说只要有一个函数对它进行了修改 其他的函数得到的是这个变量的新值

由于它分配在静态存储区,所以他也只能被静态函数调用
[/Quote]
===>有点误导
dyy830606 2008-04-01
  • 打赏
  • 举报
回复
hehe,不错
badonly 2008-03-31
  • 打赏
  • 举报
回复

shibenjie 说的很清楚,静态变量和静态方法是在第一次被调用加载到内存的
非静态变量是每次实例化都要加载到内存!相对静态变量和方法来说,它是不确定的!

shibenjie 2008-03-31
  • 打赏
  • 举报
回复

原因是static修饰的不论是变量还是方法,都是在类没有实例化时前就被JVM加载了,
而你的变量如果没有static修饰的话,只有在类实例化后才可以访问到,
所以你在static的方法里访问普通变量是就会出现这种异常了
aking21alinjuju 2008-03-31
  • 打赏
  • 举报
回复
main定义成静态方法只能调用静态数据或其他的静态方法,记住这个原则就好了
fy_kenny 2008-03-31
  • 打赏
  • 举报
回复
static特性就是程序一加载就实例的。你用一个nonstatic的变量在static中是不能确定变量值的。所以不能在static的main()方法中使用nonstatic的变量。建议看看《java编程思想》或其他java基础书籍
shili150 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 liyuzhu_1984 的回复:]
static声明的变量存放在静态存储区中,相当于全局变量 也就是说只要有一个函数对它进行了修改 其他的函数得到的是这个变量的新值

由于它分配在静态存储区,所以他也只能被静态函数调用
[/Quote]


只记住一句话好了:静态只能调用静态的数据或是方法
liyuzhu_1984 2008-03-31
  • 打赏
  • 举报
回复
static声明的变量存放在静态存储区中,相当于全局变量 也就是说只要有一个函数对它进行了修改 其他的函数得到的是这个变量的新值

由于它分配在静态存储区,所以他也只能被静态函数调用
zhuhuazha 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java2000_net 的回复:]
那是因为你的main是static,当然只能直接访问static的变量啦!
[/Quote]
zzkk_1980 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 soief 的回复:]
引用 1 楼 java2000_net 的回复:
那是因为你的main是static,当然只能直接访问static的变量啦!
[/Quote]
Gump09 2008-03-31
  • 打赏
  • 举报
回复
怎么有两个一样的帖子?
soief 2008-03-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 java2000_net 的回复:]
那是因为你的main是static,当然只能直接访问static的变量啦!
[/Quote]
chenhongxin 2008-03-31
  • 打赏
  • 举报
回复
楼上说的对,你看看static 方法,只能访问非本方法之外的静态变量,或是该方法所属类的实例的变量....
老紫竹 2008-03-31
  • 打赏
  • 举报
回复
那是因为你的main是static,当然只能直接访问static的变量啦!
hendy 2008-03-31
  • 打赏
  • 举报
回复
因为子类就是静态的,否则,没初始化父类就不能初始化子类了
胡矣 2008-03-31
  • 打赏
  • 举报
回复
非static的变量是在实例化对象的时候才被JVM加载的.
想要使用该变量要先实例化该对象.

62,628

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧