区分Java和C中的“静态”

区分Java和C中的“静态”,java,c,static,Java,C,Static,我同时学习Java和C语言,在尝试连接这两种语言的一些共同特性时,我有时会感到有点困惑。我试图找出Java和C中静态用法的区别,希望有人能指出我的理解方式是否正确。我的逻辑还有什么可以改进的吗?我想知道在这两种语言中如何区分static的用法吗 所以在C中,当您希望某些变量只初始化一次时,就使用static。我想就这些 例如: int main(void){ for(int i=0;i<=5;i++){ static int x=35; //x is only in

我同时学习Java和C语言,在尝试连接这两种语言的一些共同特性时,我有时会感到有点困惑。我试图找出Java和C中静态用法的区别,希望有人能指出我的理解方式是否正确。我的逻辑还有什么可以改进的吗?我想知道在这两种语言中如何区分static的用法吗


所以在C中,当您希望某些变量只初始化一次时,就使用static。我想就这些

例如:

int main(void){
    for(int i=0;i<=5;i++){
        static int x=35; //x is only initialized once
        x++;
        printf("%d ",x); //"36 37 38 39 40 41 "will be printed out 
    }
    x++; //This is not allowed as x is not a global variable.
    return 0;
}
但是在Java中,当您希望使用保存变量或方法的类的名称(而不是某些对象)来访问或调用某些变量或方法时,可以使用static。我想通常,如果不总是?您是否在驱动程序类中使用ClassName.SomeVariables或ClassName.SomeMethods

因此,C和Java中静态的用法是否有很大的不同?还有一个相关的问题:如何通过Java的特性实现C中的静态功能

提前谢谢^_^

C中的静态变量

静态变量有一个属性,即使在超出其作用域后也能保持其值!因此,静态变量在其以前的作用域中保留其以前的值,并且不会在新的作用域中再次初始化

程序运行时,静态变量保留在内存中。当声明变量的函数调用结束时,普通变量或自动变量将被销毁

例如,它用于跟踪函数被调用的次数

例如,下面的程序打印“1 2”

#include<stdio.h>
int fun()
{
  static int count = 0;
  count++;
  return count;
}

int main()
{
  printf("%d ", fun());
  printf("%d ", fun());
  return 0;
}
现在我们可以在另一个类中访问这个类

public class Application {

    public static void main(String[] args) {
        System.out.println(Stuff.name);
    }

}
您可以看到,我们可以愉快地访问Stuff类中的“name”实例变量,而不必实际创建Stuff类型的对象

另一个用于跟踪现有类的对象数量的示例

class VariableDemo
{
   static int count=0;
   public void increment()
   {
       count++;
   }
   public static void main(String args[])
   {
       VariableDemo obj1=new VariableDemo();
       VariableDemo obj2=new VariableDemo();
       obj1.increment();
       obj2.increment();
       System.out.println("Obj1: count is="+obj1.count);
       System.out.println("Obj2: count is="+obj2.count);
   }
}
输出:

Obj1: count is=2
Obj2: count is=2

词在不同的语言中有不同的含义,仅此而已。例如,fart在荷兰语中的意思是速度。如果你认为你可以同时学习语言而不感到困惑,那你就是在自找麻烦。@Bathsheba-想象一下外交事件:所以在C中,当你希望某些变量只初始化一次时,就使用static。我想就这些了不,还不止这些。在C.,静态的东西更多,比较java和C++,在静态工作几乎相同的地方,可能更有意义。
class VariableDemo
{
   static int count=0;
   public void increment()
   {
       count++;
   }
   public static void main(String args[])
   {
       VariableDemo obj1=new VariableDemo();
       VariableDemo obj2=new VariableDemo();
       obj1.increment();
       obj2.increment();
       System.out.println("Obj1: count is="+obj1.count);
       System.out.println("Obj2: count is="+obj2.count);
   }
}
Obj1: count is=2
Obj2: count is=2