永发信息网

java中System.out.println()的一个问题

答案:2  悬赏:0  手机版
解决时间 2021-02-04 01:37
  • 提问者网友:做自己de王妃
  • 2021-02-03 06:29
查看到java帮助文档里关于System中out的定义是:
public final static PrintStream out = null;
而平时使用就是直接System.out.println(),但println()又非静态方法,推出out一定要先初始化指向一个对象,那么out到底是在哪里被初始化的?
class A
{
public static B bb;
}

class B
{
public void f()
{
System.out.println("haha");
}
}

public class Test
{
public static void main(String[] args)
{
A.bb.f();
}
}

以上的代码中,bb是类A中的静态成员,但是A.bb.f()这行代码虽然编译时没错,但运行时会出现空指针错误怎么解释,但System.out.println();能正常运行啊
最佳答案
  • 五星知识达人网友:猎心人
  • 2021-02-03 06:37
System里有如下代码:
private static native void registerNatives();

static {

registerNatives();

}
in和out还有err都是在registerNatives()方法中赋值的,这个方法是本地方法,是JVM调用的操作系统底层方法
全部回答
  • 1楼网友:污到你湿
  • 2021-02-03 07:07
1.system是java.lang里面的一个类. 2.而out就是system里面的一个数据成员(也称为字段),但这个成员不是基本类,而是java.io.printstream类的对象. 3.被关键字static修饰的数据成员或方法可以直接通过“类名.数据成员”或“类名.方法”来引用,而无须先建立对象。所以system.out是应用了out这个静态数据成员。 4.而out又是一个java.io.printstream类的对象,所以out必然可以调用java.io.printstream类里面的方法,println()就是java.io.printstream类里的一个方法,它的作用就是用来想控制台输出信息的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