• ,

Ошибки начинающих java-программистов. Часть 2

9. Вызов нестатичных методов класса из метода main()


Входной точкой любой Java программы должен быть статичный метод main:
public static void main(String[] args) {
  ...
}


Так как этот метод статичный, нельзя из него вызывать нестатичные
методы класса. Об этом часто забывают студенты и пытаются вызывать
методы, не создавая экземпляр класса. Эту ошибку обычно допускают в
самом начале обучения, когда студенты пишут маленькие программы.

Ошибочный пример:
public class DivTest {
    boolean divisible(int x, int y) {
        return (x % y == 0);
    }

    public static void main(String[] args) {
        int v1 = 14;
        int v2 = 9;

        // на следующие строки компилятор выдаст ошибку
        if (divisible(v1, v2)) {
            System.out.println(v1 + " is a multiple of " + v2);
        } else {
            System.out.println(v2 + " does not divide " + v1);
        }
    }
}


Есть 2 способа исправления ошибки: сделать нужный метод статичным
или создать экземпляр класса. Чтобы правильно выбрать нужный способ,
задайте себе вопрос: использует ли метод поля или другие методы класса.
Если да, то следует создать экземпляр класса и вызвать у него метод,
иначе следует сделать метод статичным.
  • ,

Ошибки начинающих java-программистов. Часть 1

1. Имя класса отличается от имени файла, в котором он хранится.


Все используемые мною среды java, включая Javasoft JDKs, предполагают,
что исходный код класса с модификатором public хранится в файле с точно
таким же именем, как и имя класса, и расширением .java. Несоблюдение этого
соглашения может стать причиной многих проблем, которые выявятся во время
компиляции.

Начинающие студенты (программисты) часто забывают об этом соглашении,
и, например, задают имя файла в соответствии с заданием: Lab6.java.

Ошибочный пример: Имя файла Lab6.java -
public class Airplane extends Vehicle
  Seat pilot;
  public Airplane() { 
    pilot = new Seat(); 
  }
}


Исправленный пример: Имя файла Airplane.java -
public class Airplane extends Vehicle
  Seat pilot;
  public Airplane() { 
    pilot = new Seat(); 
  }
}


Заметьте: предполагается, что имя класса начинается с заглавной буквы. В
операционных системах, которые учитывают регистр символов в именах файлов,
могут появиться дополнительные проблемы, особенно у студентов, изучающих
Java под Unix, и привыкших к системе именования файлов в DOS. Класс
MotorVehicle должен храниться в файле MotorVehicle.java, но не в файле
motorvehicle.java.
  • ,

Оператор return

Последний из управляющих операторов — return. Его используют для выполнения явного возврата из метода. То есть он снова передает управление объекту, который вызвал данный метод. Как таковой этот оператор относится к операторам перехода. Хотя полное описание оператора return придется отложить до рассмотрения методов в главе 6, все же кратко ознакомимся с его особенностями.

Оператор return можно использовать в любом месте метода для возврата управления тому объекту, который вызвал данный метод. Таким образом, оператор return немедленно прекращает выполнение метода, в котором он находится. Следующий пример иллюстрирует это. В данном случае оператор return приводит к возврату управления системе времени выполнения Java, поскольку именно она вызывает метод main ().

// Демонстрация использования оператора return.
class Return {
public static void main(String args[]) {
boolean t = true; 
System.out.println("До выполнения возврата."); 
if (t) return; // возврат к вызывающему объекту 
System.out.println("Этот оператор выполняться не будет.");
}
}


Вывод этой программы имеет вид:

До выполнения возврата.


Как видите, заключительный оператор println () не выполняется. Сразу после выполнения оператора return программа возвращает управление вызывающему объекту.

И последний нюанс: в приведенной программе использование оператора if (t) обязательно. Без него компилятор Java сигнализировал бы об ошибке «unreachable code» («недостижимый код»), поскольку выяснил бы, что последний оператор println () никогда не будет выполняться. Во избежание этой ошибки в демонстрационном примере пришлось ввести компилятор в заблуждение с помощью оператора if.

Ссылка на первоисточник: http://www.linkex.ru/java/operator-return.php