作者jtmh (累。。)
看板java
标题Re: [J2SE] 想问一下有关System.out.println()的问题
时间Sat Mar 13 08:40:44 2010
※ 引述《s66449 (闲泡菜)》之铭言:
: 请问一下,因为打的范例是有import java.io.PrintStream
: 那如果不import java.io.PrintStream的话
: public class test
: {
: public static void main(String args[])
: {
: System.out.println("123");
: }
: }
: out是static 所以可以直接用类别名称去呼叫
: 变成System.out 那因为後面的println并不是static
: 为什麽可以直接加.println()呢??
: 跟out传回值是PrintStream类别有关吗?
1F:→ darkk6:因为 System.out 是 PrintStream println 是方法.... 03/13 00:16
2F:推 PsMonkey:应该说,因为没有用到 PrintStream 这个「class」 03/13 00:57
3F:→ s66449:我的意思是我没汇入PrintStream然後println也不是static 03/13 04:57
4F:→ s66449:为什麽可以直接加上.println()来呼叫这个方法?? 03/13 04:58
我觉得你有点把 import, static 变数, 以及 方法呼叫 的用法混在一起了。
直接讲重点,Java 本身的规定就是 (以下均假设为 public 存取属性)
1. 如果是 static 变数或方法,就可以直接透过
类别名称.该 static 变数或方法
的方式来使用该 static 变数或方法。
2. 如果是非 static 变数或方法,就要透过
其类别的物件名称.该非 static 变数或方法
的方式来使用该非 static 变数或方法。
以上述所说的,今天 out 是 System 的 static 变数,
所以可以 System.out 来用它;
而 println() 为非 static 方法,
不过我们有其类别 (PrintStream) 的物件名称 out,
因此可以 out.println() 来用它,
两个串起来後就变成 System.out.println() 了。
至於你所讲的有没有 import java.io.PrintStream 的问题,
只有在你的程式码中有直接写到 PrintStream 这个「类别名称」的时候,
才会需要去 import java.io.PrintStream,
如同 PsMonkey 版大在推文中所说的。
(或是不 import,但每次写到它时都用全名 java.io.PrintStream。)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.113.101.250
5F:→ s66449:也谢谢你的讲解 03/13 11:27
6F:推 andrew43:这篇对我这个新手很有帮助,谢谢你。 03/15 21:30