Импорт Math.PI в качестве ссылки или значения

Готовлюсь к базовой сертификации по Java.

Меня немного смущает ответ на вопрос, который я правильно понял (!): -

Дано:

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

Какой оператор импорта позволит скомпилировать и запустить код?

import java.lang.*;

import static java.lang.Math.PI;

import java.lang.Math.*;

import java.lang.Math;

Я ответил: import static java.lang.Math.PI;

НО объяснение двух других вариантов ниже меня смущает: -

Операторы import java.lang.Math; и импортируйте java.lang.Math.*; не позволит коду компилироваться и запускаться. Эти операторы импорта позволяют использовать Math.PI только в качестве ссылки на константу PI.

Мой вопрос: что было бы не так с операторами импорта, позволяющими ссылаться только на константу PI? Будет ли значение неинициализировано и равно нулю?


person USER874897    schedule 27.02.2015    source источник


Ответы (2)


«Разрешить Math.PI как ссылку на константу PI» означает, что ваш код должен выглядеть так, чтобы работать:

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

Что делает import java.lang.Math;, так это импортирует класс java.lang.Math, чтобы вы могли ссылаться на него с помощью Math вместо квалифицированной версии java.lang.Math. import java.lang.Math.*; делает то же самое для Math и всех вложенных классов, но не для его членов.

person Clashsoft    schedule 27.02.2015

Этот

import java.lang.Math.*;

импортирует все (доступные) типы, объявленные в Math.

Этот

import java.lang.Math;

является избыточным, поскольку Math является частью java.lang, который импортируется по умолчанию.

Оба потребуют, чтобы вы использовали

Math.PI

для доступа к полю.

Этот

import static java.lang.Math.PI;

импортирует элемент static Math.PI, чтобы вы могли использовать его простое имя в исходном коде.

person Sotirios Delimanolis    schedule 27.02.2015