c++和 Java 中静态关键字的比较
在 C++和 Java 中,Static 关键字的用途几乎相同。尽管有一些不同。这篇文章涵盖了 C++和 Java 中静态关键字的异同。
静态关键字 C++和 Java 的相似之处:
- 静态数据成员可以用两种语言定义。
- 静态成员函数可以用两种语言定义。
- 静态成员的简单访问是可能的,不需要创建一些对象。
c++与 Java 的区别对于静态关键字:
| c++ | Java | | --- | --- | | C++ does not support static blocks. | Java supports static blocks (also called static clauses). It is used for static initialization of classes. | | Static local variables can be declared. | Static local variables are not supported. |以上几点讨论如下:
1。静态数据成员:和 C++一样,Java 中的静态数据成员是类成员,在所有对象之间共享。例如,在下面的 Java 程序中,静态变量 count 用于计算创建的对象数量。
Java 语言(一种计算机语言,尤用于创建网站)
class Test {
static int count = 0;
Test() { count++; }
public static void main(String arr[])
{
Test t1 = new Test();
Test t2 = new Test();
System.out.println("Total " + count
+ " objects created");
}
}
Output
Total 2 objects created
2。静态成员方法:在 C++和 Java 中,可以定义静态成员函数。声明为静态的方法是类成员,并且有以下限制:
A) 他们只能调用其他静态方法。例如,以下程序在编译中失败。fun()是非静态的,它在静态 main()中被调用。
Java 语言(一种计算机语言,尤用于创建网站)
class Main {
public static void main(String args[])
{
System.out.println(fun());
}
int fun() { return 20; }
}
B) 他们必须只访问静态数据。
C) 他们无法访问 这个 或者 超级 。例如,以下程序在编译中失败。
Java 语言(一种计算机语言,尤用于创建网站)
class Base {
static int x = 0;
}
class Derived extends Base {
public static void fun()
{
// Compiler Error: non-static variable
// cannot be referenced from a static context
System.out.println(super.x);
}
}
D) 像 C++一样,静态数据成员和静态方法可以在不创建对象的情况下访问。可以使用类名访问它们。例如,在下面的程序中,静态数据成员计数和静态方法 fun()是在没有任何对象的情况下访问的。
Java 语言(一种计算机语言,尤用于创建网站)
class Test {
static int count = 0;
public static void fun()
{
System.out.println("Static fun() called");
}
}
class Main {
public static void main(String arr[])
{
System.out.println("Test.count = " + Test.count);
Test.fun();
}
}
Output
Test.count = 0
Static fun() called
3。静态块:与 C++不同,Java 支持一种特殊的块,称为静态块(也称为 Static 子句),可用于类的静态初始化。静态块中的这段代码只执行一次。详见 Java 中的静态块。
4。静态局部变量:与 Java 不同,C++支持静态局部变量。例如,下面的 Java 程序在编译中失败。
Java 语言(一种计算机语言,尤用于创建网站)
class Test {
public static void main(String args[])
{
System.out.println(fun());
}
static int fun()
{
// Compiler Error: Static local
// variables are not allowed
static int x = 10;
return x--;
}
}
如果你发现任何不正确的地方,或者你想分享更多关于上面讨论的话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处