小兔网

Static关键字在C++和Java中几乎用于相同的目的,但仍有些许不同之处。下面本篇文章就来带大家了解一下在C ++和Java中static关键字的异同点,希望对大家有所帮助。

C++和Java中static关键字的简单比较-java教程

C++和Java中static关键字的相同点

1、静态数据成员:

在C++和Java中静态数据成员都是类成员,并在所有对象之间共享。例如,在下面的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("共创建了" + count + " 个对象");             } }

输出:

共创建了2个对象

2、静态成员方法

在C++和Java中声明为static的方法是类成员,并具有以下限制:

1)、它们只能调用其他静态方法。例如,以下程序中fun()是非静态的,但它在静态main()中调用,所以会编译失败。

class Main {     public static void main(String args[]) {            System.out.println(fun());     }      int fun() {         return 20;     }  }

2)、必须只访问静态数据。

3)、无法访问this或super。例如,以下程序在编译时失败。

class Base {     static int x = 0;        }      class Derived extends Base  {    public static void fun() {        System.out.println(super.x); // 编译器错误:不能从静态上下文引用非静态变量   }    }

说明:

C++和Java都可以在不创建对象的情况下访问静态数据成员和静态方法。可以使用类名访问它们。例如,在以下程序中,无需任何对象即可访问静态数据成员计数和静态方法fun()。

class Test {     static int count = 0;     public static void fun() {         System.out.println("调用了静态方法fun()");      }     }           class Main {     public static void main(String arr[]) {        System.out.println("Test.count = " + Test.count);                Test.fun();     } }

C++和Java中static关键字的不同点

1、静态块

与C ++不同,Java支持一个特殊的块,称为静态块(也称为静态子句),可用于类的静态初始化;静态块内的此代码仅执行一次。

2、静态局部变量

与C ++不同,Java不支持静态局部变量。例如,以下Java程序在编译时失败。

class Test {    public static void main(String args[]) {       System.out.println(fun());    }     static int fun()  {      static int x= 10; //编译器错误:不允许静态局部变量     return x--;    } }

相关视频教程推荐:《Java教程》、《C++教程

以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注小兔网相关教程栏目!!!

以上就是C++和Java中static关键字的简单比较的知识。速戳>>知识兔学习精品课!