您当前的位置:首页 > 养生 > 内容

static怎么读(static关键字的作用是什么)

本文目录

  • static关键字的作用是什么
  • static关键字知多少
  • ) static
  • static和const的区别
  • static用英语怎么读
  • static怎么读
  • static静态是什么概念
  • java中static是什么意思,该怎么用
  • static与const的区别又有什么联系

static关键字的作用是什么

static作用:

1、修饰函数的局部变量:

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

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

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

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

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

4、修饰类的成员函数:

特点:f():括号里无this指针,只能调用他的本类静态函数和他的静态变量,即是用static修饰过的不依赖于类对象的存在而存在(可不进行外置声明,直接调用)

扩展资料:

static的主要使用情况:

1、static方法

static方法一般称作静态方法,由于静态方法不依赖于任何对象就可以进行访问,因此对于静态方法来说,是没有this的,因为它不依附于任何对象,既然都没有对象,就谈不上this了。并且由于这个特性,在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

但是要注意的是,虽然在静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员方法/变量的。

2、static变量

static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。

而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。static成员变量的初始化顺序按照定义的顺序进行初始化。

3、static代码块

static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。

在类初次被加载的时候,会按照static块的顺序来执行每个static块,并且只会执行一次。为什么说static块可以用来优化程序性能,是因为它的特性:只会在类加载的时候执行一次。

参考资料:百度百科--static

static关键字知多少

注意:static 的变量是在类装载的时候就会被初始化。也就是说,只要类被装载,不管你是否使用了这个static 变量,它都会被初始化。小结:类变量(class variables)用关键字 static 修饰,在类加载的时候,分配类变量的内存,以后再生成类的实例对象时,将共享这块内存(类变量),任何一个对象对类变量的修改,都会影响其它对象。外部有两种访问方式:通过对象来访问或通过类名来访问。静态方法静态方法是一种不能向对象实施操作的方法。例如,Math 类的 pow() 方法就是一个静态方法,语法为 Math.pow(x, a),用来计算 x 的 a 次幂,在使用时无需创建任何 Math 对象。因为静态方法不能操作对象,所以不能在静态方法中访问实例变量,只能访问自身类的静态变量。以下情形可以使用静态方法:一个方法不需要访问对象状态,其所需参数都是通过显式参数提供(例如 Math.pow())。一个方法只需要访问类的静态变量。读者肯定注意到,main() 也是一个静态方法,不对任何对象进行操作。实际上,在程序启动时还没有任何对象,main() 方法是程序的入口,将被执行并创建程序所需的对象。关于静态变量和静态方法的总结:一个类的静态方法只能访问静态变量;一个类的静态方法不能够直接调用非静态方法;如访问控制权限允许,静态变量和静态方法也可以通过对象来访问,但是不被推荐;静态方法中不存在当前对象,因而不能使用 this,当然也不能使用 super;静态方法不能被非静态方法覆盖;构造方法不允许声明为 static 的;局部变量不能使用static修饰。静态方法举例:[java] view plain copypackage com.xuli; import static java.lang.System.out; //静态导入 out方法 。。。System.* 导入System类中所有静态方法 public class Strim { public static String st =“www“; public String s =“fff“; /** * 静态块,只有类第一次被加载时执行, 该执行先于构造方法, 一般用来初始化静态变量 * @param args */ static { st = “ttt“; out.println(“This is a static block.“); out.println(st); } public String getS(){ return this.s; } public static void main(String args) { String str = “ d dd “; out.println(str.trim().length()); //静态导入 不需要前面再加类名前缀 Strim sm = new Strim(); out.println(sm.getS()); Strim sm1 = new Strim(); out.println(sm1.getS()); //System.out.println(str.indexOf(null)); //java.lang.NullPointerException } }

) static

对于C/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.static const 应该就是上面两者的合集.下面分别说明:全局:const,只读的全局变量,其值不可修改.static,规定此全局变量只在当前模块(文件)中可见.static const,既是只读的,又是只在当前模块中可见的.文件:文件指针可当作一个变量来看,与上面所说类似.函数:const,返回只读变量的函数.static,规定此函数只在当前模块可见.类:const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.

static和const的区别

