在C ++或Java中,我们可以获得static关键字。它们基本相同,但是这两种语言之间存在一些基本差异。让我们看看C ++中的static和Java中的static之间的区别。
静态数据成员在Java和C ++中基本相同。静态数据成员是类的属性,并且与所有对象共享。
public class Test { static int ob_count = 0; Test() { ob_count++; } public static void main(String[] args) { Test object1 = new Test(); Test object2 = new Test(); System.out.println("The number of created objects: " + ob_count); } }
输出结果
The number of created objects: 2
#include<iostream> using namespace std; class Test { public: static int ob_count; Test() { ob_count++; } }; int Test::ob_count = 0; int main() { Test object1, object2; cout << "The number of created objects: " << Test::ob_count; }
输出结果
The number of created objects: 2
静态成员函数-在C ++和Java中,我们可以创建静态成员函数。这些也是该类的成员。也有一些限制。
静态方法只能调用其他一些静态方法。
他们只能访问静态成员变量
他们无法访问“ this”或“ super”(仅适用于Java)
在C ++和Java中,无需创建某些对象即可访问静态成员。
//This is present in the different file named MyClass.java public class MyClass { static int x = 10; public static void myFunction() { System.out.println("The static data from static member: " + x); } } //这是另一个名为Test.Java的文件 public class Test { public static void main(String[] args) { MyClass.myFunction(); } }
输出结果
The static data from static member: 10
#include<iostream> using namespace std; class MyClass { public: static int x; static void myFunction(){ cout << "The static data from static member: " << x; } }; int MyClass::x = 10; int main() { MyClass::myFunction(); }
输出结果
The static data from static member: 10
静态块:在Java中,我们可以找到静态块。这也称为静态子句。这些用于类的静态初始化。写入静态块内部的代码将仅执行一次。这在C ++中不存在
在C ++中,我们可以声明静态局部变量,但是在Java中,不支持静态局部变量。