解决方案 »

  1.   

    printf一般是在c语言用,java不用这个,用System.out.println(),println有一系列重载方法,可以将各种类型的参数输出到控制台。
    java中的System.out.printf(String format,Object...args)貌似是用来格式化的,用的很少。printStackTrace就是将抛出的Throwable对象追踪的堆栈的异常信息打印到控制台,没有什么值得研究的原理。
    printStackTrace的源码很简单: public void printStackTrace() {
            printStackTrace(System.err); 
        } public void printStackTrace(PrintStream s) {
            synchronized (s) {
                s.println(this);
                StackTraceElement[] trace = getOurStackTrace();
                for (int i=0; i < trace.length; i++)
                    s.println("\tat " + trace[i]);            Throwable ourCause = getCause();
                if (ourCause != null)
                    ourCause.printStackTraceAsCause(s, trace);
            }
        }
    System.err和System.out的区别你查一下,建议你把Java基础再好好复习一遍。
      

  2.   

    例如:System.out.printf("%.2f\n",23.456);
      

  3.   

    查查jdk api 如下 StackTraceElement类提供的方法1:equals(Object obj) 
              如果指定的对象是另一个 StackTraceElement 实例,并且该对象表示的执行点与该实例的相同,则返回 ture。
    2:getClassName() 
              返回类的完全限定名,该类包含由该堆栈跟踪元素所表示的执行点。
    3:getFileName() 
              返回源文件名,该文件包含由该堆栈跟踪元素所表示的执行点。
    4:getLineNumber() 
              返回源行的行号,该行包含由该堆栈该跟踪元素所表示的执行点。
    5:getMethodName() 
              返回方法名,此方法包含由该堆栈跟踪元素所表示的执行点。
    6:isNativeMethod() 
              如果包含由该堆栈跟踪元素所表示的执行点的方法是一个本机方法,则返回 true。
    7:hashCode() 
              返回此堆栈跟踪元素的哈希码值。
    8:toString() 
              返回表示该堆栈跟踪元素的字符串。这里面就包括了 你说的 1 2 3,并且很详细,节省了你的 print sysout等方法
      

  4.   


    就是根本没有输出啊(除非是我漏了看了)
    e.printStackTrace却有输出
    看源码就知道了,用了是System.err
    为什么err有输出,out确没有?