如何在Java中使用String.format()?

26

我是Java的初学者,正在观看thenewboston的Java教程(Youtube)。在第36-37个教程中,他开始使用String.format(); 这是他在之前的教程中没有解释过的。这是他正在制作的一个类的代码:

    public class tuna {
        private int hour;
        private int minute;
        private int second;

        public void setTime(int h, int m, int s){
            hour = ((h >= 0 && h < 24) ? h : 0);
            minute = ((m >= 0 && m < 60) ? m : 0);
            second = ((s >= 0 && s < 60) ? s : 0);
        }

        public String toMilitary(){
            return String.format("%02d:%02d:%02d", hour, minute, second);
        }
    }

所以他正在进行某种军事时间课程并使用字符串格式化。所以我想问的是,是否有人能够解释一下String.format()如何工作以及上面的格式化是如何工作的。感谢帮助!


2
该方法使用在Formatter javadocs中描述的Formatter语法。 - rgettman
@regettman,我正要发表评论,但你已经发了,所以现在如果我发表评论就感觉像是抄袭 :P - Tim B
2个回答

42

它的工作方式与C语言中的printf()函数相同。

%s for String 
%d for int 
%f for float

在表达式、变量或基本类型作为第二个参数的情况下,String APIformat方法会在其前面添加0来填充数字,这些0将以满足format方法的第一个参数所规定的方式进行填充。


11

它只需要变量 hourminutesecond,并将其格式化为 05:23:42。也许另一个例子是这样的:

String s = String.format("Hello %s answered your question", "placeofm");

当你在控制台打印字符串时,它会显示为:

When you print the string to show it in the console it would look like this
System.out.println(s);

Hello placeofm回答了你的问题

占位符%02d表示带有两位数字的十进制数。%s用于像上面示例中的我的姓名一样的字符串。如果您想学习Java,就必须阅读文档。这里是String类的文档。您可以找到解释得很好的格式化方法。阅读这些文档对于不仅仅是在Java中都非常重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接