Перед тем как создать свой первый Java проект, следует обратить внимание на несколько важных моментов.
Один из непременных вопросов всех языков программирования — это управление именами или названиями. Предположим, что вы используете имя в одном модуле программы, а другой программист использует то же самое имя в другом модуле. Как отличить одно имя от другого и избежать конфликтов? Этот вопрос особенно актуален для языка C, так как он не предоставляет эффективных методов управления именами. Язык C++, который является основой для классов Java, использует вложенные функции внутри классов, чтобы избежать конфликта с другими вложенными функциями. Однако C++ также позволяет использовать глобальные данные и функции, поэтому конфликты всё ещё возможны. Для решения этой проблемы в C++ были введены ключевые слова для создания "пространства имен".Используя новую систему, Java полностью решает эту проблему. Для создания уникального имени для библиотеки используется аналогия с доменными именами Интернета. На самом деле, дизайнеры Java рекомендуют программистам использовать обратное доменное имя, так как они гарантированно уникальны. Например, если моя доменная зона BruceEckel.com
, то мой набор полезных утилит можно назвать com.bruceeckel.utility.foibles
. Обратное использование доменного имени позволяет представлять точки как подкаталоги.В версиях Java 1.0 и Java 1.1 расширение домена, такие как com
, edu
, org
, net
и т.д., должны были быть записаны прописными буквами. Таким образом, библиотека будет иметь вид COM.bruceeckel.utility.foibles
. Однако во время разработки Java 1.2 было замечено, что такое требование может вызывать некоторые проблемы. Поэтому в настоящее время все пакеты используют строчные буквы.
Это специальное решение Java означает, что все файлы автоматически находятся в своих собственных пространствах имён. Каждый класс в файле получает уникальный идентификатор (конечно, имена классов в одном файле должны быть уникальными). Это значит, что нет необходимости учиться специальному синтаксису для решения этой проблемы — язык уже обеспечивает это.
import
. Ключевое слово import
служит для указания компилятору на импорт одного "пакета" — или, другими словами, одной "библиотеки классов". В других языках можно представить библиотеку как набор функций, данных и классов. Однако помните, что весь код Java должен быть помещён в класс.Как правило, большинство времени мы используем компоненты из стандартной Java-библиотеки, которая предоставляется вместе с компилятором. При использовании этих компонентов нет необходимости беспокоиться о длинных доменах сохранения; например, достаточно просто написать следующую строчку кода:
import java.util.Vector;
Это сообщает компилятору, что мы хотим использовать класс Vector
из пакета java.util
. Однако пакет util
содержит множество классов, и иногда нам хочется использовать несколько из них, не объявляя каждый явно. Для достижения этой цели можно использовать шаблон *
, как показано ниже:
import java.util.*;
Этот подход обычно используется, когда требуется импортировать серию классов. Вместо того чтобы импортировать каждый класс отдельно, лучше избегать такого подхода.## 2.6.3 Ключевое слово static
Обычно, когда мы создаем класс, мы указываем внешний вид и поведение объектов этого класса. Без использования ключевого слова new
для создания экземпляра данного класса фактического объекта не существует. Только после выполнения команды new
создается область памяти для хранения данных, а также становятся доступны методы этого класса. Однако в двух специальных случаях вышеописанный подход непригоден. В одном случае требуется использовать только один участок памяти для хранения конкретных данных — независимо от того, сколько объектов будет создано или даже если объекты вообще не создаются. Во втором случае нам нужна особая функция, которая не связана ни с каким экземпляром данного класса. Другими словами, это метод, который можно вызвать, даже если нет созданных объектов. Для удовлетворения этих требований используется ключевое слово static
. Как только что-либо объявлено как static
, данные или методы больше не связаны с любым экземпляром этого класса. Таким образом, даже если ни одного объекта этого класса не было создано, все еще можно вызывать static
методы или обращаться к static
данным. В противном случае, для доступа к нестатическим данным и методам необходимо было бы создать объект и использовать его для доступа к данным или методам. Это потому, что нестатические данные и методы должны знать конкретный объект, с которым они работают.Конечно, до использования таких static
методов, которые не требуют создания объектов, они не могут просто вызывать другие члены, не указывая при этом на уже существующий объект, чтобы прямым образом получить доступ к нестатическим членам или методам (так как нестатические члены и методы должны быть связаны с определённым объектом). Некоторые объектно-ориентированные языки используют термины "классовые данные" и "классовые методы". Это означает, что данные и методы существуют только для всего класса в целом, а не для какого-либо конкретного объекта этого класса. Иногда вы можете встретить такие названия в других книгах по Java.Чтобы сделать член данных или метод static
, достаточно указать это ключевое слово перед его определением. Например, следующий код создаёт static
член данных и инициализирует его:
class StaticTest {
static int i = 47;
}
Хотя мы создали два объекта StaticTest
, они всё ещё используют только одно место хранения для StaticTest.i
. Оба объекта делают ссылку на одно и то же значение i
. Рассмотрите следующий код:
StaticTest st1 = new StaticTest();
StaticTest st2 = new StaticTest();
На данный момент значения st1.i
и st2.i
равны 47, так как они ссылаются на одну и ту же область памяти.
Существует два способа обращения к static
переменной. Как показано выше, можно обратиться через объект, например, st2.i
. Также можно обратиться напрямую, используя имя класса, что невозможно для нестатических членов (лучше использовать этот подход при обращении к static
переменным, чтобы подчеркнуть их "статический" характер).
StaticTest.i++;
Здесь оператор ++
увеличивает значение переменной на единицу. В результате значения st1.i
и st2.i
становятся равными 48.
Аналогичная логика применима и к статическим методам. Можно вызвать статический метод через объект, как это делается со всеми другими методами, либо использовать специальную синтаксическую конструкцию Класс.Метод()
. Определение статического метода может выглядеть так:```java
class StaticFun {
static void incr() { StaticTest.i++; }
}
Из этого следует, что метод `incr()` класса `StaticFun` увеличивает статическое поле `i`. Вызов метода `incr()` через объект осуществляется следующим образом:
```java
StaticFun sf = new StaticFun();
sf.incr();
Или, поскольку incr()
является статическим методом, его можно вызывать напрямую через его класс:
StaticFun.incr();
Хотя метод является "статическим", применение этого модификатора к методу не меняет принцип создания объектов (один член данных для каждого класса и отдельный для каждого объекта). Однако использование static
для метода имеет важное значение — позволяет вызывать метод без необходимости создания объекта. Этот факт будет иметь большое значение, особенно при определении точки входа программы метода main()
.
Как и любой другой метод, статический
метод также может создавать именованные объекты своего типа. Поэтому часто используют метод static
как "лидер", чтобы с его помощью генерировать серию "объектов" своего типа.Проверьте и исправьте следующий текст:
# Инструкция по установке
Для установки программы вам потребуется Java Runtime Environment версии 8 или выше. Убедитесь, что ваш компьютер поддерживает **64-bit** операционную систему.
## Шаг 1: Установите JDK
Сначала скачайте последнюю версию JDK с официального сайта Oracle. После этого установите его, следуя инструкциям мастера установки.
### Пример команды для установки
sudo apt-get install openjdk-8-jdk
## Шаг 2: Настройте переменные окружения
Добавьте путь к `JAVA_HOME` в ваш `.bashrc` файл:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin
## Шаг 3: Проверьте установку
Запустите команду `java -version` в терминале, чтобы проверить успешность установки. Вы должны видеть сообщение, подобное этому:
openjdk version "1.8.0_242" OpenJDK Runtime Environment (build 1.8.0_242-b08)
Если возникли ошибки, обратитесь к разделу "Решение проблем".
---
### Сообщение об ошибке
Если при запуске `java -version` вы получаете сообщение об ошибке типа:
Error: Could not find or load main class java.lang.ClassNotFoundException
Убедитесь, что переменные окружения настроены правильно и перезапустите терминал.
---
Перевод:
# Инструкция по установке
Для установки программы вам потребуется Java Runtime Environment версии 8 или выше. Убедитесь, что ваш компьютер поддерживает **64-битную** операционную систему.
## Шаг 1: Установите JDK
Сначала скачайте последнюю версию JDK с официального сайта Oracle. После этого установите его, следуя инструкциям мастера установки.
### Пример команды для установки
sudo apt-get install openjdk-8-jdk
## Шаг 2: Настройте переменные окружения
Добавьте путь к `JAVA_HOME` в ваш `.bashrc` файл:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 export PATH=$PATH:$JAVA_HOME/bin
## Шаг 3: Проверьте установку
Запустите команду `java -version` в терминале, чтобы проверить успешность установки. Вы должны видеть сообщение, подобное этому:
openjdk version "1.8.0_242" OpenJDK Runtime Environment (build 1.8.0_242-b08)
Если возникли ошибки, обратитесь к разделу "Решение проблем".
---
### Сообщение об ошибке
Если при запуске `java -version` вы получаете сообщение об ошибке типа:
Ошибка: Невозможно найти или загрузить главный класс java.lang.ClassNotFoundException
Убедитесь, что переменные окружения настроены правильно и перезапустите терминал.
---
Обратите внимание, что терминология была адаптирована для использования в русском языке, сохранив специфическую терминологию IT-индустрии.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )