C++和Java中static关键字的简单比较

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

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++教程》

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

以上就是C++和Java中static关键字的简单比较的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: static
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:Junit借助Groboutils Core进行并发测试的实现方法(详细步骤)

相关资讯