1. import java.util.Date;
    2. /**
    3. * 使用printf输出
    4. */
    5. /**关键技术点
    6. * 使用java.io.PrintStream的printf方法实现C风格的输出
    7. * printf 方法的第一个参数为输出的格式,第二个参数是可变长的,表示待输出的数据对象
    8. */
    9. public class Printf {
    10. public static void main(String[] args) {
    11. /*** 输出字符串 ***/
    12. // %s表示输出字符串,也就是将后面的字符串替换模式中的%s
    13. System.out.printf("%s", new Integer(1212));
    14. // %n表示换行
    15. System.out.printf("%s%n", "end line");
    16. // 还可以支持多个参数
    17. System.out.printf("%s = %s%n", "Name", "Zhangsan");
    18. // %S将字符串以大写形式输出
    19. System.out.printf("%S = %s%n", "Name", "Zhangsan");
    20. // 支持多个参数时,可以在%s之间插入变量编号,1$表示第一个字符串,3$表示第3个字符串
    21. System.out.printf("%1$s = %3$s %2$s%n", "Name", "san", "Zhang");
    22. /*** 输出boolean类型 ***/
    23. System.out.printf("true = %b; false = ", true);
    24. System.out.printf("%b%n", false);
    25. /*** 输出整数类型***/
    26. Integer iObj = 342;
    27. // %d表示将整数格式化为10进制整数
    28. System.out.printf("%d; %d; %d%n", -500, 2343L, iObj);
    29. // %o表示将整数格式化为8进制整数
    30. System.out.printf("%o; %o; %o%n", -500, 2343L, iObj);
    31. // %x表示将整数格式化为16进制整数
    32. System.out.printf("%x; %x; %x%n", -500, 2343L, iObj);
    33. // %X表示将整数格式化为16进制整数,并且字母变成大写形式
    34. System.out.printf("%X; %X; %X%n", -500, 2343L, iObj);
    35. /*** 输出浮点类型***/
    36. Double dObj = 45.6d;
    37. // %e表示以科学技术法输出浮点数
    38. System.out.printf("%e; %e; %e%n", -756.403f, 7464.232641d, dObj);
    39. // %E表示以科学技术法输出浮点数,并且为大写形式
    40. System.out.printf("%E; %E; %E%n", -756.403f, 7464.232641d, dObj);
    41. // %f表示以十进制格式化输出浮点数
    42. System.out.printf("%f; %f; %f%n", -756.403f, 7464.232641d, dObj);
    43. // 还可以限制小数点后的位数
    44. System.out.printf("%.1f; %.3f; %f%n", -756.403f, 7464.232641d, dObj);
    45. /*** 输出日期类型***/
    46. // %t表示格式化日期时间类型,%T是时间日期的大写形式,在%t之后用特定的字母表示不同的输出格式
    47. Date date = new Date();
    48. long dataL = date.getTime();
    49. // 格式化年月日
    50. // %t之后用y表示输出日期的年份(2位数的年,如99)
    51. // %t之后用m表示输出日期的月份,%t之后用d表示输出日期的日号
    52. System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);
    53. // %t之后用Y表示输出日期的年份(4位数的年),
    54. // %t之后用B表示输出日期的月份的完整名, %t之后用b表示输出日期的月份的简称
    55. System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);
    56. // 以下是常见的日期组合
    57. // %t之后用D表示以 "%tm/%td/%ty"格式化日期
    58. System.out.printf("%1$tD%n", date);
    59. //%t之后用F表示以"%tY-%tm-%td"格式化日期
    60. System.out.printf("%1$tF%n", date);
    61. /*** 输出时间类型***/
    62. // 输出时分秒
    63. // %t之后用H表示输出时间的时(24进制),%t之后用I表示输出时间的时(12进制),
    64. // %t之后用M表示输出时间的分,%t之后用S表示输出时间的秒
    65. System.out.printf("%1$tH:%1$tM:%1$tS; %2$tI:%2$tM:%2$tS%n", date, dataL);
    66. // %t之后用L表示输出时间的秒中的毫秒
    67. System.out.printf("%1$tH:%1$tM:%1$tS %1$tL%n", date);
    68. // %t之后p表示输出时间的上午或下午信息
    69. System.out.printf("%1$tH:%1$tM:%1$tS %1$tL %1$tp%n", date);
    70. // 以下是常见的时间组合
    71. // %t之后用R表示以"%tH:%tM"格式化时间
    72. System.out.printf("%1$tR%n", date);
    73. // %t之后用T表示以"%tH:%tM:%tS"格式化时间
    74. System.out.printf("%1$tT%n", date);
    75. // %t之后用r表示以"%tI:%tM:%tS %Tp"格式化时间
    76. System.out.printf("%1$tr%n", date);
    77. /*** 输出星期***/
    78. // %t之后用A表示得到星期几的全称
    79. System.out.printf("%1$tF %1$tA%n", date);
    80. // %t之后用a表示得到星期几的简称
    81. System.out.printf("%1$tF %1$ta%n", date);
    82. // 输出时间日期的完整信息
    83. System.out.printf("%1$tc%n", date);
    84. }
    85. }
    86. /**
    87. *printf方法中,格式为"%s"表示以字符串的形式输出第二个可变长参数的第一个参数值;
    88. *格式为"%n"表示换行;格式为"%S"表示将字符串以大写形式输出;在"%s"之间用"n$"表示
    89. *输出可变长参数的第n个参数值.格式为"%b"表示以布尔值的形式输出第二个可变长参数
    90. *的第一个参数值.
    91. */
    92. /**
    93. * 格式为"%d"表示以十进制整数形式输出;"%o"表示以八进制形式输出;"%x"表示以十六进制
    94. * 输出;"%X"表示以十六进制输出,并且将字母(A、B、C、D、E、F)换成大写.格式为"%e"表
    95. * 以科学计数法输出浮点数;格式为"%E"表示以科学计数法输出浮点数,而且将e大写;格式为
    96. * "%f"表示以十进制浮点数输出,在"%f"之间加上".n"表示输出时保留小数点后面n位.
    97. */
    98. /**
    99. * 格式为"%t"表示输出时间日期类型."%t"之后用y表示输出日期的二位数的年份(如99)、用m
    100. * 表示输出日期的月份,用d表示输出日期的日号;"%t"之后用Y表示输出日期的四位数的年份
    101. * (如1999)、用B表示输出日期的月份的完整名,用b表示输出日期的月份的简称."%t"之后用D
    102. * 表示以"%tm/%td/%ty"的格式输出日期、用F表示以"%tY-%tm-%td"的格式输出日期.
    103. */
    104. /**
    105. * "%t"之后用H表示输出时间的时(24进制),用I表示输出时间的时(12进制),用M表示输出时间
    106. * 分,用S表示输出时间的秒,用L表示输出时间的秒中的毫秒数、用 p 表示输出时间的是上午还是
    107. * 下午."%t"之后用R表示以"%tH:%tM"的格式输出时间、用T表示以"%tH:%tM:%tS"的格式输出
    108. * 时间、用r表示以"%tI:%tM:%tS %Tp"的格式输出时间.
    109. */
    110. /**
    111. * "%t"之后用A表示输出日期的全称,用a表示输出日期的星期简称.
    112. */import java.util.Date;
    113. /**
    114. * 使用printf输出
    115. */
    116. /**关键技术点
    117. * 使用java.io.PrintStream的printf方法实现C风格的输出
    118. * printf 方法的第一个参数为输出的格式,第二个参数是可变长的,表示待输出的数据对象
    119. */
    120. public class Printf {
    121. public static void main(String[] args) {
    122. /*** 输出字符串 ***/
    123. // %s表示输出字符串,也就是将后面的字符串替换模式中的%s
    124. System.out.printf("%s", new Integer(1212));
    125. // %n表示换行
    126. System.out.printf("%s%n", "end line");
    127. // 还可以支持多个参数
    128. System.out.printf("%s = %s%n", "Name", "Zhangsan");
    129. // %S将字符串以大写形式输出
    130. System.out.printf("%S = %s%n", "Name", "Zhangsan");
    131. // 支持多个参数时,可以在%s之间插入变量编号,1$表示第一个字符串,3$表示第3个字符串
    132. System.out.printf("%1$s = %3$s %2$s%n", "Name", "san", "Zhang");
    133. /*** 输出boolean类型 ***/
    134. System.out.printf("true = %b; false = ", true);
    135. System.out.printf("%b%n", false);
    136. /*** 输出整数类型***/
    137. Integer iObj = 342;
    138. // %d表示将整数格式化为10进制整数
    139. System.out.printf("%d; %d; %d%n", -500, 2343L, iObj);
    140. // %o表示将整数格式化为8进制整数
    141. System.out.printf("%o; %o; %o%n", -500, 2343L, iObj);
    142. // %x表示将整数格式化为16进制整数
    143. System.out.printf("%x; %x; %x%n", -500, 2343L, iObj);
    144. // %X表示将整数格式化为16进制整数,并且字母变成大写形式
    145. System.out.printf("%X; %X; %X%n", -500, 2343L, iObj);
    146. /*** 输出浮点类型***/
    147. Double dObj = 45.6d;
    148. // %e表示以科学技术法输出浮点数
    149. System.out.printf("%e; %e; %e%n", -756.403f, 7464.232641d, dObj);
    150. // %E表示以科学技术法输出浮点数,并且为大写形式
    151. System.out.printf("%E; %E; %E%n", -756.403f, 7464.232641d, dObj);
    152. // %f表示以十进制格式化输出浮点数
    153. System.out.printf("%f; %f; %f%n", -756.403f, 7464.232641d, dObj);
    154. // 还可以限制小数点后的位数
    155. System.out.printf("%.1f; %.3f; %f%n", -756.403f, 7464.232641d, dObj);
    156. /*** 输出日期类型***/
    157. // %t表示格式化日期时间类型,%T是时间日期的大写形式,在%t之后用特定的字母表示不同的输出格式
    158. Date date = new Date();
    159. long dataL = date.getTime();
    160. // 格式化年月日
    161. // %t之后用y表示输出日期的年份(2位数的年,如99)
    162. // %t之后用m表示输出日期的月份,%t之后用d表示输出日期的日号
    163. System.out.printf("%1$ty-%1$tm-%1$td; %2$ty-%2$tm-%2$td%n", date, dataL);
    164. // %t之后用Y表示输出日期的年份(4位数的年),
    165. // %t之后用B表示输出日期的月份的完整名, %t之后用b表示输出日期的月份的简称
    166. System.out.printf("%1$tY-%1$tB-%1$td; %2$tY-%2$tb-%2$td%n", date, dataL);
    167. // 以下是常见的日期组合
    168. // %t之后用D表示以 "%tm/%td/%ty"格式化日期
    169. System.out.printf("%1$tD%n", date);
    170. //%t之后用F表示以"%tY-%tm-%td"格式化日期
    171. System.out.printf("%1$tF%n", date);
    172. /*** 输出时间类型***/
    173. // 输出时分秒
    174. // %t之后用H表示输出时间的时(24进制),%t之后用I表示输出时间的时(12进制),
    175. // %t之后用M表示输出时间的分,%t之后用S表示输出时间的秒
    176. System.out.printf("%1$tH:%1$tM:%1$tS; %2$tI:%2$tM:%2$tS%n", date, dataL);
    177. // %t之后用L表示输出时间的秒中的毫秒
    178. System.out.printf("%1$tH:%1$tM:%1$tS %1$tL%n", date);
    179. // %t之后p表示输出时间的上午或下午信息
    180. System.out.printf("%1$tH:%1$tM:%1$tS %1$tL %1$tp%n", date);
    181. // 以下是常见的时间组合
    182. // %t之后用R表示以"%tH:%tM"格式化时间
    183. System.out.printf("%1$tR%n", date);
    184. // %t之后用T表示以"%tH:%tM:%tS"格式化时间
    185. System.out.printf("%1$tT%n", date);
    186. // %t之后用r表示以"%tI:%tM:%tS %Tp"格式化时间
    187. System.out.printf("%1$tr%n", date);
    188. /*** 输出星期***/
    189. // %t之后用A表示得到星期几的全称
    190. System.out.printf("%1$tF %1$tA%n", date);
    191. // %t之后用a表示得到星期几的简称
    192. System.out.printf("%1$tF %1$ta%n", date);
    193. // 输出时间日期的完整信息
    194. System.out.printf("%1$tc%n", date);
    195. }
    196. }
    197. /**
    198. *printf方法中,格式为"%s"表示以字符串的形式输出第二个可变长参数的第一个参数值;
    199. *格式为"%n"表示换行;格式为"%S"表示将字符串以大写形式输出;在"%s"之间用"n$"表示
    200. *输出可变长参数的第n个参数值.格式为"%b"表示以布尔值的形式输出第二个可变长参数
    201. *的第一个参数值.
    202. */
    203. /**
    204. * 格式为"%d"表示以十进制整数形式输出;"%o"表示以八进制形式输出;"%x"表示以十六进制
    205. * 输出;"%X"表示以十六进制输出,并且将字母(A、B、C、D、E、F)换成大写.格式为"%e"表
    206. * 以科学计数法输出浮点数;格式为"%E"表示以科学计数法输出浮点数,而且将e大写;格式为
    207. * "%f"表示以十进制浮点数输出,在"%f"之间加上".n"表示输出时保留小数点后面n位.
    208. */
    209. /**
    210. * 格式为"%t"表示输出时间日期类型."%t"之后用y表示输出日期的二位数的年份(如99)、用m
    211. * 表示输出日期的月份,用d表示输出日期的日号;"%t"之后用Y表示输出日期的四位数的年份
    212. * (如1999)、用B表示输出日期的月份的完整名,用b表示输出日期的月份的简称."%t"之后用D
    213. * 表示以"%tm/%td/%ty"的格式输出日期、用F表示以"%tY-%tm-%td"的格式输出日期.
    214. */
    215. /**
    216. * "%t"之后用H表示输出时间的时(24进制),用I表示输出时间的时(12进制),用M表示输出时间
    217. * 分,用S表示输出时间的秒,用L表示输出时间的秒中的毫秒数、用 p 表示输出时间的是上午还是
    218. * 下午."%t"之后用R表示以"%tH:%tM"的格式输出时间、用T表示以"%tH:%tM:%tS"的格式输出
    219. * 时间、用r表示以"%tI:%tM:%tS %Tp"的格式输出时间.
    220. */
    221. /**
    222. * "%t"之后用A表示输出日期的全称,用a表示输出日期的星期简称.
    223. */