静态变量超出范围,错误:找不到符号

时间:2015-08-10 19:35:27

标签: java static scope

错误是:

  

无法找到符号System.out.println("value of count" + count);

符号:

  

变量计数

位置:

  

类同步

我声明count变量static所以这并不意味着每个班级都可以访问它吗?

class a extends Thread 

{

public static int count=0;

public void run()

 {

   for(int i=1;i<=100;i++){

   count++;
    }
  }
}

class b extends Thread {

public void run(){

  for(int i=1;i<=100;i++){

  count++;
  }
 }
}

class synchronize {

public static void main(String args[]) {

  a obj =new a();

  b obj1=new b();

  obj.start();

  obj1.start();

  System.out.println("value of count "+count) ;

 }
}

3 个答案:

答案 0 :(得分:3)

count变量被声明为a类的成员。

所以,如果你改变:

System.out.println("value of count "+count);

要:

System.out.println("value of count " + a.count);

为了您作为count课程的成员访问a变量,您的synchornize课程应该能够看到&#39; count变量。

此外,您可能还想使用课程a.count内的b

class b extends Thread {

    public void run(){

      for(int i=1;i<=100;i++){

          a.count++;
       }
    }
}

答案 1 :(得分:2)

静态变量对于类的所有实例都有一个值。

您必须按类名

访问静态变量

而不是

System.out.println("value of count "+count) ;

使用此

System.out.println("value of count "+a.count) ;

答案 2 :(得分:2)

由于它是公开的和静态的,因此您可以从代码中的任何位置访问count类中的a变量。

但是,您无法仅使用变量count来访问它。

您的其他课程不了解任何count变量,但他们知道您的a课程。因此,您可以使用a.count从任何其他类中访问count类中的a变量。