class ListTest
{
int number;
ListTest(int number)
{
this.number=number;
}
public String hop()
{
return "ListTest Number:"+number;
}
public static void main(String[] args)
{
List list=new ArrayList();
for(int i=0;i<5;i++)
{
list.add(new ListTest(i));
}
for(int i=0;i<list.size();i++)
{
ListTest test=(ListTest)list.get(i);
System.out.println(test.hop());
}
}
}如果把变量number改成static int number静态的,那么list中存放的数字都是4,这是为什么,请各位朋友帮忙!
所以它的值就是最后一次修改的值。最后一次修改发生在
for(int i=0;i<5;i++)
{
list.add(new ListTest(i));
}
的最后一次循环中,即list.add(new ListTest(4));所以它会是4.
定义static int number,number属于类也就是属于所有的对象,而不属于单独的某个对象。当number值发生改变的时候,因为number是共享的,所有对象读到的number也就发生改变。
{
list.add(new ListTest(i));
}这里i 最后修改为4 所以 都是4
static 关键字表示的是类的变量或方法,当变量被声明成static时就表示该变量是类变量,类变量和类方法在内存中存储在静态代码区中被所有的对象所共享,只要其中有一个对象改变了它的值,那么其他对象访问时就是修改后的值。