JAVA问题:看下面的代码:结果是什么??到底为什么是这样的结果???
publicclassStaticFieldTest{publicstaticvoidmain(String[]args){Foo1f1=newFoo1();Foo1f2...
public class StaticFieldTest {
public static void main(String[] args) {
Foo1 f1 = new Foo1();
Foo1 f2 = new Foo1();
System.out.println(f1.id + "," + f2.id + "," + Foo1.index);
}
}
class Foo1 {
static int index = 1;
int id;
public Foo1() {
this.id = index++;
}
} 展开
public static void main(String[] args) {
Foo1 f1 = new Foo1();
Foo1 f2 = new Foo1();
System.out.println(f1.id + "," + f2.id + "," + Foo1.index);
}
}
class Foo1 {
static int index = 1;
int id;
public Foo1() {
this.id = index++;
}
} 展开
5个回答
展开全部
f1.id = 1; f2.id= 1; Foo1.index = 3;
构造函数在类实例化的时候会调用一次,另外整形变量 没有赋值的情况下,系统默认会赋值为0。在类实例化一次的时候,id由index自加了1 所以,f1,f2的id都是1。
index为三是因为前两次实例化时,index是全局静态变量。它会一直存在并因为类的实例化而增长。
构造函数在类实例化的时候会调用一次,另外整形变量 没有赋值的情况下,系统默认会赋值为0。在类实例化一次的时候,id由index自加了1 所以,f1,f2的id都是1。
index为三是因为前两次实例化时,index是全局静态变量。它会一直存在并因为类的实例化而增长。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
结果是:1,2,3
static 的 index一旦分配内存,其地址就不变了
每 new Foo1()一次 先是id=index,再是index=index+1
static 的 index一旦分配内存,其地址就不变了
每 new Foo1()一次 先是id=index,再是index=index+1
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1,2,3啊。这么简单你好好看看就明白了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议楼主好好看看子类与父类的继承方法逻辑
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询