static关键字的作用?

如题所述

static关键字主要有两种作用:

第一,为特定数据类型或对象分配单一的存贮空间,而与创建对象的个数无关。第二,希望某个方法或属性与类而不是对象关联在一起,也就是说,
在不创建对象的情况下就可以通过类来直接调用方法或使用类的属性。具体而言,static在java中主要有四种使用情况:成员变量、成员方法、代码块及内部类。
(1)static成员变量

虽然java语言中没有全局的概念,但可以通过static关键字来达到全局的效果。java类提供了两种类型的变量:用static关键字修饰的静态变量和没有static关键字修饰的实例变量。静态变量
属于类,在内存中只有一个副本(所有实例都指向同一个内存地址)。只要静态变量所在的类被加载,这个静态类就会被分配空间,因此就可以被使用。对静态变量的引用有两种方式,分别为“类.静态变量”和“对象.静态变量”。

实例变量属于对象,只有对象被创建后,实例变量才会被分配空间,才能被使用,他在内存中存在多个副本,只能用“对象.静态变量”的方式来引用。

静态变量只有一个,被类所拥有,所有的对象都共享这个静态变量,而实例对象与具体对象有关。

(2) static成员方法
与变量类似,java类同时也提供了static方法与非static方法。static方法是类的方法,不需要创建对象就可以被使用,而非static方法是对象的方法,只有对象被创建出来后才可以被使用。

static 方法中不能使用this和super关键字,不能调用非static方法,只能访问所属类的静态成员变量和成员方法,因为当static方法被调用的时候,这个类的对象可能还没有被创建,即使已经被创建,
也无法确定调用哪个对象的方法。同理static方法也不能访问非static类型的变量。

static的一个很重要的的用途的是实现单例模式。单例模式的特点是该类只能有一个实例,为了实现这功能,必须隐藏类的构造方法,即把构造方法声明为private,并提供一个创建对象的方法。由于构造方法被声明为private,外界无法直接创建这个类型对象,只能通过该类提供的方法来获取类的对象
温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-11-19

    全局静态变量

    全局变量前加上关键字static,全局变量就定义成一个全局静态变量.

    静态存储区,在整个程序运行期间一直存在。

    初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);

    作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾

    局部静态变量

    在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。

    内存中的位置:静态存储区

    初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);

    作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后,并没有销毁,而是仍然驻留在内存当中,只不过我们不能再对它进行访问,直到该函数再次被调用,并且值不变;

    静态函数

    在函数返回类型前加static,函数就定义为静态函数。函数的定义和声明在默认情况下都是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。

    函数的实现使用static修饰,那么这个函数只可在本cpp内使用,不会同其他cpp中的同名函数引起冲突;

    warning:不要再头文件中声明static的全局函数,不要在cpp内声明非static的全局函数,如果你要在多个cpp中复用该函数,就把它的声明提到头文件里去,否则cpp内部声明需加上static修饰;

    类的静态成员

    在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。对多个对象来说,静态数据成员只存储一处,供所有对象共用

    类的静态函数

    静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,对静态成员的引用不需要用对象名。

    在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员(这点非常重要)。如果静态成员函数中要引用非静态成员时,可通过对象来引用。从中可看出,调用静态成员函数使用如下格式:<类名>::<静态成员函数名>(<参数表>);

本回答被提问者采纳
第2个回答  2020-11-21
static是什么意思?c语言中static的用法?static关键字的作用是什么?相信很多人都会有这样的疑问,下面我们来总结一下static。
一:static是什么意思

static是一种计算机高级语言,我们经常在c++和java中看到,static经常以关键词和函数的形式出现,并且在其他高级语言中也是会出现static,当然在不同的语言下,作用也是不一样的。

二:static关键字的作用是什么

1.java中

在java中,我们想定义一个类成员,并且使用要独立于其他任何对象,在一般情况下,类成员必须要通过其他类的对象访问,很多时候我们可以不需要引进实例,就能被自己使用,只要在声明前面加上关键字,就可以创建一个成员,在其他类没有创建之前访问。我们可以通过引用静态变量。

static关键字的作用是什么

2.在C语言中

c语言中,static函数被分为两种函数,内部函数和外部函数,其中内部函数就称为静态函数,当一个程序有很多个源文件组成的时候,c语言就能根据其他源文件调用,就不能使用同一个程序去调用,只要我们在函数前面加一个关键字就可以了,如下:

static 函数类型 函数名(函数参数表){……}

static关键字的作用是什么

使用内部函数的好处有很多,针对不同的人编写不同的函数,不需要担心定义的函数和其他的函数名重复。外部函数如果发现没有出现关键词,就表示函数是外部函数。

以上就是static关键字的作用是什么的全部介绍,如果你想了解更多有关Java教程,请关注php中文网。

以上就是static关键字的作用是什么的详细内容,更多请关注php中文网其它相关
第3个回答  2020-11-21
1、修饰函数的局部变量:

特点:有默认值0,只执行一次,运行一开始就开辟了内存,内存放在全局

2、修饰全局函数和全局变量:

特点:只能在本源文件使用

3、修饰类里面的成员变量:

特点:和1差不多,定义多个static y,但只有一个y,不进入类的大小计算,不依赖于类对象的存在而存在(可直接调用,要进行外置声明)

4、修饰类的成员函数:

特点:f():括号里无this指针,只能调用他的本类静态函数和他的静态变量,即是用static修饰过的不依赖于类对象的存在而存在(可不进行外置声明,直接调用)
第4个回答  2020-11-21
1、修饰函数的局部变量
2、修饰全局函数和全局变量
3、修饰类里面的成员变量
4、修饰类的成员函数
相似回答