static关键字

本文解释了在编程中为何需要使用Static方法,通过对比Static方法与普通方法的区别,阐述了Static方法作为类方法的独特作用及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看了很多关于static的疑问

有很多朋友觉得既然static的方法不能使用一般方法或一般变量,而对象不仅可以调用一般变量和方法,还可以调用static方法和变量,又何必有static方法呢?

这必须要从static的本质来看,其实它是一个类方法,所谓类方法即是属于类的,而并不是属于某一个对象的,只不过所有对象都可以共同使用而已,而且对类方法的改变是永久的,而不是改变完之后对其它对象的调用不产生影响。

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

所以导致了两种情况无法解决。一种是:只想为某特定域分配单一存储空间,而不考虑他要创建多少对象,或者根本不创建对象。另一种是:既然没有对象,我也要调用这个方法。最明显的就是main方法了,这个方法是运行一个应用时的入口点。

通过static关键字可以满足这两方面的需要。当声明一个事物是static时。就意味着这个域或方法不会与包含它的那个类的任何对象实例关联在一起。所以,即使从未创建某个类的任何对象,也可以调用其方法或访问其static域。

如果发现是用类名来调用一个域或者方法,那么这个域或方法是静态的。

这里应该要注意的问题还有:内存只为某个类的静态字段分配一份存储空间,而为非static的字段,每创建一个对象,便有一个存储空间。

所以对类的字段改变是公共的(不论是类或方法来改变),对整个类或对象将来调用都产生影响。而对非类的字段改变是私人的,都是在自己的存储空间内改变,对其它对象或类的调用不产生影响。

举个例子来说明一下:一个公司有static字段:活动经费,也有非static字段:个人工资。那么每个人或班级对活动经费的改变,下一个人或者班级来调用时会返回改变后的结果。而当new一个对象之后,对非static字段个人工资的调用都是相对于它本身的,这个时候其它人(对象)来调用时,跟之前那个人的改变是没有关系的。

静态方法也就是类方法,是属于类的,也是调用公共区域,并且只能调用静态的域和静态的方法。不能调用非静态的域和方法。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值