java-静态方法中调用构造方法

静态成员

基本定义:

静态成员包括静态方法(static method)静态变量(static variable)
如果想要一个类的所有实例共享数据,那么就要使用静态变量,也称为类变量(class variable)。静态变量将变量值存储在一个公共的内存地址。因为它是公共的地址,所以如果某一个对象修改了静态变量的值,那么同一个类的所有对象都会受到影响。java支持静态方法和静态变量,无需创建类的实例就可以调用静态方法
----《java语言程序设计 基础篇》原书第10版,梁勇著

要声明一个静态变量或方法,则需要在声明中加上修饰符 static。一般类中的常量是被该类的所有对象所共享的,声明为静态类型,比如Math类中的PI,其声明为:final static double PI = 3.14159265358979323846;如果一个变量或方法不依赖于类的某个具体实例,就应该将它定义为静态变量或静态方法。
注:在UML图中,静态成员需加下划线额外标注

关系比较

关于调用情况,实例方法可以调用实例方法和静态方法,以及访问实例数据域或者静态数据域。静态方法可以调用静态方法以及访问静态数据域。然而静态方法不能调用实例方法或者访问实例数据域,因为静态方法和静态数据域不属于某个特定的对象。关系总结为下图:

----该图源自 《java语言程序设计 基础篇》原书第10版,梁勇著
问题就来了,今天有位群友询问构造方法不是静态方法为何可以在静态的main方法中直接调用呢?

首先,构造方法通过new操作符在静态方法中被调用。静态方法可以在未创建对象的时候调用,但是构造方法也可以在未创建对象的时候调用。从这个角度来看,构造方法算是个静态方法。其次,静态方法不能调用实例成员,而构造方法内部就可以调用实例变量和方法。这么看,构造方法又是个非静态方法。总之,这个问题的答案很难说,目前记住构造方法可以在静态方法中调用即可。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值