java 中 printf()语句的理解


 

对print和println的理解很简单,今天突然接触到printf(),有点懵,整理了下也帮自己理一理


 

printf是格式化输出的形式

下在举个例子:

复制代码
package other;
public class TestPrint {                         //声明打印测试类
  public static void main(String[] args) {          //主方法
     int i = 4;                          //声明int类型i
   
double j = 5;                        //声明double类型j    System.out.print("用print输出i:"+ i);          //对比print()、println()、printf()    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

复制代码

重点来看语句:

System.out.printf("i的值为%d,j的值为%f", i,j);

“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"是一个字符值的点位符的意思。

 
复制代码
public class TestPrint {
  public static void main(String[] args) {
     int i = 4;
     double j = 5.000f;
     System.out.printf(
"i的值为%5d,\n", i); // %与d之间的数字5的意思是插入五个占位符 \n空格符      System.out.printf("i的值为%3d,j的值为%.2f", i,j); //j的值为%.2f 意思是,保留小数点后2位
  } }

运行结果为:

i的值为    4,

i的值为 4,j的值为5.00

 
复制代码

 

复制代码
public class TestPrint {
  public static void main(String[] args) {
    int i = 4;
    double j = 5.000f;
   System.out.printf("i的值为%05d,\n", i);      //"%05d"的意思是输出5个占位符,如果数字不足5位的话就在左边以0相补
  }
}

运行结果为:
i的值为00004,
复制代码

 

总结

System.out.printf("i的值为%d,j的值为%f", j,i)

%+(数字:占位作用,控制输出格式整齐一致)+数据类型(对应数据类型的字母简写)  j,i对应的数字和类型,严格按需















posted @   斑马森林  阅读(2402)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示