单片机/MCU论坛
直播中

远风

9年用户 1048经验值
擅长:MEMS/传感技术 模拟技术 存储技术
私信 关注
[问答]

为什么Main方法里可以调用println()方法 ?

public static void main(String[] args) {System.out.println("xxxxxxxxxx");
}
}
我记得静态方法里不能调用非静态的方法,可println()明明是非静态方法啊??out也就是个静态的引用而已啊。

回帖(1)

李欣媛

2023-10-25 16:31:14
1、每个非静态方法的调用都是基于一个对象的实例,比如 a.call() b.call().this.call() 可以直接写为 call();
但是在静态方法里,this是不能出现的,因为调用静态方法的时候,实例可能还么有创建,这就是为什么在静态方法里不能直接调用非静态方法。
但是如果已经实例化一个对象,就可以在静态方法里调用这个对象的非静态方法了。
2、静态方法中不能调用非静态方法是不准确的。准确的说法是静态方法中不能直接调用非静态方法或非静态属性,但是可以间接调用;
比如在静态方法中new一个对象,然后调用对象的非静态方法或非静态属性;System.out 是一个静态属性,在静态方法中可以直接访问;
out又是一个对象,是经过事先实例化的,所以可以通过System.out 对象调用println方法。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分