Java 我无法理解“本例中的String.format()函数有什么帮助吗?”

Java 我无法理解“本例中的String.format()函数有什么帮助吗?”,java,Java,这是一个从我的机器上获取mac地址的示例,但我无法理解sting.format函数的语法 这是一个例子 公共字符串getMACIdentifierNetworkInterface网络 { StringBuilder标识符=新的StringBuilder; 试一试{ 字节[]macBuffer=network.getHardwareAddress; 如果macBuffer!=null{ 对于int i=0;i

这是一个从我的机器上获取mac地址的示例,但我无法理解sting.format函数的语法 这是一个例子

公共字符串getMACIdentifierNetworkInterface网络 { StringBuilder标识符=新的StringBuilder; 试一试{ 字节[]macBuffer=network.getHardwareAddress; 如果macBuffer!=null{ 对于int i=0;i格式化字符串是编程语言的一个常见特性。我将推荐它们如何在Java中工作

在您的特定示例中,格式字符串%02X%s将在由%s表示的字符串旁边打印一个由%02X表示的十六进制数字。十六进制数将使用至少2个字符打印;如果数字只能用一个字符表示,则空格将用“0”字符填充。代码为%02X。根据三元运算符测试的结果,字符串将为-或空?真值:假值。

你试过吗

public static void main(String[] args) {
    StringBuilder identifier = new StringBuilder();
    byte[] macBuffer = new byte[5];

    macBuffer[0] = 0x10;
    macBuffer[1] = 0x1;
    macBuffer[2] = 0x02;
    macBuffer[3] = 0x30;

    for (int i = 0; i < macBuffer.length; i++) {
        identifier.append(
                String.format("%02X%s", macBuffer[i],
                        (i < macBuffer.length - 1) ? "-" : ""));
    }

    System.out.println(identifier.toString());
}
%02X%s

%02X这是十六进制格式,02表示最小字符数0x1,打印为0x01 %这是字符串格式 您是否阅读了上的文档,从而获得了的完整描述?最多使用2个字符是错误的,这意味着至少有2个字符。-此外,不是null,是空字符串。Null是完全不同的。
10-01-02-30-00