首页 > 其他 > 详细

tips.Print的问题

时间:2014-10-02 00:29:32      阅读:322      评论:0      收藏:0      [点我收藏+]

《编程导论(Java)》中是tips.Print;设计模式中是tool..Print。

package tips;
import java.io.PrintStream;
/**
 * 到处都是System.out.println().如果一个例程中使用它们较多,请使用本类。
 * 1.2.1类体结构,练习要求阅读本类。
 * @see java.io.PrintStream
 * @author yqj2065
 * @version 0.1
 */
public class Print{
    public static void pln(Object x){
        System.out.println(x);
    } 
    public static void pln(){
        System.out.println();
    }
    public static void p(Object x){
        System.out.print(x);
    }

    /**
     * 使用指定格式字符串和参数,打印格式化的字符串。
     */
    public static PrintStream pf(String format, Object... args){
        return System.out.printf(format,args);        
    }
    public static void pfln(String format, Object... args){
        System.out.printf(format,args). println();       
    }    
}
一直用得好好的,但是没有重载System.out.println(char[]),于是出了问题。bubuko.com,布布扣

今天看一个贴子,上面有Java Puzzlers的第12个谜题

    public static void main(String[] args) {
        String letters = "ABC";
        char[] numbers = {'1', '2', '3'};
        pln("1)" + letters + " easy as " + numbers);
        p("2)" + letters + " easy as ");
        System.out.println(numbers); // println(char[])
        System.out.println(new char[]{'1', '2', '3'});
        pln(new char[]{'1', '2', '3'});
    }
平时没有用过println(char[]),所以输出

1)ABC easy as [C@53b931e1
2)ABC easy as 123

觉得有点神奇。

    public void println(Object x) {  
        String s = String.valueOf(x);  
        synchronized (this) {  
            print(s);  
            newLine();  
        }  
    }
这个比较清楚——我叫输出为引用的“大概模样”

 print(char[] s)  Prints an array of characters. The characters are converted into bytes according to the platform‘s default character encoding, and these bytes are written in exactly the manner of the write(int) method.

所以

        char[] cs = {‘1‘, ‘2‘, ‘3‘};
        System.out.println(cs);

打印:123

关键是,我在tips.Print中没有重载System.out.println(char[])!看不见上面的输出。

唯一的好处是:

        char[] cs = null;
        pln(cs);
        System.out.println(cs);

pln(Object)不怕null,而System.out.print(char[] s) 会抛出NullPointerException(java.io.Writer.write())。

bubuko.com,布布扣

记录一下。懒得改tips.Print了。

tips.Print的问题

原文:http://blog.csdn.net/yqj2065/article/details/39723377

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!