print println printf sprintf 區別與聯絡
是函式,可以返回一個值,只能有一個引數。
它的引數顯示在命令視窗,不換行
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) | 以十六進位制形式輸出整數,這個很重要。 |
- printf("Hello World!\n"); // \n表示換行
- printf("%d\n", i); //%d是輸出控制符,d 表示十進位制,後面的 i 是輸出引數
- printf("%d %d\n", i, j);
- 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相補