java基础知识总结之static关键字

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

有两种情形用上述方法无法解决。一,只想为某特定属性分配单一存储空间,而不考虑究竟要创建多少对象,甚至根本不创建对象;二,希望某个方法不与包含他的类的任何对象实例关联在一起。所以,即使从未创建某个类的对象,也可以调用其static方法或访问其static属性。通常,必须创建一个对象,并用它来访问属性或方法。因为非static属性和方法必须知道他们一起运作的特定对象。

只需要将static关键字放在定义前面,就可以将字段或方法设定为static的。例如:

class StaticTest {
    static int i = 1;
}

现在,即使你创建了两个StaticTest对象,StaticTest.i也只有一份存储空间,这两个对象共享一个i:

StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();

st1.i和st2.i指向的是同一存储空间,因此他们具有相同的值1。

引用static变量有两种方法。可以通过一个对象去定位它,比如st1.i或者st2.i,也可以通过类名直接引用,比如:

StaticTest.i++;

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

类似的逻辑也应用于静态的方法:

class StaticMethod {
    static void test() {
        StaticTest.i++;   
    }
}

可以通过对象来调用test():

StaticMethod sm = new StaticMethod();
sm.test();

也可以通过它的类直接调用:

StaticMethod.test();

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值