它无法正常工作! 这是代码:
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。 但是在textview中没有看到4号。 textview show number:1
这意味着约束器未正确运行5次。 什么错了..?
答案 0 :(得分:1)
构造函数执行5次,创建了5个CountTest
个实例。
但是,由于instanceCount
是一个实例变量,因此CountTest
类的5个实例中的每一个都具有该变量的不同副本。所有这些都被初始化为0,然后增加到1.
如果您将其设为static
变量,那么您将获得预期的输出。 CountTest
类的所有实例都将更新相同的变量。
更改
private int instanceCount = 0;
到
private static int instanceCount = 0;
答案 1 :(得分:0)
instanceCount
的值为1
,因为它是实例变量,这意味着CountTest
中创建的for loop
类的每个实例都有自己的instanceCount
副本{1}}。当instanceCount
初始化为0
,然后1
中的constructor
增加时,instanceCount
的每个实例的CountTest
将具有值{{} 1}}。
制作1
instanceCount
,以便static
instanceCount
的一份副本
CountTest
约束器应运行4次
目前,自private static int instanceCount = 0;
执行5
次以来,它将执行for loop
次。如果您希望它执行5
次,请将循环条件更改为4
x<4