对于C/C++语言来讲,const就是只读的意思,只在声明中使用;static一般有2个作用,规定作用域和存储方式.对于局部变量,static规定其为静态存储方式,每次调用的初始值为上一次调用的值,调用结束后存储空间不释放;对于全局变量,如果以文件划分作用域的话,此变量只在当前文件可见;对于static函数也是在当前模块内函数可见.static const 应该就是上面两者的合集.下面分别说明:全局:const,只读的全局变量,其值不可修改.static,规定此全局变量只在当前模块(文件)中可见.static const,既是只读的,又是只在当前模块中可见的.文件:文件指针可当作一个变量来看,与上面所说类似.函数:const,返回只读变量的函数.static,规定此函数只在当前模块可见.类:const,一般不修饰类,(在VC6.0中试了一下,修饰类没啥作用)static,C++中似乎没有静态类这个说法,一般还是拿类当特殊的变量来看.C#中有静态类的详细说明,且用法与普通类大不相同.

static用英语怎么读

/ˈstætik/重音在第一个音节,t在s后面要浊化,读d实际读音类似/ˈsdætik/静态的,静止的,没什么比较特殊的呀。

static怎么读

static 报错英 [’stætɪk] 美 [’stætɪk]adj. 静态的;静电的;静力的n. 静电;静电干扰读音像”斯瘩替克“满地打滚求采纳!!!!!!!!!

static静态是什么概念

