# system.out.printf versus system.out.format

• 06-21-2011, 12:33 AM
bigsonny
system.out.printf versus system.out.format
Hello,

I am working on Numbers
and string manipulations and I don't understand why for the first half of the Math class, they use printf then format for the trigonometric methods. Is there an advantage to doing one versus the other?

Thank you!
• 06-21-2011, 12:41 AM
Junky
As far as I am aware format and printf do the same thing. Perhaps it depends upon who wrote the methods in the Math class.
• 06-21-2011, 12:41 AM
bigsonny
A sample code would help:
From: Beyond Basic Arithmetic (The Java™ Tutorials > Learning the Java Language > Numbers and Strings)
printf:
Code:

```public class ExponentialDemo {     public static void main(String[] args) {         double x = 11.635;         double y = 2.76;         System.out.printf("The value of e is %.4f%n", Math.E);         System.out.printf("exp(%.3f) is %.3f%n", x, Math.exp(x));         System.out.printf("log(%.3f) is %.3f%n", x, Math.log(x));         System.out.printf("pow(%.3f, %.3f) is %.3f%n", x, y, Math.pow(x, y));         System.out.printf("sqrt(%.3f) is %.3f%n", x, Math.sqrt(x));     } }```
format:
Code:

```public class TrigonometricDemo {     public static void main(String[] args) {         double degrees = 45.0;         double radians = Math.toRadians(degrees);                 System.out.format("The value of pi is %.4f%n", Math.PI);         System.out.format("The sine of %.1f degrees is %.4f%n", degrees,                                                     Math.sin(radians));         System.out.format("The cosine of %.1f degrees is %.4f%n", degrees,                               Math.cos(radians));         System.out.format("The tangent of %.1f degrees is %.4f%n", degrees,                               Math.tan(radians));         System.out.format("The arcsine of %.4f is %.4f degrees %n",                               Math.sin(radians),                               Math.toDegrees(Math.asin(Math.sin(radians))));         System.out.format("The arccosine of %.4f is %.4f degrees %n",                               Math.cos(radians),                                Math.toDegrees(Math.acos(Math.cos(radians))));         System.out.format("The arctangent of %.4f is %.4f degrees %n",                               Math.tan(radians),                               Math.toDegrees(Math.atan(Math.tan(radians))));         } }```
• 06-21-2011, 12:42 AM
bigsonny
Quote:

Originally Posted by Junky
As far as I am aware format and printf do the same thing. Perhaps it depends upon who wrote the methods in the Math class.

Oh sorry, I had not realized that you replied. Thanks. This seems redundant though. Is that the case for everything or is it just in the case that I am encountering right now?
• 06-21-2011, 12:56 AM
Junky
What do you mean by "everything"? Are you asking are there methods that do the same thing throughout the API? Yes and no. There are a few methods that do the same or similar things but it is by no means prevalent. Why is this the case? I have no idea. I didn't work for Sun when they developed Java.
• 06-21-2011, 12:59 AM
bigsonny
Sorry, I meant is it the case that format and printf do the same thing in every instance or are there differences that you are of that justifies their respective existence?
• 06-21-2011, 01:02 AM
Junky
From the Java API

Quote:

An invocation of this method of the form out.printf(l, format, args) behaves in exactly the same way as the invocation

out.format(l, format, args)
• 06-21-2011, 01:21 AM
pbrockway2
The println() and format() methods of PrintStream/Writer do differ in what they return. format() returns the stream, so that you can chain method calls together. In this regard the PrintStream/Writer format() allows the same style of code as the Formatter version.
• 06-21-2011, 02:15 PM
bigsonny
Got it. Thank you very much.

Riffard
• 06-21-2011, 02:23 PM
JosAH
Here's the source to 'prove' the identical behaviour; (I ripped this from the src.zip file):

Code:

```    public PrintStream printf(String format, Object ... args) {         return format(format, args);```
kind regards,

Jos
• 06-21-2011, 10:40 PM
pbrockway2
Quote:

Here's the source to 'prove' the identical behaviour
So you can ignore my reply #8. You live and learn! I had always thought they differed in what was returned - I guess I was thinking of println().