A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kcufow 中级黑马   /  2016-4-11 16:45  /  846 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请解答,最后能分析一下过程。谢谢!

无标题.png (150.73 KB, 下载次数: 2)

无标题.png

7 个回复

倒序浏览
麦克...韩国
红彬...韩国
回复 使用道具 举报
zhongyuxin1011 发表于 2016-4-11 18:06
麦克...韩国
红彬...韩国

给出具体分析过程 版主会加分的哦
回复 使用道具 举报
麦克...韩国
红杉...韩国
因为静态变量存储在方法区中而非堆中创建的两个对象中,静态变量初始值为“中国”,经过两次赋值先变为“美国”,后变为“韩国’,而最终值为”韩国“;两次调用,变量name分别来自对中的两个对象中,而变量country的值来自相同的方法区中,都是最终值“韩国”。
回复 使用道具 举报 1 0
country与类相关,name与对象相关
回复 使用道具 举报
ameanboy 发表于 2016-4-11 20:51
country与类相关,name与对象相关

具体能分析一下吗?
回复 使用道具 举报
kcufow 发表于 2016-4-12 10:59
具体能分析一下吗?

country与类相关,一个类(不管有多少对象)都指向同一个country; name与对象相关,每个对象有自己的name值
回复 使用道具 举报
麦克...韩国
红杉...韩国

因为country是在方法区中的,是静态的,先于对象存在.
而给country赋值,无论对象是啥,country是公用的.
调用speak()方法,打印的country 是同一个,无论对象是谁.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马