这是类名称空间中的静态println函数吗?outSystem
namespace System {
class out {
static println ...
}
我怎么能解释这个名字?在JRE中定义了这个函数?在java.lang.System/ java.lang.Object?
ken*_*ytm 86
实际上,它out是类中的静态成员System(不是在.NET中),是一个实例PrintStream.并且println是类的正常(重载)方法PrintStream.
请参阅http://download.oracle.com/javase/6/docs/api/java/lang/System.html#out.
其实,如果out/ err/ in是类,它们将与资本字符(命名Out/ Err/ In)由于命名约定(忽略语法).
cHa*_*Hao 48
System是一个具有公共静态字段的类out.所以更像是
class System
{
public static PrintStream out;
}
class PrintStream
{
public void println ...
}
Run Code Online (Sandbox Code Playgroud)
这是一个轻微的过度简化,因为PrintStream类实际上在java.io包中,但它足以显示东西的关系.
YoK*_*YoK 26
检查以下链接:
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/System.html
你会清楚地看到:
System是一个类中的java.lang包.
out是一个静态成员的的System类,并且是的一个实例java.io.PrintStream.
println是一个方法的java.io.PrintStream.重载此方法以将消息打印到输出目标,输出目的地通常是控制台或文件.
Vde*_*deX 26
的System.out.println()
高层次的理解
为了理解这一点,我们需要回忆几下java的基础知识:
现在有了java的基础知识,我们知道:
让我们详细了解:
out变量:static还是instance?
使用类名称调用,因此我们知道它的System类的静态变量.
但它调用方法println()方法,因此'out'是引用类型PrintStream的对象.
System类属于java.lang包
class System {
public static final PrintStream out;
//...
}
Run Code Online (Sandbox Code Playgroud)
Prinstream类属于java.io包
class PrintStream{
public void println();
//...
}
Run Code Online (Sandbox Code Playgroud)
小智 7
println并且print是属于PrintStream该类的两个重载方法.
要访问它们,我们需要这个类的实例.
在类上创建一个名为type的静态属性.outPrintStreamSystem
因此,要访问上述方法,我们使用以下语句:
System.out.println("foo");
System.out.print("foo");
Run Code Online (Sandbox Code Playgroud)