在Java中,当我们使用for循环并从类的类承包商创建新对象时,例如运行5次:
for(int x = 0; x
在Android中无法正常工作!!!
这是代码:
package com.hamid.counttestapp;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView=(TextView)findViewById(R.id.textview);
textView.setText(Integer.toString(Counter()));
}
public int Counter()
{
CountTest c1 = new CountTest();
for (int x=0; x<5; x++) {
c1 = new CountTest();
}
return c1.getInstanceCount();
}
class CountTest
{
private int instanceCount = 0;
public CountTest()
{
instanceCount++;
}
public int getInstanceCount()
{
return instanceCount;
}
}
}
承包商应运行4次,instanceCount的值应为4。
但是在文本视图中看不到数字4。
textview显示编号:1
这意味着承包商无法正确运行5次。
怎么了..?
最佳答案
构造函数执行5次,并创建5个CountTest
实例。
但是,由于instanceCount
是实例变量,所以CountTest
类的5个实例中的每个实例都有该变量的不同副本。它们都被初始化为0,然后递增为1。
如果将其设置为static
变量,则将获得预期的输出。 CountTest
类的所有实例将更新同一变量。
更改
private int instanceCount = 0;
至
private static int instanceCount = 0;