Java 格式化輸出 printf 用法
Java 中的 printf 方法用于格式化輸出。
格式化指定了輸出的形式,包括數(shù)字的精度、字符寬度、日期格式等等。下面是一些常用的格式化符號和用法:
字符串格式化
- %s : 輸出字符串
實例文章來源地址http://www.zghlxwxcb.cn/news/detail-732414.html
System.out.printf("%s", "hello world"); // 輸出 "hello world"
整數(shù)格式化
- %d : 輸出十進制整數(shù)
- %o : 輸出八進制整數(shù)
- %x : 輸出十六進制整數(shù)
- %X : 輸出大寫十六進制整數(shù)
實例
System.out.printf("%d %o %x %X", 10, 10, 10, 10); // 輸出 "10 12 a A"
浮點數(shù)格式化
%f : 輸出浮點數(shù)
%e : 輸出科學計數(shù)法表示的浮點數(shù)(小寫e)
%E : 輸出科學計數(shù)法表示的浮點數(shù)(大寫E)
%.nf : 控制小數(shù)點后的位數(shù),n為數(shù)字
實例
System.out.printf("%.2f %e %E", 3.1415926, 3.1415926, 3.1415926); // 輸出 "3.14 3.141593e+00 3.141593E+00"
布爾值格式化
- %b : 輸出布爾值
實例
System.out.printf("%b", true); // 輸出 "true"
字符格式化
- %c : 輸出字符
實例
System.out.printf("%c", 'a'); // 輸出 "a"
寬度和精度格式化
- %n$ : 指定第n個參數(shù)
- %m.n : 控制寬度和精度,m表示最小寬度,n表示小數(shù)點后的位數(shù)
實例
System.out.printf("%2d %5.2f %s", 10, 3.1415926, "hello"); // 輸出 "10 3.14 hello"
下面是 Java 中 printf 方法中可用的完整格式符號列表:
- %d:帶符號的十進制整數(shù)
- %o:不帶符號的八進制整數(shù)
- %x、%X:不帶符號的十六進制整數(shù),分別使用小寫字母和大寫字母表示
- %f、%F:帶小數(shù)點的十進制浮點數(shù),分別使用小寫字母和大寫字母表示
- %e、%E:帶指數(shù)的浮點數(shù),分別使用小寫字母和大寫字母表示
- %g、%G:根據(jù)數(shù)值大小自動選擇%f或%e格式,分別使用小寫字母和大寫字母表示
- %a、%A:十六進制浮點數(shù),分別使用小寫字母和大寫字母表示
- %c:字符類型,輸出單個字符
- %s:字符串類型,輸出字符串
- %n:換行符
- %%:輸出一個百分號%
- %h、%H:散列碼,分別使用十六進制和十六進制大寫字母表示
- %t、%T:日期和時間格式化,使用特定的轉換字符表示,例如%tY表示年份,%tB表示月份全稱
- %b、%B:布爾值類型,輸出true或false,分別使用小寫字母和大寫字母表示
- %S:輸出大寫字母的字符串
下面是 Java 中 printf 方法中可用于格式化日期的符號列表:文章來源:http://www.zghlxwxcb.cn/news/detail-732414.html
- %tB:本地化的月份全名
- %tb:本地化的月份縮寫
- %tA:本地化的星期全名
- %ta:本地化的星期縮寫
- %tY:四位數(shù)的年份
- %ty:兩位數(shù)的年份
- %tm:兩位數(shù)的月份
- %td:兩位數(shù)的日期
- %te:一位或兩位數(shù)的日期
- %tH:24小時制的小時數(shù)
- %tI:12小時制的小時數(shù)
- %tM:分鐘數(shù)
- %tS:秒數(shù)
- %tp:上午或下午
- %tZ:時區(qū)
實例
import java.util.Date;
/**
* 使用printf輸出
*/
/**關鍵技術點
* 使用java.io.PrintStream的printf方法實現(xiàn)C風格的輸出
* printf 方法的第一個參數(shù)為輸出的格式,第二個參數(shù)是可變長的,表示待輸出的數(shù)據(jù)對象
*/
public class Printf {
public static void main(String[] args) {
/*** 輸出字符串 ***/
// %s表示輸出字符串,也就是將后面的字符串替換模式中的%s
System.out.printf("%s", new Integer(1212));
// %n表示換行
System.out.printf("%s%n", "end line");
// 還可以支持多個參數(shù)
System.out.printf("%s = %s%n", "Name", "Zhangsan");
// %S將字符串以大寫形式輸出
System.out.printf("%S = %s%n", "Name", "Zhangsan");
// 支持多個參數(shù)時,可以在%s之間插入變量編號,1$表示第一個字符串,3$表示第3個字符串
System.out.printf("%1$s = %3$s %2$s%n", "Name", "san", "Zhang");
/*** 輸出boolean類型 ***/
System.out.printf("true = %b; false = ", true);
System.out.printf("%b%n", false);
/*** 輸出整數(shù)類型***/
Integer iObj = 342;
// %d表示將整數(shù)格式化為10進制整數(shù)
System.out.printf("%d; %d; %d%n", -500, 2343L, iObj);
// %o表示將整數(shù)格式化為8進制整數(shù)
System.out.printf("%o; %o; %o%n", -500, 2343L, iObj);
// %x表示將整數(shù)格式化為16進制整數(shù)
System.out.printf("%x; %x; %x%n", -500, 2343L, iObj);
// %X表示將整數(shù)格式化為16進制整數(shù),并且字母變成大寫形式
System.out.printf("%X; %X; %X%n", -500, 2343L, iObj);
/*** 輸出浮點類型***/
Double dObj = 45.6d;
// %e表示以科學技術法輸出浮點數(shù)
System.out.printf("%e; %e; %e%n", -756.403f, 7464.232641d, dObj);
// %E表示以科學技術法輸出浮點數(shù),并且為大寫形式
System.out.printf("%E; %E; %E%n", -756.403f, 7464.232641d, dObj);
// %f表示以十進制格式化輸出浮點數(shù)
System.out.printf("%f; %f; %f%n", -756.403f, 7464.232641d, dObj);
// 還可以限制小數(shù)點后的位數(shù)
System.out.printf("%.1f; %.3f; %f%n", -756.403f, 7464.232641d, dObj);
/*** 輸出日期類型***/
// %t表示格式化日期時間類型,%T是時間日期的大寫形式,在%t之后用特定的字母表示不同的輸出格式
Date date = new Date();
long dataL = date.getTime();
// 格式化年月日
// %t之后用y表示輸出日期的年份(2位數(shù)的年,如99)
// %t之后用m表示輸出日期的月份,%t之后用d表示輸出日期的日號
System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);
// %t之后用Y表示輸出日期的年份(4位數(shù)的年),
// %t之后用B表示輸出日期的月份的完整名, %t之后用b表示輸出日期的月份的簡稱
System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);
// 以下是常見的日期組合
// %t之后用D表示以 "%tm/%td/%ty"格式化日期
System.out.printf("%1$tD%n", date);
//%t之后用F表示以"%tY-%tm-%td"格式化日期
System.out.printf("%1$tF%n", date);
/*** 輸出時間類型***/
// 輸出時分秒
// %t之后用H表示輸出時間的時(24進制),%t之后用I表示輸出時間的時(12進制),
// %t之后用M表示輸出時間的分,%t之后用S表示輸出時間的秒
System.out.printf("%1$tH:%1$tM:%1$tS; %2$tI:%2$tM:%2$tS%n", date, dataL);
// %t之后用L表示輸出時間的秒中的毫秒
System.out.printf("%1$tH:%1$tM:%1$tS %1$tL%n", date);
// %t之后p表示輸出時間的上午或下午信息
System.out.printf("%1$tH:%1$tM:%1$tS %1$tL %1$tp%n", date);
// 以下是常見的時間組合
// %t之后用R表示以"%tH:%tM"格式化時間
System.out.printf("%1$tR%n", date);
// %t之后用T表示以"%tH:%tM:%tS"格式化時間
System.out.printf("%1$tT%n", date);
// %t之后用r表示以"%tI:%tM:%tS %Tp"格式化時間
System.out.printf("%1$tr%n", date);
/*** 輸出星期***/
// %t之后用A表示得到星期幾的全稱
System.out.printf("%1$tF %1$tA%n", date);
// %t之后用a表示得到星期幾的簡稱
System.out.printf("%1$tF %1$ta%n", date);
// 輸出時間日期的完整信息
System.out.printf("%1$tc%n", date);
}
}
/**
*printf方法中,格式為"%s"表示以字符串的形式輸出第二個可變長參數(shù)的第一個參數(shù)值;
*格式為"%n"表示換行;格式為"%S"表示將字符串以大寫形式輸出;在"%s"之間用"n$"表示
*輸出可變長參數(shù)的第n個參數(shù)值.格式為"%b"表示以布爾值的形式輸出第二個可變長參數(shù)
*的第一個參數(shù)值.
*/
/**
* 格式為"%d"表示以十進制整數(shù)形式輸出;"%o"表示以八進制形式輸出;"%x"表示以十六進制
* 輸出;"%X"表示以十六進制輸出,并且將字母(A、B、C、D、E、F)換成大寫.格式為"%e"表
* 以科學計數(shù)法輸出浮點數(shù);格式為"%E"表示以科學計數(shù)法輸出浮點數(shù),而且將e大寫;格式為
* "%f"表示以十進制浮點數(shù)輸出,在"%f"之間加上".n"表示輸出時保留小數(shù)點后面n位.
*/
/**
* 格式為"%t"表示輸出時間日期類型."%t"之后用y表示輸出日期的二位數(shù)的年份(如99)、用m
* 表示輸出日期的月份,用d表示輸出日期的日號;"%t"之后用Y表示輸出日期的四位數(shù)的年份
* (如1999)、用B表示輸出日期的月份的完整名,用b表示輸出日期的月份的簡稱."%t"之后用D
* 表示以"%tm/%td/%ty"的格式輸出日期、用F表示以"%tY-%tm-%td"的格式輸出日期.
*/
/**
* "%t"之后用H表示輸出時間的時(24進制),用I表示輸出時間的時(12進制),用M表示輸出時間
* 分,用S表示輸出時間的秒,用L表示輸出時間的秒中的毫秒數(shù)、用 p 表示輸出時間的是上午還是
* 下午."%t"之后用R表示以"%tH:%tM"的格式輸出時間、用T表示以"%tH:%tM:%tS"的格式輸出
* 時間、用r表示以"%tI:%tM:%tS %Tp"的格式輸出時間.
*/
/**
* "%t"之后用A表示輸出日期的全稱,用a表示輸出日期的星期簡稱.
*/
到了這里,關于【Java學習筆記】16.Java 格式化輸出 printf 用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!