c 和java 中的static关键字

(一)首先来谈谈在C中的作用,分为修饰变量和修饰函数两种情况:

(1)修饰变量,变量分为局部静态变量和全局静态变量,他们都存在内存的静态区,静态全局变量的作用域仅限于变量被定义的文件中,准确的说:是从定义之处开始,到文件结尾处结束。静态局部变量,就是函数体里面定义的,就只能在这个函数里用了,同一个文档中的其他函数都不能用。由于被static修饰的变量总是存在内存的静态区,所以即使这个函数运行结束,这个静态变量的值也不会被销毁,函数下次使用时仍然能用到这个值。

(2)修饰函数,函数前加static使得函数称为静态函数,函数的作用域仅限于本文件,所以又称为内部函数。

(二)在java中的作用,分为修饰成员变量和修饰成员方法,形成静态代码块。

(2.1)被static修饰的成员变量和成员方法独立于该类的任何对象,也就是说它不依赖于类的特定实例,只要类被加载了,就可以通过类名来访问。方便在没有创建对象的时候来进行调用;

(2.2)只分配一次内存,所有此类实例共享此静态变量,也就是说在类装载时,只分配一块存储空间,所有此类的对象都可以操控此块存储空间。声明为static的变量实质上就是全局变量。

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

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

(2.5)类中定义的静态代码块会优先于构造块先执行,而且不管有多少个对象,静态代码块只执行一次;类中static块程序是在类被装载的时候开始执行。而不是在创建对象的时              候执行。

(2.6)在C/C++中static是可以作用域局部变量的,但是在Java中切记:static是不允许用来修饰局部变量

  (2.7)static定义的变量会优先于任何其它非static变量,不论其出现的顺序如何。

   (2.8)在涉及到继承的时候,会先初始化父类的static变量,然后是子类的,依次类推

(2.9)static关键字不会改变类中成员的访问权限


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值