Importing Math.PI as reference or value
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.
USER874897
Updated on February 28, 2020Comments
-
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?