Основные понятия Java. Словарь java — терминов

Программа - это последовательность инструкций, созданных на языке программирования. Язык программирования отличается от обычных языков людей, используемых в повседневном общении. Язык программирования жестко регламентирован, от его правил нельзя отступать. Правила, которые определяет, как устроен язык, составляют синтаксис языка. Правила синтаксиса определяют словарь языка, как конструируется программа с использованием таких структур, как, например, циклы, ветвления, функции. Только синтаксически правильная программа может быть скомпилирована. Программы с ошибками будут отвергнуты. Программист должен создать такую программу, которая не будет содержать ни одной синтаксической ошибки. Для этого программисту необходимы детальные знания правил синтаксиса. Помимо синтаксической корректности программа должна быть осмысленна, т. е. выполнять логически обоснованную последовательность действий. Смысл программы - это семантика программы. Семантически верная программа считает именно то, что программист подразумевал при ее создании.

Создадим простейшую программу. Процесс создания состоит из трех основных частей:

Ввод текста программы в компьютер;

Компиляция введенного кода;

Выполнение скомпилированного кода.

Простейший код программы будет выглядеть так:

public class HelloWorld {

//A program to display the message // "Hello, World!" on standard output

System.out.println("Hello, World!");

Эта программа выводит сообщение "Hello, World!" Вывод этого сообщения осуществляется при помощи команды

System.out.println("Hello, World!");

Это пример вызова функции. Здесь вызвана функция System.out .println. Функция - это набор нескольких инструкций, объединенных вместе и образующих единое целое с заданным именем. В данном случае мы используем встроенную функцию. Встроенная функция - это заранее определенная функция, которая является неотъемлемой частью языка. Программа содержит в себе комментарии. Комментарии при работе программы полностью игнорируются. В данном случае строки комментария начинаются с символов // и заканчиваются с концом строки. Многострочные комментарии заключаются между символами /* и */. Все, кроме комментариев, подчинено правилам синтаксиса языка. В первой строке нашей программы мы определяем класс с именем HeiioWorid. Отметим, что не всякий класс является программой. Для того чтобы класс стал самостоятельной программой, в нем должна содержаться функция main о, которая определяется таким образом:

public static void main(String args) {

statements

При обращении к интерпретатору Java при запуске программы, интерпретатор обращается к функции main о. Слово public означает, что эта функция может быть вызвана извне, т. е. не из самой программы. Это важно, поскольку функция вызывается интерпретатором. Значения остальных слов станут понятны позже. Между фигурными скобками располагается набор инструкций, которые будут вызваны и выполнены при обращении к функции.

Апплеты создаются по-другому:

public class InterestIConsole extends ConsoleApplet {

protected String getTitleO {

return "Sample program V’lnterestlV";

protected void program() {

double principal; // вложенная сумма

double interest; // процент за год

interest = principal * rate; // процент principal = principal + interest; /* вывод результата */ console.put("The interest earned is $"); console.putln(interest);

console.put("The value of the investment after one year is $"); console.putln(principal);

При этом используется следующая вспомогательная программа, содержащаяся в файле ConsoleApplet.java:

impo гt j ava.awt.*;

impo rt java.awt.event.*;

public class ConsoleApplet extends java.applet.Applet

implements Runnable, ActionListener { protected String title = "Java Console I/O"; protected String getTitleO { return title;

protected ConsolePanel consoles- protected void program () {

console.putln("Hello, World!");

private Button runButton;

private Thread programThread = null;

// поток run () private boolean programRunning = falser- private boolean firstTime = true; // false - если программа считает первый раз

public void run() { // запуск programRunning = true;

programRunning = false; stopProgram() ;

synchronized private void startProgram() { runButton.setLabel("Abort Program"); if (!firstTime) { console.clear() ; try { Thread.sleep(300); } // задержка перед перезапуском программы

catch (InterruptedException e) { }

firstTime = false; programThread = new Thread(this); programThread.start() ;

synchronized private void stopProgram() { if (programRunning) { programThread.stop(); try { programThread.join(1000); } catch (InterruptedException e) { }

console.clearBuffers(); programThread = null; programRunning = false; runButton.setLabel("Run Again"); runButton.requestFocus();

public void init() {

setBackground(Color.black);

setLayout(new BorderLayout(2,2)); console = new ConsolePanel(); add("Center",console);

Panel temp = new Panel();

temp.setBackground(Color.white) ; Label lab = new Label(getTitle()); temp.add(lab) ;

lab.setForeground(new Color(180,0,0)); add("North", temp);

runButton = new Button("Run the Program");

temp = new Panel();

temp.setBackground(Color.white);

temp.add(runButton);

runButton.addActionListener(this);

add("South",temp); }

public Insets getlnsets() { return new Insets(2,2,2,2);

public void stop() {

if (programRunning) { stopProgram() ; console.putln() ;

console.putln("*** PROGRAM HALTED");

synchronized public void actionPerformed(ActionEvent evt) { if (programThread != null) { stopProgram(); console.putln();

console.putln("*** PROGRAM ABORTED BY USER");

Переменные и примитивные типы

Имена играют фундаментальную роль в программировании. При помощи имен называются разные вещи. Важно знать синтаксис и семантику при использовании имен. Имя - это последовательность одного или нескольких

символов. Имя должно начинаться с буквы и состоять из букв, цифр, символов подчеркивания (_). Например:

Quite_a_long_name

Заглавные буквы и строчные буквы считаются различными. Имена

HelloWorld, heiioworid, helloworld, hEiioWorLD - это разные имена. Определенные имена являются зарезервированными и имеют специальное назначение и не могут быть использованы программистом для других целей, например:

и еще несколько десятков других имен.

Значение присваивается переменной при помощи оператора присваивания в виде:

variable = expression;

Например:

interest = rate * principal;

Переменная служит для хранения только одного типа данных. Существуют типы, встроенные в Java, это примитивные типы:

Тип short соответствует двум байтам, интервал значений от -32 768 до 32 767. Тип int соответствует 32 битам, интервал значений от -2 147 483 648 до 2 147 483 647. Тип long соответствует 64 битам, интервал значений от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Тип float занимает 4 байта памяти, максимальное значение примерно 10 38 . Тип char занимает два байта памяти. Имя константы называется литералом. Для логического литерала существует два значения true и false.

Пример программы, в которой используются переменные и операторы присваивания:

public class Interest {

public static void main(String args) { /* объявление переменных */ double principal; // вложенная сумма

double rate; // годовой процент

double interest; // начисление за год

/* вычисления */ principal = 17000; rate = 0.07;

interest = principal * rate; principal = principal + interest;

/* вывод результата */ System.out.print("The interest earned is $"); System.out.println(interest);

System.out.print("The value of the investment after one year is $");

System.out.println(principal); }

Строки, объекты, функции

В предыдущем разделе мы рассмотрели восемь примитивных типов и тип строк string. Существует принципиальное различие между примитивными типами и типом string. Дело в том, что string - это объект. В наших примерах будет использоваться класс Textio. Код Java-программы (TextlO.java) приведен в конце настоящего приложения.

Классы в Java выполняют две важные функции. Первая состоит в том, что классы объединяют в себе переменные и функции, содержащиеся в этом классе. Переменные и функции становятся статическими членами класса, так, например, функция main о - статическая функция класса. В определении таких функций используется слово static. Второе назначение классов - они описывают объекты. Класс - это тип, а объект - это значение этого типа, string - это название класса, который является частью языка Java. И строка, например, "Hello, World" - это значение типа string.

Всем известны математические функции, такие, как, например, квадратный корень. В языке Java существует аналогичная функция, Math.sqrt. Эта функция - статический член класса, называемого Math. Если х - это какое-либо числовое значение, то Math.sqrt (х) - это тоже значение, равное квадратному корню от х. Чтобы вывести это значение на печать, мы используем следующую команду: System.out.print(Math.sqrt(x));

Можно использовать оператор присваивания для инициализирования переменной:

lengthOfSide = Math.sqrt(х);

Функция представляет переменную типа double и может применяться там, где используются переменные типа double.

Еще один пример математической функции:

Эта функция вычисляет модуль (абсолютное значение). Среди математических функций есть и другие, например, Math, sin (х), Math.cos(x), Math.tan (x), Math.asin (x), Math.acos(x), Math.atan (x), Math.exp(x), Math, log (x) , Math.pow (x, y) , Math, floor (x) , Math, random ().

Приведем пример программы, использующей эти функции:

public class TimedComputation {

public static void main(String args) {

long startTime; // стартовое время в миллисекундах

long endTime; // время при завершении вычислений, в миллисекундах double time; // Разница времен, в секундах. startTime = System.currentTimeMillis();

double width, height, hypotenuse; // стороны треугольника width = 42.0; height = 17.0;

hypotenuse = Math.sqrt(width*width + height*height);

System.out.print("A triangle with sides 42 and 17 has hypotenuse ");

System.out.printIn(hypotenuse);

System.out.printIn("\nMathematically, sin(x)*sin(x) + " + "cos(x)*cos(x) - 1 should be 0."); System.out.println("Let’s check this for x = 1:");

System.out.print("sin(l)*sin(l) + cos(1)*cos(1) - 1 is "); System.out.printIn(Math.s in(1)*Math.s in(1)

Math.cos(1)*Math.cos (1) – 1); System.out.println("(There can be round-off errors when " + " computing with real numbers!)");

System.out.print("\nHere is a random number: ");

System.out.printIn(Math.random());

endTime = System.currentTimeMillis();

time = (endTime – startTime) / 1000.0;

System.out.print("\nRun time in seconds was: ");

System.out.printIn(time);

Величина типа string - это объект. Этот объект содержит данные, а именно, последовательность символов, составляющих строку. В нем есть также функции. Например, функция length о вычисляет длину строки. Строку можно создать при помощи следующей декларации:

str = "Seize the day!"; Еще один пример:

System.out.print("The number of characters in "); System.out.println("the string V’Hello WorldV is "); System.out.println("Hello World".length());

Объект string содержит множество функций. Вот некоторые из них.

Si.equals (s2) - возвращает логическое значение, true - если строка si в точности такая же, как строка s2.

Si.equalslgnoreCase (s2) - то же самое, что и sl.equalsO, но заглавные и строчные буквы считаются одинаковыми.

Si. length () - целое значение, равное количеству символов в строке.

Si.charAt(N) - значение типа char, символ, расположенный на позиции с номером N в строке, начиная с нулевой позиции.

Si. substring (n,m) - тип string, строка с символами в позициях N,

N+ 1, …, м- 1.

Si.indexof (s2) - целое, если s2 является фрагментом si, то возвращается номер позиции, с которого начинается s2 в si.

Si. compareTo (s2) - целое, если строки равны, то 0.

Si. touppercase () - строка, записанная заглавными буквами.

Si. trim о - строка с удаленными непечатаемыми символами, такими как пробелы, табуляции и т. п.

Строки можно складывать:

System.out.println("Hello, " + name + ". Pleased to meet you!");

Примитивные типы можно прибавлять к строке, тогда они приводятся к строчному типу:

System.out.print("After "); System.out.print(years);

System.out.print(" years, the value is "); System.out.print(principal); Это можно записать в виде:

System.out.print("After " + years + " years, the value is " + principal);

Выражения

Литералы, переменные, функции - это примеры простых выражений. Более сложные выражения состоят из простых выражений и операторов, например А+В*С, В*С.

Арифметические операторы

Арифметические операторы обозначаются знаками +,-,*, /.

Операторы увеличения и уменьшения на единицу

Эти операторы требуют только одного операнда, обозначаются ++ и -.

counter = counter + 1; goalsScored = goalsScored + 1;

Эти выражения с помощью операторов увеличения и уменьшения можно записать следующим образом:

counter++; goa1s S со red++;

у = x++; у = ++x;

Text10.putIn(-x) ; z = (++x) * (y-) ;

Если x равно 6, то после выполнения инструкции у = х++ у будет равно 6, а после выполнения инструкции у = ++х у будет равно 7. В обоих случаях новое значение для х будет 7.

Операторы сравнения

Операторы сравнения используются при работе с логическими величинами, значение их булево, т. е. true или false:

А == в - А "равняется" В;

А!= в - А "не равняется" В;

А < в - А "меньше чем" В;

А > в - А "больше чем" В;

А <= в - А "меньше или равно" В;

А >= в - А "больше или равно" В.

Эти операторы можно использовать при работе с числовыми значениями в качестве операндов.

boolean sameSign;

sameSign = ((х > 0) == (у > 0));

Логические операторы

Логические операторы работают с логическими значениями. Это операторы and (И) (&&), or (ИЛИ) (и), not (НЕ) (!). Например:

(х!= 0) && (у/х > 1) test = ! test;

Условные операторы

Общий вид простого условного оператора:

boolean-expression ? expression-1: expression-2

Если булево выражение имеет значение true, то выполняется expression-i, в противном случае выполняется expression-2. Например:

next = (N с е 2 == 0) ? (N/2) : (3*N+1) ;

Операторы присваивания и приведения типа

Примеры j

int A; double X; short B; A = 17;

X = А; //А приводится к типу double

В = A; // нельзя, тип не приводится автоматически

Исправление:

В = (short)А; // тип приводится в явном виде

При приведении некоторых типов могут произойти смысловые изменения значений, так (short) 100 ООО равно 34 464. Тип short образуется путем взятия 4 битов от исходного значения, часть информации теряется.

Пример использования операторов приведения типа

(int) (6*Math. random о) - целое случайное число из набора 0, 1,2, 3, 4, 5.

Можно приводить типы из целых к char, при этом берется значение соовет- ствующего символа в соответствии с кодировкой Unicode. Например, (char) 97 - это ‘a’, a (int) ‘ + ‘ равно 43.

Примеры j

х -= у; // х = х - у;

х *= у; // х = х * у;

х /= у; // х = х / у;

х с е= у; // х = х % у; (для целых х и у)

q &&= р; // q = q && р; (для логических booleans q и р)

Комбинированные операторы присваивания можно использовать и со строками:

str += X str = str + X

Иерархия операторов

Между операторами установлено старшинство. В последовательности операторов они выполняются не один за другим, как написано, а в соответствии

с правилами иерархии операторов. Приведем список операторов в соответствии с их положением в иерархии операторов. Чем выше в этом списке находится оператор, тем большим приоритетом он обладает. Из двух операторов с разным приоритетом в первую очереди выполняется такой оператор, приоритет которого выше.

Унарными операторами называются такие операторы, для выполнения которых необходим один операнд. Бинарные операторы требуют наличия двух операндов. Тернарные операторы работают с тремя операндами.

Список операторов в соответствии с иерархией:

1. Унарные операторы: ++, -, !, унарные - и +, оператор приведения типа.

2. Умножение и деление: *, /, %.

3. Сложение и вычитание: +, -.

4. Операторы отношений: <, >, <=, >=.

5. Операторы равенства и неравенства: ==, !=.

6. Логическое сложение "И": &&.

7. Логическое "ИЛИ": ||.

8. Условный оператор: ?:

9. Операторы присваивания: =, +=, -=, *=, /=, %=.

Операторы, находящиеся в одной строчке в списке, который приводится выше, имеют одинаковый приоритет. Операторы с одинаковым приоритетом выполняются в том порядке, в котором они появляются в тексте программы. При этом необходимо учитывать, что для унарных операторов и операторов присваивания этот порядок таков, что операторы выполняются по порядку справа налево. Остальные операторы выполняются по порядку слева направо. Порядок выполнения операторов можно изменять. Для этого используются круглые скобки. В первую очередь будут выполняться те операторы, которые заключены в скобки.

Последнее обновление: 26.09.2018

На сегодняшний момент язык Java является одним из самых распространенных и популярных языков программирования. Первая версия языка появилась еще в 1996 году в недрах компании Sun Microsystems, впоследствии поглощенной компанией Oracle. Java задумывался как универсальный язык программирования, который можно применять для различного рода задач. И к настоящему времени язык Java проделал большой путь, было издано множество различных версий. Текущей версией является Java 11, которая вышла в сентябре 2018 года. А Java превратилась из просто универсального языка в целую платформу и экосистему, которая объединяет различные технологии, используемые в целого ряда задач: от создания десктопных приложений до написания крупных веб-порталов и сервисов. Кроме того, язык Java активно применяется для создания программного обеспечения для целого ряда устройств: обычных ПК, планшетов, смартфонов и мобильных телефонов и даже бытовой техники. Достаточно вспомнить популярность мобильной ОС Android, большинство программ для которой пишутся именно на Java.

Особенности Java

Ключевой особенностью языка Java является то, что его код сначала транслируется в специальный байт-код, независимый от платформы. А затем этот байт-код выполняется виртуальной машиной JVM (Java Virtual Machine). В этом плане Java отличается от стандартных интерпретируемых языков как PHP или Perl, код которых сразу же выполняется интерпретатором. В то же время Java не является и чисто компилируемым языком, как С или С++.

Подобная архитектура обеспечивает кроссплатформенность и аппаратную переносимость программ на Java, благодаря чему подобные программы без перекомпиляции могут выполняться на различных платформах - Windows, Linux, Mac OS и т.д. Для каждой из платформ может быть своя реализация виртуальной машины JVM, но каждая из них может выполнять один и тот же код.

Java является языком с Си-подобным синтаксисом и близок в этом отношении к C/C++ и C#. Поэтому, если вы знакомы с одним из этих языков, то овладеть Java будет легче.

Еще одной ключевой особенностью Java является то, что она поддерживает автоматическую сборку мусора. А это значит, что вам не надо освобождать вручную память от ранее использовавшихся объектов, как в С++, так как сборщик мусора это сделает автоматически за вас.

Java является объектно-ориентированным языком. Он поддерживает полиморфизм, наследование, статическую типизацию. Объектно-ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений.

Установка Java

Для работы программ на языке Java на целевой машине должна быть установлена JRE (Java Runtime Environment). JRE представляет минимальную реализацию виртуальной машины, а также библиотеку классов. Поэтому, если мы хотим запускать программы, то нам надо установить JRE. Для каждой конкретной платформы имеется своя версия JRE.

Однако, так как мы собираемся не только запускать программы, но и разрабатывать их, нам потребуется специальный комплект для разработки JDK (Java Development Kit). JDK уже содержит JRE, а также включает ряд дополнительных программ и утилит, в частности компилятор Java.

Загрузить и установить соответствующую версию JDK можно с с официального сайта Oracle: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Итак, с выше упомянутого адреса загрузим программу установки JDK для последней версии Java.

Затем нас перебросит на страницу, где надо выбрать версию для целевой ОС - Windows, MacOS или Linux:

Для каждой ОС есть два варианта загрузки: в виде установщика, либо в виде архива, который не надо устанавливать. Например, моя ОС - Windows, поэтому я загружаю файл jdk_11_windows-x64_bin.exe, который представляет программу установки.

После загрузки запустим программу установки:

Оставим все опции по умолчанию и нажмем на Next для выполнения установки.

После завершения установки JDK мы увидим вот такое окно:

Итак, после установки JDK создадим первую программу на Java.

Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:

  • арифметические операторы;
  • операторы сравнения;
  • побитовые операторы;
  • логические операторы;
  • операторы присваивания;
  • прочие операторы.

Арифметические операторы

Арифметические операторы - используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:

Пример

Следующий простой пример показывает программно арифметические операторы. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Public class Test { public static void main(String args) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b)); System.out.println("a - b = " + (a - b)); System.out.println("a * b = " + (a * b)); System.out.println("b / a = " + (b / a)); System.out.println("b % a = " + (b % a)); System.out.println("c % a = " + (c % a)); System.out.println("a++ = " + (a++)); System.out.println("b-- = " + (a--)); // Проверьте разницу в d++ и ++d System.out.println("d++ = " + (d++)); System.out.println("++d = " + (++d)); } }

A + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5 a++ = 10 b-- = 11 d++ = 25 ++d = 27

Операторы сравнения

Есть следующие операторы сравнения, поддерживаемые на языке Java. Предположим, переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены реляционные операторы или операторы сравнения в Java:

Оператор Описание Пример
== Проверяет, равны или нет значения двух операндов, если да, то условие становится истинным (A == B) - не верны
!= Проверяет, равны или нет значения двух операндов, если значения не равны, то условие становится истинным (A != B) - значение истинна
> Проверяет, является ли значение левого операнда больше, чем значение правого операнда, если да, то условие становится истинным (A > B) - не верны
Проверяет, является ли значение левого операнда меньше, чем значение правого операнда, если да, то условие становится истинным (A
>= Проверяет, является ли значение левого операнда больше или равно значению правого операнда, если да, то условие становится истинным (A >= B) - значение не верны
Проверяет, если значение левого операнда меньше или равно значению правого операнда, если да, то условие становится истинным (A

Пример

Следующий простой пример показывает, программно операторы сравнения в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Public class Test { public static void main(String args) { int a = 10; int b = 20; System.out.println("a == b = " + (a == b)); System.out.println("a != b = " + (a != b)); System.out.println("a > b = " + (a > b)); System.out.println("a = a = " + (b >= a)); System.out.println("b

A == b = false a != b = true a > b = false a = a = true b

Побитовые операторы

Java определяет несколько побитовых операторов, которые могут быть применены для целочисленных типов: int, long, short, char и byte. В Java побитовый оператор работает над битами и выполняет операцию бит за битом. Предположим, если a = 60; и b = 13; то в двоичном формате они будут следующие:

a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011

Предположим целочисленные переменная A равна 60, а переменная B равна 13. В следующей таблице перечислены побитовые операторы в Java:

Оператор Описание Пример
& (побитовое и) Бинарный оператор AND копирует бит в результат, если он существует в обоих операндах. (A & B) даст 12, который является 0000 1100
| (побитовое или) Бинарный оператор OR копирует бит, если он существует в любом из операндов. (A | B) даст 61 который равен 0011 1101
^ (побитовое логическое или) Бинарный оператор XOR копирует бит, если он установлен в одном операнде, но не в обоих. (A ^ B) даст 49, которая является 0011 0001
~ (побитовое дополнение) Бинарный оператор дополнения и имеет эффект «отражения» бит. (~ A) даст -61, которая является формой дополнением 1100 0011 в двоичной записи
Бинарный оператор сдвига влево. Значение левых операндов перемещается влево на количество бит, заданных правым операндом. A
>> (сдвиг вправо) Бинарный оператор сдвига вправо. Значение правых операндов перемещается вправо на количество бит, заданных левых операндом. A >> 2 даст 15, который является 1111
>>> (нулевой сдвиг вправо) Нулевой оператор сдвига вправо. Значение левых операндов перемещается вправо на количество бит, заданных правым операндом, а сдвинутые значения заполняются нулями. A >>> 2 даст 15, который является 0000 1111

Пример

Следующий простой пример показывает, программно побитовые операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Public class Test { public static void main(String args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c); c = a > 2; /* 215 = 1111 */ System.out.println("a >> 2 = " + c); c = a >>> 2; /* 215 = 0000 1111 */ System.out.println("a >>> 2 = " + c); } }

Будет получен следующий результат:

A & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a > 15 a >>> 15

Логические операторы

Предположим, логическая переменная A имеет значение true, а переменная B хранит false. В следующей таблице перечислены логические операторы в Java:

Пример

Public class Test { public static void main(String args) { boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b)); System.out.println("!(a && b) = " + !(a && b)); } }

Это произведет следующий результат:

A && b = false a || b = true !(a && b) = true

Операторы присваивания

Существуют следующие операторы присваивания, поддерживаемые языком Java:

Оператор Описание Пример
= Простой оператор присваивания, присваивает значения из правой стороны операндов к левому операнду C = A + B, присвоит значение A + B в C
+= Оператор присваивания «Добавления», он присваивает левому операнду значения правого C += A, эквивалентно C = C + A
-= Оператор присваивания «Вычитания», он вычитает из правого операнда левый операнд C -= A, эквивалентно C = C - A
*= Оператор присваивания «Умножение», он умножает правый операнд на левый операнд C * = A эквивалентно C = C * A
/= Оператор присваивания «Деление», он делит левый операнд на правый операнд C /= A эквивалентно C = C / A
%= Оператор присваивания «Модуль», он принимает модуль, с помощью двух операндов и присваивает его результат левому операнду C %= A, эквивалентно C = C % A
Оператор присваивания «Сдвиг влево» C
>>= Оператор присваивания «Сдвиг вправо» C >>= 2, это как C = C >> 2
&= Оператор присваивания побитового «И» («AND») C &= 2, это как C = C & 2
^= Оператор присваивания побитового исключающего «ИЛИ» («XOR») C ^= 2, это как C = C ^ 2
|= Оператор присваивания побитового «ИЛИ» («OR») C |= 2, это как C = C | 2

Пример

Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Public class Test { public static void main(String args) { int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c = a + b = " + c); c += a ; System.out.println("c += a = " + c); c -= a ; System.out.println("c -= a = " + c); c *= a ; System.out.println("c *= a = " + c); a = 10; c = 15; c /= a ; System.out.println("c /= a = " + c); a = 10; c = 15; c %= a ; System.out.println("c %= a = " + c); c >= 2 ; System.out.println("c >>= 2 = " + c); c >>= 2 ; System.out.println("c >>= a = " + c); c &= a ; System.out.println("c &= 2 = " + c); c ^= a ; System.out.println("c ^= a = " + c); c |= a ; System.out.println("c |= a = " + c); } }

Будет получен следующий результат:

C = a + b = 30 c += a = 40 c -= a = 30 c *= a = 300 c /= a = 1 c %= a = 5 c >= 2 = 5 c >>= 2 = 1 c &= a = 0 c ^= a = 10 c |= a = 10

Прочие операторы

Есть несколько других операторов, поддерживаемых языком Java.

Тернарный оператор или условный оператор (?:)

Тернарный оператор - оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:

Переменная x = (выражение) ? значение if true: значение if false

Пример

Ниже приведен пример:

Public class Test { public static void main(String args){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println("Значение b: " + b); b = (a == 10) ? 20: 30; System.out.println("Значение b: " + b); } }

Будет получен следующий результат:

Значение b: 30 Значение b: 20

Оператор instanceof

Оператор instanceof - проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:

(Переменная ссылочного объекта) instanceof (класс/тип интерфейса)

Примеры

Если переменная ссылочного объекта в левой части оператора проходит проверку для класса/типа интерфейса на правой стороне, результатом будет значение true. Ниже приведен пример и описание оператора instanceof:

Public class Test { public static void main(String args){ String name = "Олег"; // Следующее вернётся верно, поскольку тип String boolean result = name instanceof String; System.out.println(result); } }

Будет получен следующий результат:

Этот оператор по-прежнему будет возвращать значение true, если сравниваемый объект является совместимым с типом на право назначения. Ниже приводится еще один пример:

Class Vehicle {} public class Car extends Vehicle { public static void main(String args){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println(result); } }

Будет получен следующий результат:

Приоритет операторов в Java

Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:

Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».

В таблице операторы с наивысшим приоритетом размещаются в верхней части, и уровень приоритета снижается к нижней части таблицы. В выражении высокий приоритет операторов в Java будет оцениваться слева направо.

Категория Оператор Ассоциативность
Постфикс () . (точка) Слева направо
Унарный ++ - - ! ~ Справа налево
Мультипликативный * / % Слева направо
Аддитивный + - Слева направо
Сдвиг >> >>> Слева направо
Реляционный > >= Слева направо
Равенство == != Слева направо
Побитовое «И» («AND») & Слева направо
Побитовое исключающее «ИЛИ» («XOR») ^ Слева направо
Побитовое «ИЛИ» («OR») | Слева направо
Логическое «И» («AND») && Слева направо
Логическое «ИЛИ» («OR») || Слева направо
Условный ?: Справа налево
Присваивание = += -= *= /= %= >>= Справа налево
Запятая , Слева направо

В следующем уроке поговорим об управлении циклом в программировании на Java. В этом уроке будут описаны различные типы циклов, как циклы могут быть использованы в разработке программ, и для каких целей они используются.

7 ответов

Концептуальная разница проста:

    Декларация: вы заявляете, что что-то существует, например, класс, функция или переменная. Вы не говорите ничего о том, как выглядит этот класс или функция, вы просто говорите, что он существует.

    Определение. Вы определяете, как что-то реализуется, например, класс, функция или переменная, то есть вы говорите, что это на самом деле.

В Java разница между ними невелика, и формально говоря, объявление включает не только идентификатор, но и его определение. Вот как я лично подробно интерпретирую термины:

    Классы . Java действительно не разделяет декларации и определения, как это делает C/С++ (в файлах заголовка и cpp). Вы определяете их в том месте, где вы их объявляете.

    Функции . Когда вы пишете интерфейс (или абстрактный класс), вы можете сказать, что вы объявляете функцию, не определяя ее. Обычные функции, однако, всегда определяются прямо там, где они объявлены. Если хотите, смотрите тело функции как свое определение.

    Переменные . Объявление переменной может выглядеть следующим образом:

    (вы заявляете, что существует переменная x и имеет тип int), если она является локальной переменной или членом. В Java нет информации о x для определения, кроме возможных значений, которые она должна содержать, которая определяется назначением для нее.

Вот краткий обзор того, как я использую термины:

Abstract class SomeClass { // class decl. // \ int x; // variable decl. | // | public abstract void someMethod(); // function decl. | // | public int someOtherMethod() { // function decl. | // | class if (Math.random() > .5) // \ | def. return x; // | function definition | else // | | return -x; // / | // | } // | } // /

Спецификация языка Java задает и использует термин "объявление" широко, но не использует "определение" , кроме как нормальное английское слово.

Мое свидетельство заключается в том, что термин "декларация" появляется несколько раз в таблице содержания JLS и индексе, но слово "определение" также не отображается.

Итак, когда вы видите, что кто-то использует слово "определение" в контексте Java, они либо используют его в нетехническом смысле, либо небрежно относятся к своей терминологии.

В последнем случае они могут означать то же, что и технический термин "декларация" , или они могут означать что-то другое. И если они означают что-то еще, вам нужно спросить их, что они означают. Если они определили его... достаточно справедливым, но это не стандартная терминология.

Ответы, в которых говорится, что "определение" относится к точке, в которой инициализируется переменная, специально не поддерживаются... в контексте Java. В Java инициализация переменной происходит либо в точке объявления, либо в более позднем назначении. В последнем случае специальный термин не используется... или нужен... кроме назначения и/или инициализации. Нет указанной точки, в которой хранилище выделяется для переменной. В самом деле, есть вероятность, что пространство для самой переменной выделено до , объявление будет достигнуто.

Причина, по которой термин "декларация" не используется в Java в спецификации JLS, заключается в том, что он не нужен.

  • Так как Java позволяет объявлять участников в любом порядке, нет необходимости в "форвардных объявлениях".
  • В Java пространство стека, необходимое для переменной, является постоянной времени компиляции, поэтому вычисления смещения стека происходят во время компиляции. (Помните, что в Java массив является ссылкой на объект кучи... и только ссылка хранится в кадре стека.)
  • То, как Java обрабатывает "определение без инициализации" поля или переменной, не требует отдельной "декларации". Если требуется инициализация переменной, это может произойти в нескольких точках исходного кода.

(Единственное место в Java, где они могли использовать объявление в сравнении с определением, - это абстрактные методы. За исключением того, что если бы они это сделали, ему пришлось бы ссылаться на объявление обычного метода как на определение... для согласованности. и это будет путать, поэтому они просто называют "абстрактный" подзаголовок декларацией абстрактного метода.)

C и С++ обрабатывают эти вещи по-разному и, следовательно, в своих технических описаниях требуются разные термины "объявление" и "определение" . Я принимаю определения "Глоссарий Солнца": они C/С++ -центрические.

декларация: Оператор, который устанавливает идентификатор и связывает с ним атрибуты без необходимости резервирования его хранилища (для данных) или обеспечения реализации (для методов).

определение: Объявление, которое резервирует хранилище (для данных) или обеспечивает реализацию (для методов).

То, как я читаю глоссарий Sun, будет следующим:

List i; // declaration - variable on the stack i = new ArrayList(); // definition - gives variable a reference

1. Декларация означает создание a primitive or Object reference variable , но без присвоения значения или объекта соответственно.

, например:

Int x; // declaration of x of type int Cat myCat; // declaration of myCat an Object of type Cat

2. Defination - это когда мы присваиваем им значения или объект.

Int x = 5; Cat myCat = new Cat();

3. В случае метода, как это...

Public abstract void go(); // Method Declaration (Abstract method) public void go(){ // Method Defination // Your code }

Я думаю, что я могу лучше объяснить этот вопрос, например.

Java представляет собой язык программирования и платформу вычислений, которая была впервые выпущена Sun Microsystems в 1995 г. Существует множество приложений и веб-сайтов, которые не работают при отсутствии установленной Java, и с каждым днем число таких веб-сайтов и приложений увеличивается. Java отличается быстротой, высоким уровнем защиты и надежностью. От портативных компьютеров до центров данных, от игровых консолей до суперкомпьютеров, используемых для научных разработок, от сотовых телефонов до сети Интернет - Java повсюду!

Можно ли загрузить Java бесплатно?

Да, Java можно загрузить бесплатно. Загрузите последнюю версию на веб-сайте .

Если вы разрабатываете встроенное или бытовое устройство и хотите использовать в нем технологии Java, свяжитесь со специалистами Oracle и получите подробную информацию об интеграции Java в различные типы устройств.

Почему необходимо выполнять обновление до новейшей версии Java?

Новейшая версия Java содержит важные улучшения, позволяющие повысить производительность, стабильность и безопасность приложений Java, запускаемых на вашем компьютере. Установка этого бесплатного пакета обновления обеспечит безопасную и эффективную работу приложений Java, установленных на вашем компьютере.

ТЕХНИЧЕСКИЕ ПОДРОБНОСТИ
Я слышал термины "виртуальная машина Java" и JVM. Это и есть программное обеспечение Java?

Виртуальная машина Java представляет собой только один аспект программного обеспечения Java, который задействуется при взаимодействии через Интернет. Виртуальная машина Java встраивается непосредственно в загрузку программного обеспечения Java, и используется для поддержки запуска приложений Java.