字符串格式化拼接
1 String直接通过+相加
2 Stringbuffer来append
3 MessageFormat.format
4 String.format
5 其它
先说下性能 Stringbuffer来append 要优于其它方式
再说下方便 String.format 是最方便的,但是性能要慢
下面是String.format的使用:
//1 字符串格式化 String类型 %s //如果后面的数组参数个数超过占位符数,能够正常格式化显示,因为是按下标替代。 //如果后面的数组参数个数少于占位符数,则会抛出异常 java.util.MissingFormatArgumentException,意思就是某个占位符缺失格式化的参数值。 // String stringTest = String.format("测试字符串格式化(%s,%s)", "aaa","bbb");//正确适用字符串格式化 // String stringTest = String.format("测试字符串格式化(%s)", "aaa");//正确适用字符串格式化 // String stringTest = String.format("测试字符串格式化(%s)", "aaa","bbb");//能正常显示aaa,按下标替代格式化,bbb是多余的 // String stringTest = String.format("测试字符串格式化(%s,%s,%s)", "aaa","bbb");//错误使用 MissingFormatArgumentException //字符格式化 Char类型 %c //String charTest = String.format("测试字符格式化%c", "A");//错误使用 "A"应该写成'A' //String charTest = String.format("测试字符格式化%c", 'A');//正确适用字符格式化 //布尔值格式化 Boolean类型 %b //String boolTest = String.format("测试布尔值格式化%b", 2-4); //整数格式化 %d 十进制 %x 十六进制 %o 八进制 //String IntegerTest = String.format("测试整数值格式化%d", 99); //浮点数格式化 %f %a十六进制浮点 //String FloatTest = String.format("测试浮点值格式化%f", 99.9f);//将用默认的6位小数输出 //String FloatTest = String.format("测试浮点值格式化%.1f", 99.9f);//.1保留1位小数 //百分比格式化 %% //String pecentTest = String.format("测试百分比格式化%d%%", 70);//70% %d占位整数 %%占位% 最后拼接70% //换行 %n //String newlineTest = String.format("测试换行格式化%n被换行显示的文字"); //数值加正负 %+d %-d %+f %-f //String plusTest =String.format("测试正数格式化%+d", 99); //String minusTest =String.format("测试负数格式化%+d", -99); //日期格式化 %tx x是日期的格式,包括有(c,F,D,r,T,R),例如:%tc //Date now = new Date(); //String fullTest = String.format("测试完整日期格式(%tc)", now);//星期一 二月 12 10:29:43 CST 2018 //String yyyyMMddTest = String.format("测试日期格式(%tD)", now);//02/12/18 //String yyyyMMddTest = String.format("测试日期格式(%tF)", now);//2018-02-12 //String time12Test = String.format("测试12小时时间格式(%tr)", now);//10:33:13 上午 //String time24Test = String.format("测试24小时时间格式(%tT)", now);//10:34:13 //String timeHMTest = String.format("测试时分格式(%tR)", now);//10:35 // String str=String.format(Locale.US,"测试英文月份简称:%tb",now);//Feb // str = String.format("测试中文月份简称:%tb",now);//二月 // str=String.format(Locale.US,"测试英文月份全称:%tB",now);//February // str = String.format("测试中文月份全称:%tB",now);//二月 // str=String.format(Locale.US,"测试英文星期简称:%ta",now);//Mon // str = String.format("测试中文星期简称:%ta",now);//星期一 // str=String.format(Locale.US,"测试英文星期全称:%tA",now);//Monday // str = String.format("测试中文星期全称:%tA",now);//星期一 // str = String.format("测试年前两位:%tC",now);//20 // str = String.format("测试年后两位:%ty",now);//18 // str = String.format("测试当天在当年中的天数:%tj",now);//043 // str = String.format("测试月:%tm",now);//02 // str = String.format("测试日,两位不够补0:%td",now);//12 // str = String.format("测试日,一位:%te",now);//02 // str = String.format("测试24时,两位不够补0:%tH",now);//11 // str = String.format("测试12时,两位不够补0:%tI",now);//11 // str = String.format("测试24时,不补0:%tk",now);//11 // str = String.format("测试12时,不补0:%tl",now);//11 // str = String.format("测试分,两位不够补0:%tM",now);//12 // str = String.format("测试秒,两位不够补0:%tS",now);//10 // str = String.format("测试3位数字的毫秒(不足3位前面补0):%tL",now);//086 // str = String.format("测试9位数字的毫秒(不足9位前面补0):%tN",now);//255000000 // str = String.format(Locale.US,"测试小写字母的上午或下午(英):%tp",now);//am // str = String.format("测试小写字母的上午或下午(中):%tp",now);//上午 // str = String.format("测试相对于GMT的RFC822时区的偏移量:%tz",now);//+0800 // str = String.format("测试时区缩写:%tZ",now);//CST // str = String.format("测试1970-1-1 00:00:00 到现在所经过的秒数:%ts", now);//1518405713 // str = String.format("测试1970-1-1 00:00:00 到现在所经过的毫秒数:%tQ", now);//1518405768493
MessageFormat.format的使用:
String str = MessageFormat.format("测试通过MessageFormat格式化{0},{1}", "1111","22222");

浙公网安备 33010602011771号