Static关键字

                                                                   Static关键字    

本文摘抄自java编程思想第4版

     static关键字

          通常来说,当创建类时,就是在描述那个类的外观与行为。除非用new创建那个类的对象,否则,实际上并未获得任何对象,执行new来创建对象时,数据储存空间才被分配。其方法才供外界调用。

          有俩种情形用上述方法是无法解决的。一种情形是,只想为某特定域分配单一储存空间,而不考虑究竟要创建多少对象,甚至根本就不创建任何对象。另一种情形是,希望某个方法不与包含它的类的任何对象联系在一起。也就是说,即使没有创建对象,也能够调用这个方法。

          通过Static关键字可以满足这俩个方面的需要,当声明一个事物是static时,就意味这这个域或这个方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其static方法或访问其static域。通常,你必须创建一个对象,并用他来访问数据或方法。因为非static域和方法必须知道它们一起运作的特定对象。

          有些面向对象语言采用类数据和类方法俩个术语,代表那些数据和方法只是作为整个类,而不是类的某个特定对象而存在的。有时,一些JAVA文献里也用到这俩个术语。

          只须将static关键字放在定义之前,就可以将字段或方法设定为static,例如,下面的代码就生成了一个static字段,并对其进行了初始化

          引用static变量有俩种方法,一种是通过一个对象去定位它,也可以通过其类名直接引用,而这对非静态成员却不可以

          使用类名是引用static变量的首选方式,这不仅是因为他强调了变量的static结构,而且在某些情况下它还为编译器进行优化提供了更好的机会

          类似逻辑也应用于静态方法,即可以像其他方法一样,通过一个对象来引用某个静态方法,也可以通过特殊语法形式加以引用(类名.方法名)。定义静态方法的方式也与定义静态变量的方式相似;

          尽管当static作用于某个字段时,肯定会改变数据创建的方式(因为static字段对每个类来说都只有一份储存空间,而非static字段则是对每个对象有一个存储空间),但是如果static作用于某个方法,差别却没有那么大。static方法的一个重要用法就是在不创建任何对象的前提下就可以调用他,正如我们将会看到的那样,这一点对定义main()方法很重要,这个方法是运行一个应用时的入口点。

          和其他任何方法一样,static方法可以创建或使用与其他类型相同的被命名对象,因此,static方法常常拿来做“牧羊人”的角色,负责看护与其隶属同一类型的实例群。

          下面举一个例子说明static



从上面的程序不难看出,我们在一个类中定义了俩个变量,和俩个方法,分别是静态变量(str1)和非静态变量(str2),静态方法(print2)和非静态方法(print1),在print1()方法中我们可以引用str1(静态变量),str2(非静态变量),以及print2(静态方法),当我们在print2方法中可以引用静态常量(str1)无法引用非静态常量(str2)以及非静态方法print1()。

      由此我们可以总结出,在同一个类中静态方法中只能引用静态常量和方法,在不同的类中访问静态常量直接使用类名.常量名称即可,访问静态方法也可以通过类名.方法名称。当访问非静态方法则需要new一次在进行调用




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值