站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题System.out.println()

System.out.println()

摘要: System.out.println()


除java.lang包是自动加载的,其余的均需用import加载。本人有一个不理解的地方:即关于最常见的System.out.println()语句。System类位于java.lang包,out是System类的一个field,System.out则产生了一个PrintStream类型的对象,然后该对象调用PrintStream类中的println()方法以完成屏幕输出。问题是PrintStream类位于java.io包,既然规则如此,就应在代码开始处写上import java.io.*;而针对System.out.println(),我们从来都不需要加载任何包。这岂不是自相矛盾。
烦请各位大侠指正!


问的好
偶从来没有这么深入的想过这个问题
关注中^^


看看System类的源码,System.java, 下面第一个import就是引用的java.io.*

/*
* @(#)System.java1.149 04/06/02
*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package java.lang;

import java.io.*;
import java.util.Properties;
import java.util.PropertyPermission;
import java.util.StringTokenizer;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.AllPermission;
import java.nio.channels.Channel;
import java.nio.channels.spi.SelectorProvider;
import sun.net.InetAddressCachePolicy;
import sun.reflect.Reflection;
import sun.security.util.SecurityConstants;
import sun.reflect.annotation.AnnotationType;



楼上说的没错,system类import了,在你第一次调用system类的时候,jvm就会加载


多谢指教,如此看来SUN在包加载的规则方面还有待做得更好,以免产生歧义


说的不错
有自动加载



↑返回目录
前一篇: 简单问题,如何把当前时间转换未UTC时间
后一篇: 如何知道某个特定的类在哪个类库里