Title here
Summary here
Our first program will demonstrate string formatting in Java. Here’s the full source code with examples of common string formatting tasks.
import java.util.Formatter;
class Point {
int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
public class StringFormatting {
public static void main(String[] args) {
// Java offers several printing methods for formatting general Java values.
// For example, this prints an instance of our Point class.
Point p = new Point(1, 2);
System.out.printf("struct1: %s%n", p);
// If the value is an object, you can use reflection to include the field names.
System.out.printf("struct2: x=%d, y=%d%n", p.x, p.y);
// To print the type of a value, use getClass().getSimpleName().
System.out.printf("type: %s%n", p.getClass().getSimpleName());
// Formatting booleans is straightforward.
System.out.printf("bool: %b%n", true);
// There are many options for formatting integers.
// Use %d for standard, base-10 formatting.
System.out.printf("int: %d%n", 123);
// This prints a binary representation.
System.out.printf("bin: %s%n", Integer.toBinaryString(14));
// This prints the character corresponding to the given integer.
System.out.printf("char: %c%n", 33);
// %x provides hex encoding.
System.out.printf("hex: %x%n", 456);
// There are also several formatting options for floats.
// For basic decimal formatting use %f.
System.out.printf("float1: %f%n", 78.9);
// %e and %E format the float in (slightly different versions of) scientific notation.
System.out.printf("float2: %e%n", 123400000.0);
System.out.printf("float3: %E%n", 123400000.0);
// For basic string printing use %s.
System.out.printf("str1: %s%n", "\"string\"");
// To double-quote strings, you can manually add the quotes.
System.out.printf("str2: \"%s\"%n", "string");
// To print a representation of a pointer (object reference in Java), use %h.
System.out.printf("pointer: %h%n", p);
// When formatting numbers you will often want to control the width and precision of the resulting figure.
// To specify the width of an integer, use a number after the % in the format specifier.
System.out.printf("width1: |%6d|%6d|%n", 12, 345);
// You can also specify the width of printed floats,
// though usually you'll also want to restrict the decimal precision at the same time.
System.out.printf("width2: |%6.2f|%6.2f|%n", 1.2, 3.45);
// To left-justify, use the - flag.
System.out.printf("width3: |%-6.2f|%-6.2f|%n", 1.2, 3.45);
// You may also want to control width when formatting strings,
// especially to ensure that they align in table-like output.
System.out.printf("width4: |%6s|%6s|%n", "foo", "b");
// To left-justify use the - flag as with numbers.
System.out.printf("width5: |%-6s|%-6s|%n", "foo", "b");
// String.format() formats and returns a string without printing it anywhere.
String s = String.format("sprintf: a %s", "string");
System.out.println(s);
// You can format+print to other output streams using Formatter.
Formatter stderr = new Formatter(System.err);
stderr.format("io: an %s%n", "error");
stderr.close();
}
}
To run the program, compile it and use java
:
$ javac StringFormatting.java
$ java StringFormatting
struct1: Point@4617c264
struct2: x=1, y=2
type: Point
bool: true
int: 123
bin: 1110
char: !
hex: 1c8
float1: 78.900000
float2: 1.234000e+08
float3: 1.234000E+08
str1: "string"
str2: "string"
pointer: 4617c264
width1: | 12| 345|
width2: | 1.20| 3.45|
width3: |1.20 |3.45 |
width4: | foo| b|
width5: |foo |b |
sprintf: a string
io: an error
This example demonstrates various string formatting techniques in Java, which are similar to those in other languages but with some Java-specific syntax and methods. The System.out.printf()
method is used for most formatting operations, which is analogous to fmt.Printf()
. For creating formatted strings without printing, Java uses String.format()
.