举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > java打印格式化 Java 打印格式

java打印格式化 Java 打印格式

2023-03-06 08:20 Java教程

java打印格式化 Java 打印格式

java打印格式化

Java 打印格式化是指使用 Java 语言来格式化输出,以便更好地显示信息。它可以帮助我们将复杂的数据结构转换为易于阅读的文本,并且可以使用不同的格式来表示不同的数据类型。

Java 打印格式化有很多方法,其中最常用的是 printf() 和 format() 方法。printf() 方法可以将一个字符串作为参数传递,并使用特定的格式进行打印。format() 方法也可以将一个字符串作为参数传递,但是它还可以使用不同的格式化字符来打印不同的数据类型。

此外,Java 还提供了一些其他方法来帮助我们进行打印格式化:

String.format()  // 使用特定的格式将对象转换成字符串 
System.out.printf() // 在屏幕上打印一个字符串 
System.out.format() // 在屏幕上打印一个对象 
PrintWriter.printf() // 向文本文件中写入一行字符串 
PrintWriter.format() // 向文本文件中写入一行对象 
Formatter.format() // 向流中写入一行字符串 
Formatter.printf() // 向流中写入一行对象 

此外,Java 还支持使用 printf 样式语法来创建格式化字符串。这些语法可以帮助我们在 Java 的 printf 或 format 方法中创建复杂的样式。例如:

%[argument_index$][flags][width][.precision]conversion

argument_index$ 用于声明要传递到 printf 或 format 方法中的参数位置;flags 用于声明要应用到语法上的特定修饰符;width 用于声明要应用到语法上的特定宽度;precision 用于声明要应用到语法上的特定小数位数;conversion 用于声明要应用到语法上的特定转换方式。

总之,Java 打印格式化是 Java 语言中非常重要而有用的功能之一。它能够帮助我们将复杂的信息快速、准确地呈现出来,而无需过多额外工作就能得到想要的效果。因此,如果你想要快速、准确地呈现信息时就应当考虑使用 Java 的打印格式化功能。

Java 打印格式

Java格式 - Java 打印格式


不同的格式字符可以格式化不同数据类型的值。例如,“s"用于将值格式化为字符串。

Java 打印格式化类型可以将数据类型格式化为四种类型:

  • 一般格式化
  • 字符格式化
  • 数字格式化
  • 日期/时间格式

大写变量

许多转换字符具有大写变体。例如,“S"是“s"的大写变体。

大写变量将格式化的输出转换为大写。

下面的代码演示了使用大写变量“S"的效果。

public class Main {
  public static void main(String[] args) {
    System.out.printf("%s and  %<S", "abc");
  }
}

上面的代码生成以下结果。

一般格式化

一般格式化可以格式化任何数据类型的值。

下表列出了可用的转化根据一般格式类别。

  • 转换字母: b
    大写: B
    基于参数输出“true”或“false”。 “false”表示空参数和false布尔参数。 否则,“真”。
  • 转换字母: h
    大写: H
    以字符串的参数的十六进制格式输出哈希码。 如果参数为null,它会产生“null”。
  • 转换字母: s
    大写: S
    输出参数的字符串表示形式。
    如果参数为null,它会产生一个“null”字符串。 如果参数实现了Formattable接口,它将调用参数的formatTo()方法。
    如果参数不实现Formattable接口,则调用toString()方法。

一般格式化的格式说明符的一般语法是

%<argument_index$><flags><width><.precision><conversion>

width 指定输出中的最小字符数。

如果字符串表示的长度小于width值,结果将用空格填充。

默认情况下,空格填充在参数值的左侧执行。如果使用“ - "标志,则向右执行空格填充。

宽度和精度一起决定结果的最终内容。

precision指定输出的最大字符数。在应用宽度之前,精度应用于参数。

如果精度小于参数的长度,参数被截断为在精度值中设置的长度,并执行空间填充以将长度与宽度的值相匹配。

考虑下面的代码段:

System.out.printf(""%4.1s"",  "abc");

上面的代码生成以下结果。


