在java中使用自定义方法将行打印到控制台

在java中使用自定义方法将行打印到控制台,java,Java,我有这样简单的程序 class println { public static void main(String[] args) { System.out.println("Hello World!"); } } 但是我不想使用System.out.println来打印。我想使用我自己的用户定义方法来打印数据。请记住,Java代码在JVM中运行,JVM只以几种指定的方式与外部世界通信。因此,如果您想要打印到控制台,您将需要调用一个方法,该方法(在JNI等之后)以某种方式映射到实

我有这样简单的程序

class println 
{
  public static void main(String[] args) 
 {
  System.out.println("Hello World!");
 }
}

但是我不想使用
System.out.println
来打印。我想使用我自己的用户定义方法来打印数据。

请记住,Java代码在JVM中运行,JVM只以几种指定的方式与外部世界通信。因此,如果您想要打印到控制台,您将需要调用一个方法,该方法(在JNI等之后)以某种方式映射到实际操作系统上的IO操作。除非您计划构建一个新的OS级IO操作(在这种情况下,您无论如何都不能用Java编写),否则最好使用已经知道如何与外部世界对话的现有类

class HelloWorld 
{
  public static void main(String[] args) 
  {
    myPrint("Hello World!");
  }

  public static void myPrint(String message) {
    System.out.print(message + "\n");
  }
}
碰巧,
java.io.PrintStream
类知道如何写入操作系统级文件流,操作系统为控制台提供文件流(
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!");
    }
}

您的“要打印的用户定义方法”做了什么,而
PrintStream
对象的
println()方法做不到?如果您对格式化输出感兴趣,那么在调用
println()
方法之前,需要将其格式化为
字符串。为了方便起见,您可以将格式化和实际打印打包到一个助手方法中。这就是您真正想要的吗?

请记住,Java代码在JVM中运行,JVM只以几种特定的方式与外部世界通信。因此,如果您想要打印到控制台,您将需要调用一个方法,该方法(在JNI等之后)以某种方式映射到实际操作系统上的IO操作。除非您计划构建一个新的OS级IO操作(在这种情况下,您无论如何都不能用Java编写),否则最好使用已经知道如何与外部世界对话的现有类

碰巧,
java.io.PrintStream
类知道如何写入操作系统级文件流,操作系统为控制台提供文件流(
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!");
    }
}

您的“要打印的用户定义方法”做了什么,而
PrintStream
对象的
println()方法做不到?如果您对格式化输出感兴趣,那么在调用
println()
方法之前,需要将其格式化为
字符串。为了方便起见,您可以将格式化和实际打印打包到一个助手方法中。这就是您真正想要的吗?

这里有一个猜测:这是用于日志记录的吗?我猜,有相当一部分人希望向控制台写入数据是为了记录日志,而有很大一部分人不想使用System.out.println(),这样他们就可以更好地控制这种特定形式的日志的打开和关闭


如果我的猜测是正确的,我是否可以建议研究像or/k这样的日志框架?您将获得控制台附加程序和所需的任何控制程度。

这里有一个猜测:这是用于日志记录的吗?我猜,有相当一部分人希望向控制台写入数据是为了记录日志,而有很大一部分人不想使用System.out.println(),这样他们就可以更好地控制这种特定形式的日志的打开和关闭


如果我的猜测是正确的,我是否可以建议研究像or/k这样的日志框架?您将获得控制台附加程序和所需的任何控制程度。

System.out.println
是对类
系统的静态实例
out
(class
PrintStream
)的方法
println
的调用

在Java中,无法重命名现有方法或实例字段(即不能将
println
out
的名称更改为任何其他名称)和
System.out
是获取
out
值的唯一方法(它将您连接到控制台)


因此,没有办法实现您想要的。

System.out.println
是对类
系统的静态实例
out
(class
PrintStream
)的方法
println
的调用

在Java中,无法重命名现有方法或实例字段(即不能将
println
out
的名称更改为任何其他名称),而
System.out
是获取
out