Java练习:tips.Print
在學習Java時和《編程導論(Java)》中,大量使用了重載的System.out.println()等類似的輸出語句。特別是書籍中,一行語句中包括System.out.println會顯得太長,超過一行代碼40個字符的限制,因而請靜態引入tips.Print并使用相應方法代替它們。通常以
- p替代System.out.print。
- pln替代System.out.println
《編程導論(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。能夠用?pln取代。
改動:
1.pln(char[] arr)
System.out.println有大量的重載方法,而tips.Print的pln僅僅有兩個重載方法。
對于char[],?pln(char[])與System.out.println(char[])就不一致了。
今天看一個貼子。上面有Java Puzzlers的第12個謎題,于是發現了這個問題。
public static void bug() { System.out.println(new char[]{'1', '2', '3'});pln(new char[]{'1', '2', '3'});pln(null);}輸出為:
123[C@78c45512
查看JDK源碼:
public void println(Object x) { String s = String.valueOf(x); synchronized (this) { print(s); newLine(); } }tips.Print中沒有重載System.out.println(char[])!因而char[]自己主動造型為Object。輸出為引用的“大概模樣”。
而System.out.println(char[])。其文檔說明:
?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.
所以輸出打印:123
這個bug也有一個優點:
? ? ? ? char[] cs = null;
? ? ? ? pln(cs);
? ? ? ? System.out.println(cs);?
pln(Object)不怕null。pln(cs)打印null。而System.out.print(cs) 會拋出NullPointerException(java.io.Writer.write())
2.pln(int[] arr)
為了打印int[],加入
public static void pln(int[] arr){System.out.print(java.util.Arrays.toString(arr));}?Java編程練習文件夾
總結
以上是生活随笔為你收集整理的Java练习:tips.Print的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用百度UMeditor富文本编辑器,修
- 下一篇: [Java] ApplicationCo