java - 什么是静态变量

标签 java static

我正在寻找静态变量的含义 我找到这个网站

http://java-questions.com/keywords-interview-questions.html

及其关于静态变量的声明 当我使用他的例子时,我发现不同的结果

静态关键字可以与变量和方法一起使用,但不能与类一起使用。任何声明为静态的内容都与类相关,而不是对象。

静态变量:一个类的多个对象共享静态变量的同一个实例。考虑示例:

public class Counter{
 private static int count=0;
 private int nonStaticcount=0;
 public void incrementCounter(){
   count++;
   nonStaticcount++;
 }
 public int getCount(){
  return count;
 }
 public int getNonStaticcount(){
  return nonStaticcount;
 }

 public static void main(String args[]){

   Counter countObj1 = new Counter(); 
   Counter countObj2 = new Counter();
   countObj1.incrementCounter();
   countObj1.incrementCounter();
   System.out.println("Static count for Obj1: "+countObj1.getCount());
   System.out.println("NonStatic count for Obj1: "+countObj1.getNonStaticcount());
   System.out.println("Static count for Obj2: "+countObj2.getCount())
   System.out.println("NonStatic count for Obj2: "+countObj2.getNonStaticcount())
 }

输出

Static count for Obj1: 2
NonStatic count for Obj1: 1
Static count for Obj2: 2
NonStatic count for Obj2 :1

当我使用这个示例时,我得到了

 Static count for Obj1: 2  
    NonStatic count for Obj1: 2 // instead of 1
    Static count for Obj2: 2
    NonStatic count for Obj2 :0 // instead of 1

谁能告诉我静态变量的含义和示例声明我如何在我的方法中使用它

谢谢

最佳答案

您得到错误的结果,因为您将 countObj1 递增两次:

Counter countObj1 = new Counter(); 
Counter countObj2 = new Counter();
countObj1.incrementCounter();
countObj1.incrementCounter();
//     !!!

将其替换为:

Counter countObj1 = new Counter(); 
Counter countObj2 = new Counter();
countObj1.incrementCounter();
countObj2.incrementCounter();

现在,您得到了正确的结果:

Static count for Obj1: 2    //Counter.count
NonStatic count for Obj1: 1 //obj1.nonStaticcount
Static count for Obj2: 2    //Counter.count (the same as in the first line)
NonStatic count for Obj2 :1 //obj2.nonStaticcount

关于java - 什么是静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28744689/

相关文章:

java - 无法理解为什么我收到空指针错误

java - 对于 Java,是否可以接受使用无界通配符类型作为方法的参数,然后检查并将其转换为参数化类型?

java - 谷歌应用引擎 JAVA : how to embed html in mail being sent while using java mail api on google app engine?

c++ - 如何定义指向文件流的静态指针?

c++ - 由 lambda 初始化的函数局部静态函数对象,线程安全与否?

java - 如何在spring boot中实现带有延迟时间的rabbitmq公共(public)消息

java - 如何在 java 中使用 spark 2.0.0 预览版

class - 是否可以在 Raku 中访问类之外的静态方法和属性?

Django - 服务和管理静态内容的权限

java - 如何在内部静态类中使用 Intent 启动 Activity ?