例子

以下是使用布尔,字符串和散列码格式转换的一些示例。

public class Main {
  public static void main(String[] args) {
    // Boolean conversion
    System.out.printf(""%b", "%6b", "%.4b"%n", true, false, true);
    System.out.printf(""%b", "%6b", "%.4b"%n", "A", "B", "C");
    System.out.printf(""%B", "%6b",  "%.4b"%n", "A", "B", "C");
    System.out.printf("%b %n", 2014);
    System.out.printf("%b %n", new Object());

    // String conversion
    System.out.printf(""%s",  "%5s",  "%.3s"%n", "A", "B", "C");
    System.out.printf(""%S",  "%5S", "%.3S"%n", "A", "B", "C");

    // Use "-" flag to left-justify the result. 
    // width requires the "-" flag
    System.out.printf(""%S", "%-5S", "%.3S"%n", "A", "B", "C");
    System.out.printf("%s %n", 2014);
    System.out.printf("%s %n", true);
    System.out.printf("%s %n", new Object());

    // Hash Code conversion
    System.out.printf(""%h", "%5h", "%.3h"%n", "A", "B", "A");
    System.out.printf(""%H", "%5H",  "%.3H"%n", "A", "B", "A");
    System.out.printf("%h %n", 2014);
    System.out.printf("%h %n", true);
    System.out.printf("%h %n", new Object());
  }
}

上面的代码生成以下结果。

自定义格式化

我们可以通过“s"和“S"转换使用自定义格式。

如果值实现 java.util.Formattable 界面,“s"或“S"转换调用值的“ formatTo()方法来获取格式化结果。

formatTo()方法从该值可以接受一个Formatter对象,flags,width和precision作为参数。

我们可以检查备用标志“#"。 我们可以支持“s"转换的大写variantS。

import java.util.Formattable;
import java.util.FormattableFlags;
import java.util.Formatter;

class MyFormattableObject implements Formattable {
  public void formatTo(Formatter formatter, int flags, int width, int precision) {
    int alternateFlagValue = FormattableFlags.ALTERNATE & flags;
    if (alternateFlagValue == FormattableFlags.ALTERNATE) {
      System.out.println("FormattableFlags.ALTERNATE");
    }
    int upperFlagValue = FormattableFlags.UPPERCASE & flags;
    if (upperFlagValue == FormattableFlags.UPPERCASE) {
      System.out.println(FormattableFlags.UPPERCASE);
    }
    int leftJustifiedFlagValue = FormattableFlags.LEFT_JUSTIFY & flags;
    if (leftJustifiedFlagValue == FormattableFlags.LEFT_JUSTIFY) {
      System.out.println("Left-justified flag "-" is used");
    } else {
      System.out.println("Left-justified flag "-" is not used");
    }

    formatter.format("value");
  }
}

public class Main {
  public static void main(String[] args) {
    MyFormattableObject fp = new MyFormattableObject();
    System.out.printf("%s %n", fp );
    System.out.printf("%#s %n", fp );
    System.out.printf("%S %n", fp );
    System.out.printf("%#S %n", fp );
    
  }
}

上面的代码生成以下结果。

字符格式化

字符格式化也适用于char基本数据类型或字符对象作为byte, Byte, short, Short, int, 或Integer值是有效的Unicode代码点。

要测试整数值是否表示有效的Unicode代码,请使用静态方法 Character.isValidCodePoint(int value)

字符格式化的转换字符为“c"或大写变量“C"。

字符格式化不支持标志“#"和精度。

标志“ - "和宽度控制宽度和对齐方式,如一般格式化。

public class Main {
  public static void main(String[] args) {
    System.out.printf("%c %n",  "a"); 
    System.out.printf("%C %n",  "a"); 
    System.out.printf("%C %n",  98); 
    System.out.printf(""%5C" %n",  102); 
    System.out.printf(""%-5C" %n",  102);
  }
}

上面的代码生成以下结果。

阅读全文
以上是名动网为你收集整理的java打印格式化 Java 打印格式全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们