静态变量与静态函数2007-04-09 22:15 在函数或者变量前面加上static修饰符号,以便把函数或者变量在类内或者文件范围内共享,那么我们把这种函数和变量叫静态函数和静态变量。说白了,静态变量的生存期是整个程序,然而其作用域没什么变化,与动态变量的作用域是一样的,虽然静态变量在作用域外存在,但不可调用;它可以保证下次调用该函数时值保持不变,不会再次被初始化。 首先介绍静态成员函数和静态成员变量,他们是用来记录类的信息而不是对象的信息,创建对象时不会创建该变量的空间。二者既可以由对象调用又可以通过类来调用。具体而言又有如下特征:1) 静态变量受public,protected ,private限制,这同普通变量一样,也就是如果静态变量是protected或者private类型的,在类外不能访问,比如 A::i是错误的这条规则同样适用于静态函数2) 静态变量在类内声明,而必须在类外初始化,模版类中应用也是这样。这里我们在static后面加上const类型,可以直接初始化。比如Class A{ // Static int I = 5; // error Static const int I = 5; // ok Int m_list[I];}而这里I的应用也无非是Int m_list[I];3) 静态成员函数没有this指针。因此,不能声明为const函数。另外,成员数据变量在成员函数内是通过this指针来访问的,因此静态成员函数不能访问任何非静态成员变量。静态局部变量属于静态存储方式,它具有以下特点:1) 静态局部变量在函数内定义,但不象自动变量那样,当调用时就存在,退出函数时就消失。静态局部变量始终存在着,也就是说它的生存期为整个源程序。2) 静态局部变量的生存期虽然为整个源程序,但是其作用域仍与自动变量相同,即只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。3) 允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以0值。4) 对基本类型的静态局部变量若在说明时未赋以初值,则系统自动赋予0值。而对自动变量不赋初值,则其值是不定的。 根据静态局部变量的特点, 可以看出它是一种生存期为整个源程序的量。虽然离开定义它的函数后不能使用,但如再次调用定义它的函数时,它又可继续使用, 而且保存了前次被调用后留下的值。 因此,当多次调用一个函数且要求在调用之间保留某些变量的值时,可考虑采用静态局部变量。虽然用全局变量也可以达到上述目的,但全局变量有时会造成意外的副作用,因此仍以采用局部静态变量为宜。例题如下:main(){int i;void f(); /*函数说明*/for(i=1;i《=5;i++)f(); /*函数调用*/}void f() /*函数定义*/{auto int j=0;++j;printf(“%d\n“,j);} 程序中定义了函数f,其中的变量j 说明为自动变量并赋予初始值为0。当main中多次调用f时,j均赋初值为0,故每次输出值均为1。现在把j改为静态局部变量,程序如下:main(){int i;void f();for (i=1;i《=5;i++)f();}void f(){static int j=0;++j;printf(“%d\n“,j);}由于j为静态变量,能在每次调用后保留其值并在下一次调用时继续使用,所以输出值成为累加的结果。全局静态函数的应用比较常见的就是static int fun(){ ...; return 1;}当我们希望在多个类中调用fun函数时,我们必须把fun声明为static类型,不然在link时编译器会发现多个关于fun的定义。这种函数的应用,多少带有C的色彩,尤其当我们在C环境写好的函数,移植到C++中时,需要在函数前面需要加上static,而如果我们需要移植多个函数时,更通用的一种方法是使用未命名名字空间。

java中static是什么意思,该怎么用

就是静态。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。 声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共同拥有一个static变量。声明为static的方法有以下几条限制:· 它们仅能调用其他的static 方法。· 它们只能访问static数据。· 它们不能以任何方式引用this 或super(关键字super 与继承有关)。举例 如果你需要通过计算来初始化你的static变量,你可以声明一个static块,Static 块仅在该类被加载时执行一次。下面的例子显示的类有一个static方法,一些static变量,以及一个static 初始化块: // Demonstrate static variables,methods,and blocks. class UseStatic { static int a = 3; static int b; static void meth(int x) { System.out.println(“x = “ + x); System.out.println(“a = “ + a); System.out.println(“b = “ + b); } static { System.out.println(“Static block initialized.“); b = a * 4; } public static void main(String args) { meth(42); } } 一旦UseStatic 类被装载,所有的static语句被运行。首先,a被设置为3,接着static 块执行(打印一条消息),最后,b被初始化为a*4 或12。然后调用main(),main() 调用meth() ,把值42传递给x。3个println ( ) 语句引用两个static变量a和b,以及局部变量x 。 注意:在一个static 方法中引用任何实例变量都是非法的。下面是该程序的输出: Static block initialized. x = 42 a = 3 b = 12

static与const的区别又有什么联系

static是初学者经常搞错的概念之一,static定义的变量在程序初始化的时候会初始化在静态数据区,程序运行期间完全不变,是指这个区域不变,而内容是可以改变的。换句话说,static只是指定将其存储在静态存储区。不同于一般变量,一般变量在运行时候由程序分配内存,而静态变量编译的时候就将分配内存,比如你的问题中,a将被赋值为3,然后,如果你在程序中写a=a+1;a就会变成4,静态变量和一般变量唯一的不同就是整个程序运行期间都将存在。她所在的内存不会被释放。这一点跟const关键字不一样,const关键字定义的是只读变量,一经赋值,再也不能改变了。但是const也是初学者经常搞错的概念之一,const代表只读变量,而不是常量,常量通常是用enum或者宏来定义的~然后其实static主要的作用并不是来定义什么静态变量什么的,况且他也做不到这点。static最重要的作用是控制元素的作用域。被static的变量或者方法,将是只有本文件可见的!打个比方:我有两个文件 a.c和b.c,其中a.c中是这样的:int _a = 1; // 这是一个全局变量void fun() // 这是一个全局函数{...}这时候在b.c中是可以调用_a和fun()的,但是如果我加入了在_a或者fun()之前加入了static,那么两者均只能在a.c中被调用。楼主可能会问,这有什么好处呢?好处主要是两种:1)不同文件的全文件变量或者函数可以采用同样的变量/函数名,方便编程,static起到了隔离文件的作用。2)有些变量你想让他作为一个长期变量/函数,但是又不想让他成为全局变量/函数,static就有用了,因为static变量/函数跟全局变量/函数在初始化时同样是开辟在静态区的。另外,值得注意的一点是,当初设计static的时候,因为变量将被储存在静态区域,因为副作用,初始值将全部置0x00,这一点被很多程序猿利用来对字节进行置0初值操作哦~


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: cheerful(有谁英文名叫cheerful的,我看到有两个提问名字能否用cheerful的,我的全名叫stephen·C·Y·cheerful)

下一篇: 第三方支付接口(怎么申请第三方支付接口)



推荐阅读

网站内容来自网络,如有侵权请联系我们,立即删除! | 软文发布 | 粤ICP备2021106084号