前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++和Java中static关键字的比较

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

作者头像
鲸落c
发布2022-11-14 16:43:56
6000
发布2022-11-14 16:43:56
举报
文章被收录于专栏:鲸落学习笔记鲸落学习笔记

theme: channing-cyan highlight: a11y-dark


「这是我参与11月更文挑战的第19天,活动详情查看:2021最后一次更文挑战

在 C++ 和 Java 中,Static 关键字的用途几乎相同。虽然有一些差异。这篇文章涵盖了 C++ 和 Java 中 static 关键字的异同。 

静态关键字的 C++ 和 Java 之间的相似之处:

  • 静态数据成员可以用两种语言定义。
  • 静态成员函数可以用两种语言定义。
  • 可以轻松访问静态成员,而无需创建某些对象。

静态关键字的 C++ 和 Java 之间的差异:

C++ 不支持静态块。

Java 支持静态块(也称为静态子句)。它用于类的静态初始化。

可以声明静态局部变量。

不支持静态局部变量。

下面详细讨论以上几点:

1.静态数据成员: 与C++一样,Java中的静态数据成员是类成员,在所有对象之间共享。例如,在下面的Java程序中,静态变量count用于统计创建的对象数量。

代码语言:javascript
复制
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");
    }
}

输出

代码语言:javascript
复制
Total 2 objects created

2.静态成员方法: 在C++和Java中,可以定义静态成员函数。声明为静态的方法是类成员,并具有以下限制:

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

代码语言:javascript
复制
class Main {
    public static void main(String args[]){
        System.out.println(fun());
    }
    int fun() { return 20; }
}

B) 他们只能访问静态数据。

C) 他们不能访问thissuper。例如,以下程序编译失败。

代码语言:javascript
复制
class Base {
    static int x = 0;
}

class Derived extends Base {
    public static void fun(){
        System.out.println(super.x);
    }
}

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

代码语言:javascript
复制
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();
    }
}

输出

代码语言:javascript
复制
Test.count = 0
Static fun() called

3. 静态块: 与 C++ 不同,Java 支持一个特殊的块,称为静态块(也称为静态子句),可用于类的静态初始化。静态块中的这段代码只执行一次。

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

代码语言:javascript
复制
class Test {
    public static void main(String args[]){
        System.out.println(fun());
    }
    static int fun(){
        static int x = 10;
        return x--;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档