在Blue Java中System.out.printf和System.out.format有什么区别?
Java 中
System.out.printf 和 System.out.format 的区别 核心结论
你观察到的二者用法、运行结果完全一致是正常现象,二者不存在任何功能、性能层面的差异,可以完全互换使用。
底层实现依据
System.out 是 java.io.PrintStream 类的实例,翻看OpenJDK中PrintStream的源码可以直接看到二者的关系:printf 本身就是一个仅调用format的包装方法,没有任何额外逻辑:
// 普通重载版本 public PrintStream printf(String format, Object ... args) { return format(format, args); } // 带指定Locale的重载版本 public PrintStream printf(Locale l, String format, Object ... args) { return format(l, format, args); }
设计两个功能完全一致方法的原因
完全是为了适配不同开发者的使用习惯:
- 从C/C++技术栈转Java的开发者更熟悉
printf的命名规则,提供这个方法可以降低学习适配成本 format的命名和Java生态内的其他同功能API保持一致,比如String.format,更符合Java自身的命名风格
使用建议
二者的参数规则、占位符语法、返回值、异常处理逻辑100%相同,实际开发中按照个人习惯或者团队统一编码规范选择即可,没有优劣之分。
内容的提问来源于stack exchange,提问作者Rhitam Chaudhury
相关产品推荐
相关产品推荐

