JAVA中的语法.

JAVA内存图中,堆包括方法区和new出来的对象,方法区里包括1类的代码,2static变量和方法,3常亮池;在static方法中调用非static变量,为什么不可以啊?... JAVA内存图中,堆包括方法区和new出来的对象, 方法区里包括1类的代码,2 static变量和方法, 3常亮池;

在static 方法中调用非static变量,为什么不可以啊?
static从属于类,在类中加载static方法时传递static代码的地址,这时应该先加载类吧, 不管是不是static修饰的变量,类中都有啊.为什么不能引用非static变量呢?

以上只是个人浅薄的理解,求解答.
展开
 我来答
abcwt112
2014-09-14 · TA获得超过281个赞
知道小有建树答主
回答量:224
采纳率:0%
帮助的人:185万
展开全部
这2个问题其实想一想自己举个例子就明白了...
1.
假设static方法中可以调用非static变量.
static从属于类这一点你已经知道.那就是说调用static方法,变量的时候是可以不要类的对象的.只要使用类就可以了.不是static的方法和变量必须用对象去调用.因为这个方法属于特定的对象而不是类. 既然是这样,一个类可能有多个对象,这些对象的非static变量的值是不一样的. 那请问static方法中调用的非static对象的值到底是多少? 你也确定不了吧...所以static方法不能调用非static变量

2.
加载类的时候未必是创建类的对象的时候...既然不是创建对象的时候为什么要使用非static变量?
手机用户57805
2014-09-14 · 超过47用户采纳过TA的回答
知道答主
回答量:112
采纳率:0%
帮助的人:112万
展开全部
数组定义:类型[] xxx; 类型 a[];
如:int[] ary = new int[5]; int ary2[] = new int[7];

数组定义的时候必须指定后面的长度.

数组元素引用:数组[index]; ary[0] ~ ary[ary.lenth-1]
数组下标从0开始,丛长度-1结束
以上回答你满意么?
追问
不满意.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MyLostPrecious
2014-09-14 · TA获得超过200个赞
知道答主
回答量:43
采纳率:0%
帮助的人:37万
展开全部
静态变量在类加载时就已经生成了,而非静态变量要在实例化时,也就是new出来时才生成,所以不能再静态方法中引用非静态变量。
追问
谢谢!回答很好.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式