Java Language учебник
Начало работы с Java Language
Поиск…
замечания
Язык программирования Java ...
Универсальный : он предназначен для использования для написания программного обеспечения в самых разных областях приложений и не имеет специализированных функций для любого конкретного домена.
Class-based : его структура объектов определена в классах. У экземпляров классов всегда есть те поля и методы, которые указаны в их определениях классов (см. Классы и объекты ). Это противоречит неклассическим языкам, таким как JavaScript.
Статически типизированный : компилятор проверяет во время компиляции, что типы переменных соблюдаются. Например, если метод ожидает аргумент типа
String
, этот аргумент на самом деле должен быть строкой при вызове метода.Объектно-ориентированная : большинство вещей в программе Java являются экземплярами класса, то есть пучками состояний (полей) и поведения (методы, которые работают с данными и образуют интерфейс объекта для внешнего мира).
Portable : он может быть скомпилирован на любой платформе с помощью
javac
и полученные файлы классов могут запускаться на любой платформе с JVM.
Java предназначен для того, чтобы позволить разработчикам приложений «писать один раз, работать где угодно» (WORA), что означает, что скомпилированный Java-код может работать на всех платформах, поддерживающих Java, без необходимости перекомпиляции.
Java-код скомпилирован в байт-код ( .class
), которые, в свою очередь, интерпретируются виртуальной машиной Java (JVM). Теоретически байт-код, созданный одним компилятором Java, должен работать одинаково на любом JVM, даже на другом компьютере. JVM может (и в реальных программах) выбирать для компиляции в собственные машинные команды части байт-кода, которые выполняются часто. Это называется компиляцией «точно в срок» (JIT) ».
Java-версии и версии
Существует три «издания» Java, определенные Sun / Oracle:
- Java Standard Edition (SE) - это издание, предназначенное для общего использования.
- Java Enterprise Edition (EE) добавляет ряд возможностей для создания сервисов уровня предприятия на Java. Java EE рассматривается отдельно .
- Java Micro Edition (ME) основана на подмножестве Java SE и предназначена для использования на небольших устройствах с ограниченными ресурсами.
Существует отдельная тема для выпусков Java SE / EE / ME .
Каждое издание имеет несколько версий. Ниже перечислены версии Java SE.
Установка Java
Существует отдельная тема по установке Java (стандартная версия) .
Компиляция и запуск Java-программ
Существуют отдельные темы:
- Компиляция исходного кода Java
- Развертывание Java, включая создание JAR-файлов
- Запуск приложений Java
- Путь Класса
Что дальше?
Вот ссылки на темы, чтобы продолжить изучение и понимание языка программирования Java. Эти темы - основы программирования Java, чтобы вы начали.
- Примитивные типы данных в Java
- Операторы в Java
- Строки в Java
- Основные элементы управления в Java
- Классы и объекты в Java
- Массивы в Java
- Стандарты кода Java
тестирование
Хотя Java не имеет поддержки для тестирования в стандартной библиотеке, существуют сторонние библиотеки, которые предназначены для поддержки тестирования. Две наиболее популярные библиотеки для тестирования модулей:
- JUnit ( официальный сайт )
- TestNG ( официальный сайт )
Другой
- Шаблоны проектирования для Java описаны в шаблонах проектирования .
- Программирование для Android распространяется на Android .
- Технологии Java Enterprise Edition описаны в Java EE .
- Технологии Oracle JavaFX рассматриваются в JavaFX .
1. В разделе « Версии » дата окончания срока службы (бесплатно) заключается в том, что Oracle перестанет публиковать дальнейшие обновления Java SE на своих общедоступных сайтах загрузки. Клиенты, которым требуется постоянный доступ к критическим исправлениям ошибок и исправлениям безопасности, а также общее обслуживание Java SE, могут получить долгосрочную поддержку через поддержку Oracle Java SE .
Версии
Версия Java SE | Кодовое имя | Окончание срока службы (бесплатно 1 ) | Дата выхода |
---|---|---|---|
Java SE 9 (ранний доступ) | Никто | будущее | 2017-07-27 |
Java SE 8 | паук | будущее | 2014-03-18 |
Java SE 7 | дельфин | 2015-04-14 | 2011-07-28 |
Java SE 6 | мустанг | 2013-04-16 | 2006-12-23 |
Java SE 5 | тигр | 2009-11-04 | 2004-10-04 |
Java SE 1.4 | Мерлин | до 2009-11-04 | 2002-02-06 |
Java SE 1.3 | Пустельга | до 2009-11-04 | 2000-05-08 |
Java SE 1.2 | Детская площадка | до 2009-11-04 | 1998-12-08 |
Java SE 1.1 | Никто | до 2009-11-04 | 1997-02-19 |
Java SE 1.0 | дуб | до 2009-11-04 | 1996-01-21 |
Создание первой программы Java
Создайте новый файл в текстовом редакторе или в IDE с именем HelloWorld.java
. Затем вставьте этот блок кода в файл и сохраните:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
Запуск в прямом эфире на Ideone
Примечание. Если Java распознает это как public class
(а не выдает ошибку времени компиляции ), имя файла должно совпадать с именем класса ( HelloWorld
в этом примере) с расширением .java
. Перед этим также должен быть модификатор public
доступа.
Соглашения об именах рекомендуют, чтобы классы Java начинались с символа верхнего регистра и находились в формате case camel (в котором первая буква каждого слова заглавная). Эти соглашения рекомендуются против знаков подчеркивания ( _
) и доллара ( $
).
Чтобы скомпилировать, откройте окно терминала и перейдите в каталог HelloWorld.java
:
cd /path/to/containing/folder/
Примечание: cd - это команда терминала для изменения каталога.
Введите javac
а затем имя файла и расширение следующим образом:
$ javac HelloWorld.java
Общеизвестно, что ошибка 'javac' is not recognized as an internal or external command, operable program or batch file.
даже если вы установили JDK
и сможете запускать программу из IDE
ex. eclipse
и т. д. Так как путь по умолчанию не добавляется в среду.
В случае, если вы получите это на окнах, чтобы решить проблему, сначала попробуйте перейти на ваш путь javac.exe
, скорее всего, это ваш C:\Program Files\Java\jdk(version number)\bin
. Затем попробуйте запустить его ниже.
$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
Раньше, когда мы javac
он был таким же, как и команда выше. Только в этом случае ваша OS
знала, где находится javac
. Итак, давайте расскажем об этом сейчас, поэтому вам не нужно вводить весь путь каждый раз. Нам нужно добавить это к нашей PATH
Чтобы изменить PATH
среды PATH
в Windows XP / Vista / 7/8/10:
- Панель управления ⇒ Система ⇒ Расширенные настройки системы
- Переключиться на вкладку «Дополнительно» ⇒ Переменные среды
- В «Системные переменные» прокрутите вниз, чтобы выбрать «ПУТЬ» ⇒ Изменить
Вы не можете отменить это, поэтому будьте осторожны. Сначала скопируйте существующий путь в блокнот. Затем, чтобы получить точную PATH для вашего javac
просмотрите вручную папку, в которой находится javac
и щелкните по адресной строке, а затем скопируйте ее. Он должен выглядеть примерно так c:\Program Files\Java\jdk1.8.0_xx\bin
В поле «Variable value» вставьте этот IN FRONT из всех существующих каталогов, за которым следует точка с запятой (;). НЕ УДАЛЯЙТЕ любые существующие записи.
Variable name : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
Теперь это должно решить.
Для Linux-систем попробуйте здесь .
Примечание. Команда javac
вызывает компилятор Java.
Затем компилятор сгенерирует файл байт-кода HelloWorld.class
который может быть запущен на виртуальной машине Java (JVM) . Компилятор языка программирования Java, javac
, читает исходные файлы, написанные на языке программирования Java, и компилирует их в файлы классов bytecode
. При желании компилятор также может обрабатывать аннотации, найденные в исходных и классных файлах, с помощью API Pluggable
Annotation Processing. Компилятор является инструментом командной строки, но также может быть вызван с использованием Java Compiler API.
Чтобы запустить вашу программу, введите java
а затем имя класса, которое содержит main
метод ( HelloWorld
в нашем примере). Обратите внимание, что .class
опущен:
$ java HelloWorld
Примечание. Команда java
запускает приложение Java.
Это будет выводиться на консоль:
Привет, мир!
Вы успешно закодировали и создали свою первую Java-программу!
Примечание. Чтобы распознавать Java-команды ( java
, javac
и т. Д.), Вам необходимо убедиться:
- Установлен JDK (например, Oracle , OpenJDK и другие источники)
- Ваши переменные среды правильно настроены
Вам нужно будет использовать компилятор ( javac
) и исполнитель ( java
), предоставленный вашей JVM. Чтобы узнать, какие версии вы установили, введите java -version
и javac -version
в командной строке. Номер версии вашей программы будет напечатан в терминале (например, 1.8.0_73
).
Более пристальный взгляд на программу Hello World
Программа Hello World содержит один файл, который состоит из определения класса HelloWorld
, main
метода и оператора внутри main
метода.
public class HelloWorld {
Ключевое слово class
начинает определение класса для класса с именем HelloWorld
. Каждое приложение Java содержит хотя бы одно определение класса ( дополнительная информация о классах ).
public static void main(String[] args) {
Это метод точки входа (определяемый его именем и сигнатурой public static void main(String[])
), из которого JVM
может запускать вашу программу. Каждая программа Java должна иметь один. Это:
-
public
: это означает, что метод может быть вызван из любой точки мира извне программы. См. « Видимость» для получения дополнительной информации об этом. -
static
: означает, что он существует и может выполняться сам по себе (на уровне класса без создания объекта). -
void
: означает, что он не возвращает значение. Примечание. Это не похоже на C и C ++, где ожидается код возврата, такой какint
(путь Java -System.exit()
).
Этот основной метод позволяет:
- Массив (обычно называемый
args
)String
s передается как аргументы основной функции (например, из аргументов командной строки ).
Почти все это требуется для метода точки входа Java.
Необязательные детали:
- Имя
args
- это имя переменной, поэтому его можно назвать чем угодно, хотя обычно его называютargs
. - Является ли его тип параметра массивом (
String[] args
) или Varargs (String... args
), не имеет значения, потому что массивы могут быть переданы в varargs.
Примечание. В одном приложении может быть несколько классов, содержащих метод точки входа ( main
). Точка входа приложения определяется именем класса, переданным в качестве аргумента в команду java
.
Внутри основного метода мы видим следующее утверждение:
System.out.println("Hello, World!");
Давайте разберем эту инструкцию по элементам:
Элемент | Цель |
---|---|
System | это означает, что последующее выражение вызовет класс System из пакета java.lang . |
. | это «точечный оператор». Операторы точек предоставляют вам доступ к членам классов 1 ; т.е. его поля (переменные) и его методы. В этом случае этот оператор точки позволяет ссылаться на out статического поля в System класса. |
out | это имя статического поля типа PrintStream внутри класса System содержащего стандартные функции вывода. |
. | это еще один оператор точки. Этот оператор точки обеспечивает доступ к методу println в переменной out . |
println | это имя метода в классе PrintStream. Этот метод, в частности, печатает содержимое параметров в консоли и вставляет новую строку после. |
( | эта скобка указывает, что к способу обращается (а не к полю) и начинает параметры передаются в метод println . |
"Hello, World!" | это строковый литерал, который передается как параметр, в метод println . Двойные кавычки на каждом конце ограничивают текст как String. |
) | эта скобка означает закрытие параметров, передаваемых в метод println . |
; | эта точка с запятой знаменует конец утверждения. |
Примечание. Каждый оператор в Java должен заканчиваться точкой с запятой ( ;
).
Тело метода и тело класса затем закрываются.
} // end of main function scope
} // end of class HelloWorld scope
Вот еще один пример, демонстрирующий парадигму ОО. Давайте моделируем футбольную команду с одним (да, одним!) Участником. Их может быть больше, но мы обсудим это, когда мы перейдем к массивам.
Сначала давайте определим наш класс Team
:
public class Team {
Member member;
public Team(Member member) { // who is in this Team?
this.member = member; // one 'member' is in this Team!
}
}
Теперь давайте определим наш Member
класса:
class Member {
private String name;
private String type;
private int level; // note the data type here
private int rank; // note the data type here as well
public Member(String name, String type, int level, int rank) {
this.name = name;
this.type = type;
this.level = level;
this.rank = rank;
}
}
Почему мы здесь используем private
? Ну, если кто-то хочет узнать ваше имя, они должны попросить вас прямо, вместо того, чтобы влезть в карман и вытащить карту социального страхования. Это private
делает что-то вроде этого: оно предотвращает доступ внешних объектов к вашим переменным. Вы можете возвращать только private
членов через функции getter (показано ниже).
Положив все это вместе и добавив геттеры и основной метод, как обсуждалось ранее, мы имеем:
public class Team {
Member member;
public Team(Member member) {
this.member = member;
}
// here's our main method
public static void main(String[] args) {
Member myMember = new Member("Aurieel", "light", 10, 1);
Team myTeam = new Team(myMember);
System.out.println(myTeam.member.getName());
System.out.println(myTeam.member.getType());
System.out.println(myTeam.member.getLevel());
System.out.println(myTeam.member.getRank());
}
}
class Member {
private String name;
private String type;
private int level;
private int rank;
public Member(String name, String type, int level, int rank) {
this.name = name;
this.type = type;
this.level = level;
this.rank = rank;
}
/* let's define our getter functions here */
public String getName() { // what is your name?
return this.name; // my name is ...
}
public String getType() { // what is your type?
return this.type; // my type is ...
}
public int getLevel() { // what is your level?
return this.level; // my level is ...
}
public int getRank() { // what is your rank?
return this.rank; // my rank is
}
}
Выход:
Aurieel
light
10
1
Еще раз, main
метод внутри класса Test
является точкой входа в нашу программу. Без main
метода мы не можем сообщить виртуальной машине Java (JVM), откуда начать выполнение программы.
1 - Поскольку класс HelloWorld
мало HelloWorld
классом System
, он может получать доступ только к public
данным.