有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

打印用Java打印到控制台的更简单方法?

当我在高中的时候,我曾经用这种黑客的方式打印到控制台上,在控制台上我定义了一个名为say()的方法,这样我就不必输入System了。出来println()每次我想打印一些东西时。这是一个非常简单的方法,如下所示:

public static void say(Object o){

System.out.println(o);

}

我能想到的唯一缺点是无法打印无法转换为字符串的对象,但这个问题也会发生在系统中。出来println()。我也知道方法调用会占用堆栈上的空间,但由于这不是一个递归方法,我真的不认为它有可能破坏堆栈。如果有人对这样做是否合适有任何见解,请让我知道

谢谢


共 (1) 个答案

  1. # 1 楼答案

    每次打印对象System.out.println(obj)或将其添加到字符串"value is "+obj时,都会调用obj.toString()方法,当您使用一些内部有用信息覆盖此方法时,您将收到一条用户友好的消息。否则,您将收到一条包含对象包、类名和对象内存id的消息

    调用System.out.println(obj)实在太多了,不能只在控制台中打印一个值,我个人喜欢进行静态导入并使用out.println(obj)。这不是最好的选择,但已经足够好了

    例如:

     import static java.lang.System.out;
    
     public class PrintExample {
    
    public static void main(String[] args) {
        MyObject obj = new MyObject(10);
        out.println(obj);
        MyObject2 obj2 = new MyObject2(10);
        out.println(obj2);
    }
    
    static class MyObject {
    
        final int value;
    
        MyObject(final int value) {
            this.value = value;
        }
    
        @Override
        public String toString() {
            return "The value is " + value;
        }
    }
    
    static class MyObject2 {
    
        final int value;
    
        MyObject2(final int value) {
            this.value = value;
        }
    
    }
    }
    

    输出:

    The value is 10
    com.cflex.mp.api.log.PrintExample$MyObject2@60285225