Spec-Zone .ru
спецификации, руководства, описания, API
|
Теперь, когда Вы понимаете переменные и операторы, пора узнать о выражениях, операторах, и блоках. Операторы могут использоваться в создании выражений, которые вычисляют значения; выражения являются базовыми компонентами операторов; операторы могут быть сгруппированы в блоки.
Выражение является конструкцией, составленной из переменных, операторов, и вызовов метода, которые создаются согласно синтаксису языка, который оценивает к единственному значению. Вы уже видели примеры выражений, иллюстрированных полужирным ниже:
int cadence = 0;
anArray[0] = 100;
System.out.println("Element 1 at index 0: " + anArray[0]);
int result = 1 + 2; // result is now 3
if (value1 == value2) System.out.println("value1 == value2");
Тип данных значения, возвращенного выражением, зависит от элементов, используемых в выражении. Выражение cadence = 0
возвраты int
потому что оператор присваивания возвращает значение того же самого типа данных как его левый операнд; в этом случае, cadence
int
. Как можно видеть от других выражений, выражение может возвратить другие типы значений также, такой как boolean
или String
.
Язык программирования Java позволяет Вам создавать составные выражения из различных меньших выражений, пока тип данных, требуемый одной частью выражения, соответствует тип данных другого. Вот пример составного выражения:
1 * 2 * 3
В этом определенном примере порядок, в котором оценивается выражение, незначителен, потому что результат умножения независим от порядка; результатом всегда является то же самое, независимо от того в котором порядке Вы применяете умножение. Однако, это не верно для всех выражений. Например, следующее выражение дает различные результаты, в зависимости от того, выполняете ли Вы дополнение или операцию деления сначала:
x + y / 100 // ambiguous
Можно определить точно, как выражение будет оценено, используя сбалансированную круглую скобку: (и). Например, чтобы сделать предыдущее однозначное выражение, Вы могли записать следующее:
(x + y) / 100 // unambiguous, recommended
Если Вы явно не указываете на порядок на операции, которые будут выполняться, порядок определяется приоритетом, присвоенным операторам в использовании в пределах выражения. Операторы, у которых есть более высокий приоритет, оцениваются сначала. Например, у оператора подразделения есть более высокий приоритет, чем делает оператор сложения. Поэтому, следующие два оператора эквивалентны:
x + y / 100
x + (y / 100) // unambiguous, recommended
При записи составных выражений, быть явным и указать с круглыми скобками, какие операторы должны быть оценены сначала. Эта практика делает код легче считать и поддержать.
Операторы примерно эквивалентны предложениям на естественных языках. Оператор формирует полный модуль из выполнения. Следующие типы выражений могут быть превращены в оператор, завершая выражение с точкой с запятой (;
).
++
или --
Такие операторы вызывают операторами выражения. Вот некоторые примеры операторов выражения.
// assignment statement aValue = 8933.234; // increment statement aValue++; // method invocation statement System.out.println("Hello World!"); // object creation statement Bicycle myBike = new Bicycle();
В дополнение к операторам выражения есть два других вида операторов: операторы объявления и операторы управления. Оператор объявления объявляет переменную. Вы уже видели много примеров операторов объявления:
// declaration statement double aValue = 8933.234;
Наконец, операторы управления регулируют порядок, в котором выполняются операторы. Вы узнаете об операторах управления в следующем разделе, Операторах управления
Блок является группой нуля или большего количества операторов между сбалансированными фигурными скобками и может использоваться где угодно, единственный оператор позволяется. Следующий пример, BlockDemo
, иллюстрирует использование блоков:
class BlockDemo { public static void main(String[] args) { boolean condition = true; if (condition) { // begin block 1 System.out.println("Condition is true."); } // end block one else { // begin block 2 System.out.println("Condition is false."); } // end block 2 } }