Java的static关键字[Java编程]
本文“Java的static关键字[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
普通,我们成立类时会指出那个类的对象的外观与行为.除非用new成立那个类的一个对象,不然实际上并未得到任何东西.只有履行了new后,才会正式生成数据存储空间,并可以利用呼应的办法.
但在两种特别的情形下,上述办法并不堪用.一种情形是只想用一个存储区域来保存一个特定的数据——无论要成立多少个对象,乃至根本不成立对象.另一种情形是我们需求一个特别的办法,它没有与这个类的任何对象关联.也就是说,即便没有成立对象,也需求一个能调用的办法.为满意这两方面的要求,可以利用static(静态)关键字.一旦将什么东西设为static,数据或办法就不会同那个类的任何对象实例接洽到一同.所以固然从未成立那个类的一个对象,仍能调用一个static办法,或拜候一些static数据.而在这之前,关于非static数据和办法,我们必须成立一个对象,并用那个对象拜候数据或办法.这是由于非static数据和办法必须知道它们操作的具体对象.当然,在正式利用前,由于static办法不需求成立任何对象,所以它们不可简单地调用其他那些成员,同时不引用一个已命名的对象,从而直接拜候非static成员或办法(因为非static成员和办法必须同一个特定的对象关联到一同).
有些面向对象的语言利用了“类数据”和“类办法”这两个术语.它们意味着数据和办法只是为作为一个整体的类而存在的,并非为那个类的任何特定对象.有时,您会在其他一些Java书刊里发现这样的称谓.
为了将数据成员或办法设为static,只需在定义前置和这个关键字便可.比方,下述代码能生成一个static数据成员,并对其初始化:
class StaticTest {
Static int i = 47;
}
目前,固然我们制作了两个StaticTest对象,但它们仍旧只占据StaticTest.i的一个存储空间.这两个对象都同享一样的i.请观察下述代码:
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
此时,无论st1.i还是st2.i都有一样的值47,因为它们引用的是一样的内存区域.
有两个办法可引用一个static变量.正如上面展示的那样,可通过一个对象命名它,如st2.i.亦可直接用它的类名引用,而这在非静态成员里是行不通的(最好用这个办法引用static变量,因为它夸大了那个变量的“静态”本质).
StaticTest.i++;
此中,++运算符会使变量增值.此时,无论st1.i还是st2.i的值都是48.
近似的逻辑也实用于静态办法.既可象对其他任何办法那样通过一个对象引用静态办法,亦可用特别的语法格局“类名.办法()”加以引用.静态办法的定义是近似的:
class StaticFun {
static void incr() { StaticTest.i++; }
}
从中可看出,StaticFun的办法incr()使静态数据i增值.通过对象,可用典型的办法调用incr():
StaticFun sf = new StaticFun();
sf.incr();
大概,由于incr()是一种静态办法,所以可通过它的类直接调用:
StaticFun.incr();
固然是“静态”的,但只要利用于一个数据成员,就会明确改变数据的成立方法(一个类一个成员,以及每个对象一个非静态成员).若利用于一个办法,就没有那么戏剧化了.对办法来说,static一项重要的用处就是帮忙我们在没必要成立对象的前提下调用那个办法.正如今后会看到的那样,这一点是至关重要的——分外是在定义程序运行进口办法main()的时刻.
和其他任何办法一样,static办法也能成立自己范例的命名对象.所以常常把static办法作为一个“领头羊”利用,用它生成一系列自己范例的“实例”.
以上是“Java的static关键字[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |