这篇文章将为大家详细讲解有关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--;
}
}
关于C++和Java中static关键字有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。