1. 程式人生 > 其它 >Java中print、printf、println的區別詳解

Java中print、printf、println的區別詳解

Java中print、printf、println的區別詳解

printf主要是繼承了C語言的printf的一些特性,可以進行格式化輸出,

print就是一般的標準輸出,但是不換行

println和print基本沒什麼差別,就是最後會換行

System.out.printf("the number is: d",t);
參照JAVA API的定義如下:

'd' 整數 結果被格式化為十進位制整數
'o' 整數 結果被格式化為八進位制整數
'x', 'X' 整數 結果被格式化為十六進位制整數
'e', 'E' 浮點 結果被格式化為用電腦科學記數法表示的十進位制數
'f' 浮點 結果被格式化為十進位制數


'g', 'G' 浮點 根據精度和舍入運算後的值,使用電腦科學記數形式或十進位制格式對結果進行格式化。
'a', 'A' 浮點 結果被格式化為帶有效位數和指數的十六進位制浮點數

println("test")相當於print("test\n")就是一般的輸出字串

print\println\printf的區別

print將它的引數顯示在命令視窗,並將輸出游標定位在所顯示的最後一個字元之後。

println 將它的引數顯示在命令視窗,並在結尾加上換行符,將輸出游標定位在下一行的開始。

printf是格式化輸出的形式。

舉個例子:

package other;

public class TestPrint {

public static void main(String[] args) {

int i = 4;

double j = 5;

System.out.print("用print輸出i:"+ i);

System.out.println( "用println輸出i:"+ i);

System.out.printf("i的值為%d,j的值為%f", i,j);

}

}

執行結果為:

用print輸出i:4用println輸出i:4

i的值為4,j的值為5.000000

可以看到,用print輸出i後,沒有換行,用println輸出的結果直接在print輸出語句後面,而輸出println後換行了,所以用printf輸出時,在第二行

輸出。

我們再來看printf:

“i的值為%d,j的值為%f”這個字串中的"%d"變為i的值了,而"%f"變為了j的值了!

這裡,"%d"的意思是一個int值的佔位符,"%f"為一個double 或float值的點位符,這個變數的引數在後面提供。注意的是實參名必須按順序排

。不然就會錯了。而且型別也要相符。如果我們把語句改為

System.out.printf("i的值為%d,j的值為%f", j,i);//i和j位置反了

這時就有錯了因為"%d"對應的引數變為j,"%f"對應的變為i了,而j是double的,與"%d"是int形的不一致。所以有錯了。

還有"%s"是一個字串值的點位符的意思。"%c"是一個字元值的點位符的意思。

可能讀者還會問為什麼j輸出變成了5.000000?那是因為double是預設有6位小數的(這個可能和系統電腦有關,有的不是6位吧)但是如果你想

只要輸出兩位小數行不行?可以啊!只要改下語句就行了!

System.out.printf("i的值為%d,j的值為%.2f", i,j);

這裡的"%.2f"的意思是輸出兩位小數點。如果想輸出三位那就"%.3f"。

說到這裡你會發現原來printf也很有用的。這樣可以控制輸出的格式。

再學多點知識吧,將程式碼改為以下:

public class TestPrint {

public static void main(String[] args) {

int i = 4;

double j = 5.000f;

System.out.printf("i的值為],\n", i);

System.out.printf("i的值為=,j的值為%.2f", i,j);

}

}

執行結果為:

i的值為4,

i的值為 4,j的值為5.00

原來在"%"與"d"之間加個數5的意思是輸出5個佔位符。預設向右對齊。這樣的輸出是很有用的,比如你想輸出一個表格,因各個數大小不一,有的5位有的4位,這樣輸出的的表格結果就對不齊了。如果將輸出結果全部為同一樣的佔位符數。那樣就對齊了。呵呵。

除了"%d"可以這樣外,別的也可以,讀者不防試試。會有很多收穫的。

我們再試著將程式碼改一下:

public class TestPrint {

public static void main(String[] args) {

int i = 4;

double j = 5.000f;

System.out.printf("i的值為d,\n", i);

}

}

執行結果為:

i的值為00004,

哈哈,原來"d"的意思是輸出5個佔位符,如果數字不足5的話就有左邊以0相補