Importing Math.PI as reference or value

26,228

Solution 1

'Allow Math.PI as a reference to the PI constant' means that your code will have to look like this in order to work:

static double getCircumference(double radius ) {
      return Math.PI * 2 * radius;
 }
 public static double getArea(double radius) {
      return Math.PI * radius * radius;
 }

What import java.lang.Math; does is importing the class java.lang.Math so you can reference it with Math instead of the qualified version java.lang.Math. import java.lang.Math.*; does the same for Math and all nested classes, but not it's members.

Solution 2

This

import java.lang.Math.*;

imports all (accessible) types declared within Math.

This

import java.lang.Math;

is redundant because Math is part of java.lang which is imported by default.

Both will require that you use

Math.PI

to access the field.

This

import static java.lang.Math.PI;

imports the static member Math.PI so that you can use its simple name in your source code.

Share:
26,228
USER874897
Author by

USER874897

Updated on February 28, 2020

Comments

  • USER874897
    USER874897 about 4 years

    I'm preparing for a basic certification in Java.

    I'm a little confused by the answer to a question that I have got right(!):-

    Given:

     public class Circle {
         static double getCircumference(double radius ) {
              return PI * 2 * radius;
         }
         public static double getArea(double radius) {
              return PI * radius * radius;
         }
    }
    

    Which import statement will enable the code to compile and run?

    import java.lang.*;
    
    import static java.lang.Math.PI;
    
    import java.lang.Math.*;
    
    import java.lang.Math;
    

    I answered import static java.lang.Math.PI;

    BUT the explanation of two other options below confuses me:-

    The statements import java.lang.Math; and import java.lang.Math.*; will not enable the code to compile and run. These import statements will only allow Math.PI as a reference to the PI constant.

    My question is: what would be wrong with the import statements only allowing a reference to the PI constant? Would the value be uninitialized and zero?