我无法理解“此示例中的String.format()函数有帮助吗?”

时间:2019-05-30 21:32:15

标签: java

这是一个从我的机器上获取Mac地址的示例,但我不明白sting.format函数的语法 这是示例。

public String getMACIdentifier(NetworkInterface network)
{
    StringBuilder identifier = new StringBuilder();
    try {
        byte[] macBuffer = network.getHardwareAddress();
        if (macBuffer != null) {
            for (int i = 0; i < macBuffer.length; i++) {
                identifier.append(
                    String.format("%02X%s",macBuffer[i],
                    (i < macBuffer.length - 1) ? "-" : ""));
            }
        } else {
            return "---";
        }
    } catch (SocketException ex) {
        ex.printStackTrace();
    }

    return identifier.toString();
}

2 个答案:

答案 0 :(得分:2)

格式化的字符串是编程语言的常见功能。我会推荐reading up关于它们在Java中的工作方式。

在您的特定示例中,格式字符串"%02X%s"将在字符串(由%02X代表)旁边打印一个十六进制数字(由"%s"代表)。十六进制数字将至少使用 2个字符打印;如果数字只能用一个字符表示,则空白处将用“ 0”字符“填充”。这被编码为"%02X"。字符串字符将为"-"""),具体取决于三元运算符(test ? true_value : false_value)的结果。

答案 1 :(得分:0)

您尝试过吗?

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());
}

输出

10-01-02-30-00

"%02X%s"

  • %02X是十六进制格式,02是指最小字符数({0x1打印为0x01
  • %s这是用于字符串格式