黑马程序员技术交流社区

标题: 还有好多不会,代码写了隔天就忘 [打印本页]

作者: 13885045482    时间: 2016-9-7 19:34
标题: 还有好多不会,代码写了隔天就忘
还有两三天考试了,不知道怎么办才好,求分析这个题目:Demo {
public static void main(String[] args) {
Person p1 = new Person();   
p1.name = “麦克”;      
p1.country = "美国";      
Person p2 = new Person();
p2.name = "红杉";      
p2.country = "韩国";   
p1.speak();
p2.speak();
}
}
class Person {
String name;                  
static String country  =  中国;                  
public void speak() {           
System.out.println(name + "..." + country);
}
}
A、红杉…中国    麦克…中国
B、红杉…null        麦克…null
C、麦克…美国    红杉…中国
D、麦克…韩国    红杉…韩国



作者: choseisstart    时间: 2016-9-7 19:39
执行以下代码,你就找到答案了!
作者: yigezhifu    时间: 2016-9-7 22:15
country是静态变量,也是全局变量,在Class类加载的时候就赋初值“中国”,p1.country全局变量赋值成“美国”,当你p2.country赋值时,全局变量成”韩国“,前面的p1.country也变为”韩国“了,所以结果为:”麦克“...“韩国”,”红杉“,”韩国“,选D
作者: &天马星空ぁ    时间: 2016-9-7 22:49
yigezhifu 发表于 2016-9-7 22:15
country是静态变量,也是全局变量,在Class类加载的时候就赋初值“中国”,p1.country全局变量赋值成“美国 ...

楼上说的对,country是静态变量,不管是哪个对象赋予其值时,都会覆盖原有的初始值,覆盖的值成为静态变量的值,所以输出值时总是输出  输出前最后赋予的值




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2