关于HelloWorld源码研究的问题?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

关于HelloWorld源码研究的问题?

2016-03-23 14:54:51 1901 1

package com.xukaiqiang.code.code; /** * @ProjectName:code * @ClassName:App * @Description:研究HelloWorld源码程序 * @date : Apr 14, 201612:16:09 PM * @author : bruce * @version: V1.0 */ public class App { public static void main(String[] args) { /** * 1.System为final类,不能被继承,相当于"太监"了 * 2.out为System类的一个成员属性,由PrintStream类实例化 * 3.println为PrintStream的方法 */ System.out.println("Hello World!"); } } ------------------------------------------------------------------------------------------------ 如上,是每个初学者入门的一个Java的HelloWorld打印输出到控制台的代码。 我们可以看一下源代码: public final class System{}表示System类,不可以被继承。 public final static PrintStream out = null; out对象为System类的一个成员属性,注意,这里这个对象并没有实例化。 我们看一下PrintStream类, public class PrintStream extends FilterOutputStream implements Appendable, Closeable{} 以及它下面的println方法 public void println(String x) { synchronized (this) { print(x); newLine(); } } ---------------------------------------------------好看的分割线------------------------------ 问题来了,为什么可以直接通过点进行调用? System.out.println(); 为什么out并没有实例化,为什么可以调用println()方法? 大家都知道: 如果调用一个类中的方法,可以有以下两种方式: 1.实例化这个类。 比如 A a =new A(); a.save(); 2.这个方法是静态方法 可以用类名.add(); 比如: public class A{ public static void add(){} } 调用:A.add(); 这里是为什么呢?该如何理解呢?

取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 19:11:09

    out肯定是实例化了的啊,initializeSystemClass —>setIn0:

    JNIEXPORT void JNICALL
     Java_java_lang_System_setIn0(JNIEnv *env, jclass cla, jobject stream)
     {
         jfieldID fid =
             (*env)->GetStaticFieldID(env,cla,"in","Ljava/io/InputStream;");
         if (fid == 0)
             return;
         (*env)->SetStaticObjectField(env,cla,fid,stream);
     }
    0 0
相关问答

41

回答

[@徐雷frank][¥20]什么是JAVA的平台无关性

大河人家 2018-10-29 23:55:20 146683浏览量 回答数 41

170

回答

惊喜翻倍:免费ECS+免费环境配置~!(ECS免费体验6个月活动3月31日结束)

豆妹 2014-10-29 17:52:21 232243浏览量 回答数 170

8

回答

OceanBase 使用动画(持续更新)

mq4096 2019-02-20 17:16:36 340454浏览量 回答数 8

13

回答

[@饭娱咖啡][¥20]我想知道 Java 关于引用那一块的知识

心意乱 2018-10-31 18:44:12 143289浏览量 回答数 13

119

回答

OSS存储服务-客户端工具

newegg11 2012-05-17 15:37:18 301007浏览量 回答数 119

22

回答

爬虫数据管理【问答合集】

我是管理员 2018-08-10 16:37:41 148516浏览量 回答数 22

24

回答

阿里云开放端口权限

xcxx 2016-07-20 15:03:33 657967浏览量 回答数 24

31

回答

[@倚贤][¥20]刚学完html/css/js的新手学习servlet、jsp需要注意哪些问题?

弗洛伊德6 2018-10-27 21:52:43 147503浏览量 回答数 31

43

回答

【精品问答集锦】Python热门问题

小六码奴 2019-05-30 15:27:34 142780浏览量 回答数 43

10

回答

[@墨玖tao][¥20]为什么流式处理框架都是 java 写成的,JVM 是不是在流和批存在着特殊优势。还有分布式资源调度,感觉Mesos 的成长速度跟不上 Yarn。这是为什么?

管理贝贝 2018-10-23 13:18:03 137405浏览量 回答数 10
+关注
2
文章
9426
问答
问答排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载