static关键字的作用?
发布网友
发布时间:2022-04-20 02:59
我来回答
共7个回答
懂视网
时间:2022-04-20 07:20
static的作用如下:
1、函数体内static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;
2、在模块内的static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;
3、在模块内的static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;
4、在类中的static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;
5、在类中的static 成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static 成员变量。
热心网友
时间:2022-04-20 04:28
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,外界无法直接创建这个类型对象,只能通过该类提供的方法来获取类的对象
热心网友
时间:2022-04-20 05:46
全局静态变量
在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.
静态存储区,在整个程序运行期间一直存在。
初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);
作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。
局部静态变量
在局部变量之前加上关键字static,局部变量就成为一个局部静态变量。
内存中的位置:静态存储区
初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);
作用域:作用域仍为局部作用域,当定义它的函数或者语句块结束的时候,作用域结束。但是当局部静态变量离开作用域后,并没有销毁,而是仍然驻留在内存当中,只不过我们不能再对它进行访问,直到该函数再次被调用,并且值不变;
静态函数
在函数返回类型前加static,函数就定义为静态函数。函数的定义和声明在默认情况下都是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。
函数的实现使用static修饰,那么这个函数只可在本cpp内使用,不会同其他cpp中的同名函数引起冲突;
warning:不要再头文件中声明static的全局函数,不要在cpp内声明非static的全局函数,如果你要在多个cpp中复用该函数,就把它的声明提到头文件里去,否则cpp内部声明需加上static修饰;
类的静态成员
在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象*享的成员,而不是某个对象的成员。对多个对象来说,静态数据成员只存储一处,供所有对象共用
类的静态函数
静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,对静态成员的引用不需要用对象名。
在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员(这点非常重要)。如果静态成员函数中要引用非静态成员时,可通过对象来引用。从中可看出,调用静态成员函数使用如下格式:<类名>::<静态成员函数名>(<参数表>);
热心网友
时间:2022-04-20 07: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中文网其它相关
热心网友
时间:2022-04-20 09:12
1、修饰函数的局部变量:
特点:有默认值0,只执行一次,运行一开始就开辟了内存,内存放在全局
2、修饰全局函数和全局变量:
特点:只能在本源文件使用
3、修饰类里面的成员变量:
特点:和1差不多,定义多个static y,但只有一个y,不进入类的大小计算,不依赖于类对象的存在而存在(可直接调用,要进行外置声明)
4、修饰类的成员函数:
特点:f():括号里无this指针,只能调用他的本类静态函数和他的静态变量,即是用static修饰过的不依赖于类对象的存在而存在(可不进行外置声明,直接调用)
热心网友
时间:2022-04-20 11:20
1、修饰函数的局部变量
2、修饰全局函数和全局变量
3、修饰类里面的成员变量
4、修饰类的成员函数
热心网友
时间:2022-04-20 13:45
static关键字的作用?Copyright © 1999-2020, CSDN.NET, All Rights Reserved
登录
static关键字的用法与作用 转载
2018-08-29 21:17:44
4点赞
从放弃到开始
码龄5年
关注
在java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构。下面我们先来了解一下static关键字及其用法。
总结(个人觉得概括的很不错的,所以转载了。)
static是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法:
用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享;
用来修饰成员方法,将其变为类方法,可以直接使用“类名.方法名”的方式调用,常用于工具类;
静态块用法,将多个类成员放在一起初始化,使得程序更加规整,其中理解对象的初始化过程非常关键;
静态导包用法,将类的方法直接导入到当前类中,从而直接使用“方法名”即可调用类方法,更加方便。
static关键字
1.修饰成员变量
在我们平时的使用当中,static最常用的功能就是修饰类的属性和方法,让他们成为类的成员属性和方法,我们通常将用static修饰的成员称为类成员或者静态成员,这句话挺起来都点奇怪,其实这是相对于对象的属性和方法来说的。请看下面的例子:(未避免程序太过臃肿,暂时不管访问控制)