1. 程式人生 > 其它 >print println printf sprintf 區別與聯絡

print println printf sprintf 區別與聯絡

print  

是函式,可以返回一個值,只能有一個引數。

它的引數顯示在命令視窗,不換行

println  

與print唯一的區別是println換行輸出。

它的引數顯示在命令視窗,換行

printf  

也是函式,把文字格式化以後輸出,直接系統呼叫進行IO,他是非緩衝的。

printf是格式化輸出的形式。

%d 按十進位制整型資料的實際長度輸出。
%ld 輸出長整型資料。
%md m 為指定的輸出欄位的寬度。如果資料的位數小於 m,則左端補以空格,若大於 m,則按實際位數輸出。
%u 輸出無符號整型(unsigned)。輸出無符號整型時也可以用 %d,這時是將無符號轉換成有符號數,然後輸出。但程式設計的時候最好不要這麼寫,因為這樣要進行一次轉換,使 CPU 多做一次無用功。
%c 用來輸出一個字元。
%f 用來輸出實數,包括單精度和雙精度,以小數形式輸出。不指定欄位寬度,由系統自動指定,整數部分全部輸出,小數部分輸出 6 位,超過 6 位的四捨五入。
%.mf 輸出實數時小數點後保留 m 位,注意 m 前面有個點。
%o 以八進位制整數形式輸出,這個就用得很少了,瞭解一下就行了。
%s 用來輸出字串。用 %s 輸出字元串同前面直接輸出字串是一樣的。但是此時要先定義字元陣列或字元指標儲存或指向字串,這個稍後再講。
%x(或 %X 或 %#x 或 %#X) 以十六進位制形式輸出整數,這個很重要。
  1. printf("Hello World!\n"); // \n表示換行
  2. printf("%d\n", i);   //%d是輸出控制符,d 表示十進位制,後面的 i 是輸出引數
  3. printf("%d %d\n", i, j);
  4. printf("i = %d, j = %d\n", i, j);

下在舉個例子:

package other;

public class TestPrint {undefined

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"是一個字元值的點位符的意思。

如果只要輸出量為小數,語句改為:System.out.printf("i的值為%d,j的值為%.2f", i,j);

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

printf可以控制輸出的格式。

將程式碼改為以下:

public class TestPrint {undefined

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 {undefined

public static void main(String[] args) {undefined

int i = 4;

double j = 5.000f;

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

}

}

執行結果為:

i的值為00004,

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