Операторы – это специальные символы, которые выполняют особые операции над одним или двумя операндами, а затем возвращают результат. Язык JavaFX Script содержит операторы присваивания, арифметические операторы, унарные операторы, операторы сравнения, логические операторы и операторы сравнения типа.
|
Содержание
Самым используемым оператором присваивания, который вам встретится является оператор "=". Используйте его для присваивания значения справа от оператора, операнду слева от оператора:
result = num1 + num2;
days = ["Mon","Tue","Wed","Thu","Fri"];
|
Вы уже использовали этот оператор во многих предыдущих уроках.
Арифметические операторы позволяют выполнять сложение, вычитание, умножение и деление. Оператор mod делит один операнд на другой и возвращает остаток в качестве результата.
+ (additive operator)
- (subtraction operator)
* (multiplication operator)
/ (division operator)
mod (remainder operator)
|
Следующий скрипт дает несколько примеров использования арифметических операторов:
var result = 1 + 2; // result is now 3
println(result);
result = result - 1; // result is now 2
println(result);
result = result * 2; // result is now 4
println(result);
result = result / 2; // result is now 2
println(result);
result = result + 8; // result is now 10
println(result);
result = result mod 7; // result is now 3
println(result);
|
Вы также можете комбинировать арифметические операторы с операторами присваивания для создания составных присваиваний. Например, result += 1; и result = result+1; оба выражения увеличивают result на 1.
var result = 0;
result += 1;
println(result); // result is now 1
result -= 1;
println(result); // result is now 0
result = 2;
result *= 5; // result is now 10
println(result);
result /= 2; // result is now 5
println(result);
|
Единственный арифметический оператор, который не может быть использованы таким образом, – это mod . Если, например, вы хотите разделить result на 2, а затем присвоить остаток обратно к нему, вам необходимо будет написать: result = result mod 2;
Большинство операторов требуют двух операндов; унарные операторы используют только один операнд и осуществляют такие операции, как увеличение/уменьшение значения на единицу, инвертирование числа или инвертирование значения булевой переменной.
- Unary minus operator; negates a number
++ Increment operator; increments a value by 1
-- Decrement operator; decrements a value by 1
not Logical complement operator; inverts the value of a boolean
|
Следующий скрипт тестирует унарные операторы:
var result = 1; // result is now 1
result--; // result is now 0
println(result);
result++; // result is now 1
println(result);
result = -result; // result is now -1
println(result);
var success = false;
println(success); // false
println(not success); // true
|
Операторы инкремента и декремента (уменьшающие и увеличивающие значение на 1) могут применяться до (префикс) или после (постфикс) операнда. Код result++; и ++result; увеличивают result на единицу. Единственная разница заключается в том, что префиксная версия (++result ) возвращает значение операнда после увеличения его на 1, а постфиксная версия (result++ ) возвращает значение операнда перед увеличением его на 1. (Можно запомнить какое значение возвращается по положению знаков: если знаки слева как в ++result , то сначала выполняется увеличение, а затем возвращается значение, в то время как result++ возвращает значение, а затем выполняет увеличение). Если вам нужно просто выполнить операцию инкремента или декремента, то не имеет значения, какой вариант вы выберете. Но если вы используете этот оператор в рамках другого выражения, то результат может быть разный в зависимости от выбранного варианта.
Следующий скрипт показывает различие между операторами:
var result = 3;
result++;
println(result); // result is now 4
++result;
println(result); // result is now 5
println(++result); // result is now 6
println(result++); // this still prints prints 6!
println(result); // but the result is now 7
|
Операторы сравнения определяют, если один операнд больше, меньше, равен или не равен другому операнду.
== equal to
!= not equal to
> greater than
>= greater than or equal to
< less than
<= less than or equal to
|
Следующий скрипт тестирует эти операторы:
def num1 = 1;
def num2 = 2;
println(num1 == num2); // prints false
println(num1 != num2); // prints true
println(num1 > num2); // prints false
println(num1 >= num2); // prints false
println(num1 < num2); // prints true
println(num1 <= num2); // prints true
|
Логическое И (and ) и логическое ИЛИ (or ) выполняют операции над двумя булевыми выражениями. При использовании этих операторов второй операнд оценивается только в том случае, если необходимо: например, для операции and , если результат первого выражения является ложным, второе выражение, не будет оцениваться. Для операции or , если результат первого выражение верен, второе выражение не будет оцениваться.
Следующий скрипт демонстрирует использование этих операторов, путем определения переменных username и password , и последующего вывода совпадения различных условий:
def username = "foo";
def password = "bar";
if ((username == "foo") and (password == "bar")) {
println("Test 1: username AND password are correct");
}
if ((username == "") and (password == "bar")) {
println("Test 2: username AND password is correct");
}
if ((username == "foo") or (password == "bar")) {
println("Test 3: username OR password is correct");
}
if ((username == "") or (password == "bar")) {
println("Test 4: username OR password is correct");
}
|
Результаты следующие:
Test 1: username AND password are correct
Test 3: username OR password is correct
Test 4: username OR password is correct
|
Оператор instanceof сравнивает объект с указанным типом. Вы можете использовать его, чтобы определить является ли объект экземпляром определенного класса:
def str1="Hello";
println(str1 instanceof String); // prints true
def num = 1031;
println(num instanceof java.lang.Integer); // prints true
|
Вы поймете как можно использовать этот оператор, когда узнаете больше о классах и наследовании в последнем уроке этого курса.
|
|