安慰我有簡單的程序,這樣使用用戶定義的方法來打印線的java
class println
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
,但我不希望使用System.out.println
到print..i想用我自己的用戶定義的方法來打印數據。
安慰我有簡單的程序,這樣使用用戶定義的方法來打印線的java
class println
{
public static void main(String[] args)
{
System.out.println("Hello World!");
}
}
,但我不希望使用System.out.println
到print..i想用我自己的用戶定義的方法來打印數據。
class HelloWorld
{
public static void main(String[] args)
{
myPrint("Hello World!");
}
public static void myPrint(String message) {
System.out.print(message + "\n");
}
}
但我不想使用「System.out.println」 – Gourav 2009-09-17 15:25:10
你想在控制檯打印然後?你有什麼反對它? – 2009-09-17 15:27:25
在那裏,Gourav爲你修好了,不再有「System.out.println」。但是,除非你能指定爲什麼你想避免這種情況,否則我們可以整天玩這個瘋狂的挑剔遊戲。 – 2009-09-17 15:35:58
請記住,Java代碼在JVM中運行,並且JVM只通過幾種指定方式與外部世界進行通信。所以如果你想打印到一個控制檯,你需要調用一個方法(在JNI等之後)映射到你的實際操作系統上的IO操作。除非你打算建立一個新的操作系統級別的IO操作(在這種情況下,你不能用Java寫它),最好的辦法是使用一個已經知道如何與外部世界交流的類。
碰巧,java.io.PrintStream
類知道如何寫入OS級文件流,操作系統爲控制檯提供文件流(stdout
)。 (從技術上講,PrintStream
只知道如何寫入OutputStream
,而OutputStream
知道如何寫入操作系統級文件流,但我不想陷入細節。)Java提供了已連接到您的PrintStream
實例進程的標準輸出流; PrintStream
對象可以被引用爲java.lang.System
對象的out
屬性。鑑於PrintStream
有一個像println()
方法,你可以寫:
java.lang.System.out.println("Hello, world!");
因爲你總是java.lang.*
默認導入,可以縮短,爲:
System.out.println("Hello, world!");
或者,你可以在PrintStream
實例分配給一個局部變量:
import java.io.PrintStream;
public class HelloWorld {
public static void main(String[] args) {
PrintStream p = System.out;
p.println("Hello, world!");
}
}
你的「用戶定義的方法打印」是做什麼的println()
方法PrintStream
對象不?如果您對格式化的輸出感興趣,那麼您需要將其格式化爲String
,然後在之前調用println()
方法。爲了方便起見,您可以使用單個幫助程序方法打包格式和實際打印。這是你真正想要的嗎?
System.out.println
是類System
的靜態實例out
(類PrintStream
)的方法println
的呼叫。
在Java中,沒有辦法重命名現有的方法或實例字段(即,您不能將名稱println
或out
更改爲其他任何名稱)並且System.out
是獲得值out
(將您連接到控制檯)的唯一方法。
所以沒有辦法達到你想要的。
比方說,你想攔截所有內容去System.out.println()
。你可以做到以下幾點:
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
PrintStream printStream = new PrintStream(buffer);
System.setOut(printStream);
System.out.println("Hello!");
String whatWasPrinted = new String(buffer.getBytes());
利用技術這樣,你可以自定義「打印」的代碼提供自定義流做你的需要。
System
是來自java.lang
包的final class
。 out
是在System
類中聲明的PrintStream
類型的類變量。 println
是PrintStream
類的一種方法。
因此,如果您要覆蓋prinln
方法,請改爲定義您自己的方法,並在該方法中傳遞Printstrem
對象。
方法2:
創建自己的PrintStream
- 例如public class YourPrintStream extends PrinterStream
。 覆蓋print(String s)
方法並以任何您喜歡的方式更改字符串。然後致電super.print(s));
致電System.setOut(new YourPrintStream())
然後每次調用System.out.println
時,在進入實際流之前,傳遞的字符串將在您的控制之下。
爲什麼你不想使用System.out.println? – 2009-09-17 15:14:19
println是一個糟糕的類名。類名稱應以大寫字母開頭,並應描述該類的內容。 – 2009-09-17 15:16:11
呃...這裏有什麼問題?只需更改代碼即可調用您的方法! – Powerlord 2009-09-17 15:16:16