java 为什么非静态类是 对象名.方法(),而静态类是 类名.方法(),求本质或者原理机制

 我来答
wang7904112
2013-01-04 · 超过47用户采纳过TA的回答
知道小有建树答主
回答量:120
采纳率:84%
帮助的人:70.9万
展开全部
java的静态变量也叫做类变量,它开始于类的创建,结束于类的消亡。非静态变量叫做实例变量,它开始于类的实例的创建,结束语类的实例的消亡。
java类在加载时,程序首先会把该类的静态变量加载进内存中,也就是在堆空间中开辟一个区域专门存放。以后不管你new多少个类的对象,该静态变量永远都是在那里的。也就是说,静态变量在类的初始化一次后,系统就不会为该变量开辟新的内存空间。这个静态变量属于这个类,因此用类名.属性或方法。
而每new一个类的对象,系统就会重新在 堆内存中开辟一个新空间来存放该类的实例对象,并且栈中也会有一个新的引用变量去指向它。而非静态的属性或方法也在这个时候才被创建。这时的非静态属性或方法是属于这个对象的,而不是属于这个类。因此用对象名.属性或方法。
aoisora_blue
2013-01-04 · TA获得超过412个赞
知道小有建树答主
回答量:583
采纳率:0%
帮助的人:365万
展开全部
方法如果
是静态的那么调用的时候可以用对象名.方法(),或者类名.方法()
不是静态的,那么必须用对象名.方法(),因为只有对象存在了,方法才存在。静态方法是所有类实例共享的。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
846564997
2013-01-04 · TA获得超过661个赞
知道小有建树答主
回答量:366
采纳率:0%
帮助的人:113万
展开全部
这就得说到内存,非静态类是引用型,将会生成在堆内存中,而静态类由于加了static关键字,这就会使JVM在初始化时,先初始化静态内容,然后将其放在内存的静态块中,因为静态类在JVM已经初始化,所以直接类名.方法名就可以拿到,而非静态用的时候还没有被初始化,所以需要自己先初始化,完成后再方法名才可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
双丁洋尚15
2013-01-04 · TA获得超过254个赞
知道小有建树答主
回答量:576
采纳率:0%
帮助的人:95.3万
展开全部
呵呵!描述的话有点多。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
卯彦琦9373
2013-01-07 · TA获得超过218个赞
知道答主
回答量:312
采纳率:0%
帮助的人:73.9万
展开全部
静态方法是所有类实例共享的。 这句话很好。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式