首页 > 代码库 > tips.Print的问题
tips.Print的问题
《编程导论(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[]),于是出了问题。
今天看一个贴子,上面有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())。
记录一下。懒得改tips.Print了。
tips.Print的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。