Java练习:tips.Print
在學(xué)習(xí)Java時(shí)和《編程導(dǎo)論(Java)》中,大量使用了重載的System.out.println()等類似的輸出語(yǔ)句。特別是書(shū)籍中,一行語(yǔ)句中包括System.out.println會(huì)顯得太長(zhǎng),超過(guò)一行代碼40個(gè)字符的限制,因而請(qǐng)靜態(tài)引入tips.Print并使用相應(yīng)方法代替它們。通常以
- p替代System.out.print。
- pln替代System.out.println
《編程導(dǎo)論(Java)》代碼庫(kù)中有tips.Print,學(xué)習(xí)設(shè)計(jì)模式時(shí)使用的是tool.Print。
package tips; import java.io.PrintStream; /*** 到處都是System.out.println().假設(shè)一個(gè)例程中使用它們較多,請(qǐng)使用本類。* 1.2.1類體結(jié)構(gòu),練習(xí)要求閱讀本類。* @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); } /** * 使用指定格式字符串和參數(shù),打印格式化的字符串。
*/ 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(); } }
對(duì)于大量的System.out.println。能夠用?pln取代。
改動(dòng):
1.pln(char[] arr)
System.out.println有大量的重載方法,而tips.Print的pln僅僅有兩個(gè)重載方法。
對(duì)于char[],?pln(char[])與System.out.println(char[])就不一致了。
今天看一個(gè)貼子。上面有Java Puzzlers的第12個(gè)謎題,于是發(fā)現(xiàn)了這個(gè)問(wèn)題。
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中沒(méi)有重載System.out.println(char[])!因而char[]自己主動(dòng)造型為Object。輸出為引用的“大概模樣”。
而System.out.println(char[])。其文檔說(shuō)明:
?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
這個(gè)bug也有一個(gè)優(yōu)點(diǎn):
? ? ? ? char[] cs = null;
? ? ? ? pln(cs);
? ? ? ? System.out.println(cs);?
pln(Object)不怕null。pln(cs)打印null。而System.out.print(cs) 會(huì)拋出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編程練習(xí)文件夾
總結(jié)
以上是生活随笔為你收集整理的Java练习:tips.Print的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 使用百度UMeditor富文本编辑器,修
- 下一篇: EntityFramework Core