Java基本知识(1)static关键字



节选自《Thinking in Java》第四版

Part1 static对象

通常来说,外界要调用一个类里面的方法,都要创建一个属于这个类的对象,使用new来创建对象时,数据存储空间才能被分配。

如果希望即使不创建任何对象,也可以调用某个方法的话,那就要用到static关键字了

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


只要将static关键字放在定义之前,就可以将字段或方法设定为static


class StaticTest {
    static int i = 47;
}

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

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

这里st1.i和st2.i指向同一存储空间,他们有相同的值47

此时,若执行 Static.i++,则t1.i和st2.i仍然具有相同的值48


Part2 static方法--静态方法

对于静态方法,既可以通用一个对象来引用它,也可以以 ClassName.method()的方法引用

class A{
	static void a() { do something}
	}
}

以下引用a()的方法都是可行的

A a1 = new A();
a1.a();
A.a()

当static作用于某个字段的时候,会改变数据的创建方式——因为一个static字段对每个类来说都只有一份存储空间,非static字段则是对每个对象都有一个存储空间

但是,如果static作用于某个方法时,差别则没有那么大。

static方法的一个重要用法就是在不创建任何对象的前提下可以调用他



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值