
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--;    } }以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注小兔网相关教程栏目!!!
以上就是C++和Java中static关键字的简单比较的知识。速戳>>知识兔学习精品课!
