Магнитное действие эл тока. Действия электрического тока: тепловое, химическое, магнитное, световое и механическое

Большинство операций над примитивными типами выполняется не с помощью методов, а с помощью специальных символов, называемых знаком операции .

Операция присваивания

Присвоение переменной значения константы, другой переменной или выражения (переменных и/или констант, разделенных знаками операций), называется операцией присваивания и обозначается знаком "= ", например: x = 3 ; y = x; z = x; В Java допустимо многократное использование операции присваивания в одном выражении, например: x1 = x2 = x3 = 0 ; Эта операция выполняется справа налево, т.е. сначала переменной x3 присваивается значение 0 , затем переменной x2 присваивается значение переменной x3 (0), и, наконец, переменной x1 присваивается значение переменной x2 (0). Знаки операций, аргументами которых являются числа, разделяются на две категории: унарные (unary) знаки операций с одним аргументом и бинарные (binary) с двумя аргументами.

Унарные операции

В Java определены следующие унарные операции:
  • унарный минус " - " – меняет знак числа или выражения на противоположный;
  • унарный плюс " + " – не выполняет никаких действий над числом или выражением;
  • побитовое дополнение " ~ " (только для целых) – инвертирует все биты поля числа (меняет 0 на 1 и 1 на 0);
  • инкремент " ++ " (только для целых) – увеличивает значение переменной на 1;
  • декремент " -- " (только для целых) – уменьшает значение переменной на 1.
Примеры унарных операций " + " и " - ": int i = 3 , j, k; j= - i; // j = -3 k = + i; // k = 3 Пример операции побитового дополнения: int a = 15 ; int b; b = ~ a; // b = -16 Числа a и b являются числами типа int , т.е. представляются внутри компьютера как двоичные целые числа со знаком длиной 32 бита, поэтому двоичное представление чисел a и b будет выглядеть следующим образом: a = 00000000 00000000 00000000 00001111 b = 11111111 11111111 11111111 11110000 Как видно из этого представления, все нулевые биты в числе a изменены на единичные биты в числе b , а единичные биты в a изменены на нулевые биты. Десятичным представлением числа b будет –16 . Знаки операции инкремента и декремента могут размещаться как до, так и после переменной. Эти варианты называются соответственно префиксной и постфиксной записью этих операции. Знак операции в префиксной записи возвращает значение своего операнда после вычисления выражения. При постфиксной записи знак операции сначала воз­вращает значение своего операнда и только после этого вычисляет инкремент или декремент, например: int x = 1 , y, z; y = ++ x; z= x++ ; Переменная y будет присвоено значение 2 , поскольку сначала значение x будет увеличено на 1 , а затем результат будет присвоен переменной y . Переменной z будет присвоено значение 1 , поскольку сначала переменной z будет присвоено значение, а затем значение x будет увеличено на 1 . В обоих случаях новое значение переменной x будет равно 2 . Следует отметить, что в Java, в отличие от языка C, операции декремента и инкремента могут применяться и к вещественным переменным (типа float и double). Бинарные знаки операций подразделяются на операции с числовым результатом и операции сравнения, результатом которых является булевское значение.

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

В Java определены следующие арифметические бинарные операции :
  • сложение " + ";
  • вычитание " - ";
  • умножение " * ";
  • деление " / ";
  • вычисление остатка от деления целых чисел " % " (возвращает остаток от деления первого числа на второе, причем результат будет иметь тот же знак, что и делимое), например, результат операции 5%3 будет равен 2 , а результат операции (-7)%(-4) будет равен -3 . В Java операция может использоваться и для вещественных переменных (типа float или double).
Примеры бинарных арифметических операций: int x = 7 , x1, x2, x3, x4, x5; x1 = x + 10 ; // x1 = 17 x2 = x – 8 ; // x2 = -1 x3 = x2 * x; // x3 = -7 x4 = x/ 4 ; // x4 = 1 (при делении целых чисел // дробная часть отбрасывается) x5 = x% 4 // x5 = 3 (остаток от деления // 7 на 4)

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

  • Побитовые операции рассматривают исходные числовые значения как поля битов и выполняют над ними следующие действия:
  • установка бита в i -ой позиции поля результата в 1 , если оба бита в i -ых позициях операндов равны 1 , или в 0 в противном случае – побитовое И (" & ");
  • установка бита в i -ой позиции поля результата в 1 , если хотя бы один бит в i -ых позициях операндов равен 1 , или в 0 в противном случае – побитовое ИЛИ (" | ");
  • установка бита в i -ой позиции поля результата в 1 , если биты в i -ых позициях операндов не равны друг другу, или в 0 в противном случае – побитовое исключающее ИЛИ (" ^ ");
  • сдвиг влево битов поля первого операнда на количество битов, определяемое вторым операндом (бит знака числа при этом не меняется) – побитовый сдвиг влево с учетом знака " << ";
  • сдвиг вправо битов поля первого операнда на количество битов, определяемое вторым операндом (бит знака числа при этом не меняется) – побитовый сдвиг вправо с учетом знака " >> ";
  • сдвиг вправо битов поля первого операнда на количество битов, определяемое вторым операндом (бит знака числа при этом также сдвигается) – побитовый сдвиг вправо без учета знака " >>> ".
Примеры побитовых операций:
  1. Побитовое И

    int x = 112 ; int y = 94 ; int z; z = x & y; // z=80: 00000000 00000000 00000000 01010000
  2. Побитовое ИЛИ

    int x = 112 ; // x: 00000000 00000000 00000000 01110000 int y = 94 ; // y: 00000000 00000000 00000000 01011110 int z; z = x | y; // z = 126: 00000000 00000000 00000000 01111110
  3. Побитовое исключающее ИЛИ

    int x = 112 ; // x: 00000000 00000000 00000000 01110000 int y = 94 ; // y: 00000000 00000000 00000000 01011110 int z; z = x ^ y; // z = 46: 00000000 00000000 00000000 00101110
  4. Сдвиг влево с учетом знака

    int x = 31 , z; // x: 00000000 00000000 00000000 00011111 z = x << 2 ; // z = 124: 00000000 00000000 00000000 01111100
  5. Сдвиг вправо с учетом знака

    int x = - 17 , z; z = x >> 2 ; // z = -5: 11111111 11111111 11111111 11111011
  6. Сдвиг вправо без учета знака

    int x = - 17 , z; // x: 11111111 11111111 11111111 11101111 z = x >>> 2 ; // z = 1073741819 // z: 00111111 11111111 11111111 11111011

Комбинированные операции

В Java для бинарных арифметических операций можно использовать комбинированные (составные) знаки операций: идентификатор операция = выражение Это эквивалентно следующей операции: идентификатор = идентификатор операция выражение Примеры:
  1. Выражение x += b означает x = x + b .
  2. Выражение x -= b означает x = x - b .
  3. Выражение x *= b означает x = x * b .
  4. Выражение x /= b означает x = x / b .
  5. Выражение x %= b означает x = x % b .
  6. Выражение x &= b означает x = x & b .
  7. Выражение x |= b означает x = x | b .
  8. Выражение x ^= b означает x = x ^ b .
  9. Выражение x <<= b означает x = x << b .
  10. Выражение x >>= b означает x = x >> b .
  11. Выражение x >>>= b означает x = x >>> b .

Операции сравнения

В Java определены следующие операции сравнения:
  • " == " (равно), " != " (не равно),
  • " > " (больше), " >= " (больше или равно),
  • " < " (меньше) " <= " (меньше или равно)
имеют два операнда и возвращают булевское значение, соответствующее результату сравнения (false или true ). Следует обратить внимание, что при сравнении двух величин на равенство в Java, как и в C и в C++, используются символы "== " (два идущих без пробела друг за другом знака равенства), в отличие от оператора присваивания, в котором используется символ "= ". Использование символа " = " при сравнении двух величин либо вызывает ошибку при компиляции, либо приводит к неверному результату. Примеры операций сравнения: boolean isEqual, isNonEqual, isGreater, isGreaterOrEqual, isLess, isLessOrEqual; int x1 = 5 , x2 = 5 , x3 = 3 , x4 = 7 ; isEqual = x1 == x2; // isEqual = true isNonEqual = x1 != x2; // isNonEqual = false isGreater = x1 > x3; // isGreater = true // isGreaterOrEqual = true isGreaterOrEqual = x2 >= x3; isLess = x3 < x1; // isLess = true isLessOrEqual = x1 <= x3; // isLessOrEqual = false

Булевские операции

Булевские операции выполняются над булевскими переменными и их результатом также является значение типа boolean . В Java определены следующие булевские операции:
  • отрицание "!" – замена false на true , или наоборот;
  • операция И "&" – результат равен true , только, если оба операнда равны true , иначе результат – false ;
  • операция ИЛИ " | " – результат равен true , только, если хотя бы один из операндов равен true , иначе результат – false .
  • операция исключающее ИЛИ " ^ " – результат равен true , только, если операнды не равны друг другу, иначе результат – false .
Операции " & ", " | " и " ^ " можно, также как и соответствующие побитовые операции использовать в составных операциях присваивания: " &= ", " |= " и " ^= " Кроме того, к булевским операндам применимы операции " == " (равно) и " != " (не равно). Как видно из определения операций ИЛИ и И, операция ИЛИ приводит к результату true , когда первый операнд равен true , незави­симо от значения второго операнда, а операция И приводит к результату false , когда первый операнд равен false , независимо от значения второго операнда. В Java определены еще две булевские операции: вторые версии булевских операций И и ИЛИ, известные как укороченные (short-circuit) логические операции: укороченное И " && " и укороченное ИЛИ " || ". При использовании этих операций второй операнд вообще не будет вычисляться, что полезно в тех случаях, когда правильное функционирование правого операнда зависит от того, имеет ли левый операнд значение true или false . Примеры булевских операций: boolean isInRange, isValid, isNotValid, isEqual, isNotEqual; int x = 8 ; isInRange = x > 0 && x < 5 ; // isInRange = false isValid = x > 0 || x > 5 ; // isValid = true isNotValid = ! isValid; // isNotValid = false isEqual = isInRange == isValid; // isEqual = false // isNotEqual = true isNotEqual = isInRange != isValid

Условная операция

Условная операция записывается в форме выражение-1?выражение-2:выражение-3 . При этом сначала вычисляется выражение выражение-1 , которое должно дать булевское значение, а затем, если выражение-1 имеет значение true , вычисляется и возвращается выражение-2 как результат выполнения операции, либо (если выражение-1 имеет значение false), вычисляется и, как результат выполнения операции, возвращается выражение-3 . Пример условной операции: x= n> 1 ? 0 : 1 ; Переменной x будет присвоено значение 0 , если n>1 (выражение n>1 имеет значение true) или 1 , если n≤1 (выражение n>1 имеет значение false).

Старшинство операций

Операции в выражениях выполняются слева направо, однако, в соответствии со своим приоритетом. Так операции умножения в выражении y = x + z* 5 ; будет выполнена раньше, чем операция сложения, поскольку приоритет операции умножения выше, чем приоритет операции сложения. Приоритеты операций (в порядке уменьшения приоритета) в Java приведены в табл. 1.
Круглые скобки повышают старшинство операций, которые находятся внутри них. Так, если в приведенное выше выражение вставить скобки: y = (x + z) * 5 ; то сначала будет выполнена операция сложения, а затем операция умножения. Иногда скобки используют просто для того, чтобы сделать выражение более читаемым, например: (x > 1 ) && (x <= 5 ) ;

Преобразование и приведение типов при выполнении операций

В операции присваивания и арифметических выражениях могут использоваться литералы, переменные и выражения разных типов, например: double y; byte x; y = x + 5 ; В этом примере выполняется операция сложения переменной x типа byte и литерала 5 (типа int) и результат присваивается переменной y типа double . В Java, как и в языке C, преобразования типов при вычислении выражений могут выполняться автоматически, либо с помощью оператора приведения типа. Однако правила приведения типов несколько отличаются от правил языка C, и в целом являются более строгими, чем в языке C. При выполнении операции присваивания преобразование типов происходит автоматически, если происходит расширяющее преобразование (widening conversion) и два типа совместимы . Расширяющими преобразованиями являются преобразования byte ®short ®int ®long ®float ®double . Для расширяющих преобразований числовые типы, включая целый и с пла­вающей точкой, являются совместимыми друг с другом. Однако числовые типы не совместимы с типами char и boolean . Типы char и boolean не совмес­тимы также и друг с другом. В языке Java выполняется автоматическое преобразование типов также и при сохранении литеральной целочисленной константы (которая имеет по умолчанию тип int) в перемен­ных типа byte , short или long (однако если литерал имеет значение вне диапазона допустимых значений для данного типа, выдается сообщение об ошибке: возможная потеря точности). Если преобразование является сужающим (narrowing conversion), т. е. выполняется преобразование byte ¬ short ¬ char ¬ int ¬ long ¬ float ¬ double , то такое преобразование может привести к потере точности числа или к его искажению. Поэтому при сужающих преобразованиях при компиляции программы выводится диагностическое сообщение о несовместимости типов и файлы классов не создаются. Такое сообщение будет выдано и при попытке преобразование выражений типа byte или short в переменную типа char . Если все же необходимо выполнить такие преобразования, используется операция приведения (cast) типа, которая имеет следующий формат: (тип-преобразования ) значение , где тип-преобразования определяет тип, в который необходимо преобразовать заданное значение , например, в результате выполнения операторов: byte x = 71 ; char symbol = (char ) x; переменная symbol получит значение " G ". Если значение с плавающей точкой присваивается целому типу, то (если значение с плавающей точкой имеет дробную часть) при явном преобразовании типа происходит также усечение (truncation) числа. Так, в результате выполнения оператора int x = (int ) 77.85 ; переменная x получит значение 77 . Если же присваиваемое значение лежит вне диапазона типа-преобразования , то результатом преобразования будет остаток от деления значения на модуль диапазона присваиваемого типа (для чисел типа byte модуль диапазона будет равен 256 , для short – 65536 , для int – 4294967296 и для long – 18446744073709551616). Например, в результате выполнения оператора byte x = (byte ) 514 ; переменная x получит значение 2 . При преобразовании целых или вещественных чисел в данные типа char , преобразование в символ происходит, если исходное число лежит в диапазоне от 0 до 127, иначе символ получает значение " ? ". При выполнении арифметических и побитовых преобразований все значения byte и short , а также char расширяются до int , (при этом в вычислениях для char используется числовое значение кода символа) затем, если хотя бы один операнд имеет тип long , тип целого выражения расширяется до long . Если один из операндов имеет тип float , то тип полного вы­ражения расширяется до float , а если один из операндов имеет тип double , то тип результата будет double . Так, если объявлены переменные byte a, c; short b; то в выражении a + b* c – 15 L + 1.5F + 1.08 - 10 ; сначала, перед вычислением a + b*c значения переменных будут расширены до int , затем, поскольку константа 15 имеет тип long , перед вычитанием результат вычисления будет увеличен до long . После этого, поскольку литерал 1.5 имеет тип float перед сложением с этим литералом результат вычисления a + b*c – 15L будет расширен до float . Перед выполнением сложения с числом 1.08 результат предыдущих вычислений будет расширен до double (поскольку вещественные константы по умолчанию имеют тип double) и, наконец, перед выполнением последнего сложения литерал 10 (по умолчанию int) будет расширен до double . Таким образом, результат вычисления выражения будет иметь тип double . Автоматические расширения типов (особенно расширения short и byte до int) могут вызывать плохо распознаваемые ошибки во время компиляции. Например, в операторах: byte x = 30 , y = 5 ; x = x + y; перед выполнением сложения значение переменных x и y будет расширено до int , а затем при выполнении попытки присвоения результата вычисления типа int переменной типа byte будет выдано сообщение об ошибке. Чтобы этого избежать надо использовать во втором операторе явное преобразование типов: x = (byte ) (x + y) ; Выражение x + y необходимо заключит в скобки потому, что приоритет операции приведения типа, заключенной в скобки, выше, чем приоритет операции сложения. Кстати, если записать второй оператор в виде: x += y; то сообщения об ошибке не будет. Ссылка на перво

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. В этом уроке будут описаны различные типы циклов, как циклы могут быть использованы в разработке программ, и для каких целей они используются.

Магнитное действие тока

Марио Льоцци

ОПЫТ ЭРСТЕДА

Возможное существование тесной связи между электричеством и магнетизмом предполагали уже самые первые исследователи, пораженные аналогией электростатических и магнитостатических явлений притяжения и отталкивания. Это представление было настолько распространено, что сначала Кардан, а затем и Гильберт считали его предрассудком и всячески старались доказать различие этих двух явлений. Но это предположение снова возникло в XVIII веке уже с большим основанием, когда было установлено намагничивающее действие молнии, а Франклину и Беккариа удалось добиться намагничивания с помощью разряда лейденской банки. Законы Кулона, формально одинаковые для электростатических и магнитостатических явлений, вновь выдвинули эту проблему.

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

Взаимодействие между гальваническим и магнитным флюидом пытался обнаружить и Джан Доменико Романьози (17611835) в опытах, описанных им в статье 1802 г., на которую Гульельмо Либри (18031869), Пьетро Конфильякки (17771844) и многие другие ссылались потом, приписывая Романьози приоритет этого открытия. Достаточно, однако, прочесть эту статью, чтобы убедиться, что в опытах Романьози, проводившихся с батареей с незамкнутой цепью и магнитной иглой, вообще нет электрического тока, и поэтому самое большее, что он мог наблюдать, это обычное электростатическое действие.

Когда 21 июля 1820 г. в одной очень лаконичной статье на четырех страничках (на латинском языке), озаглавленной "Experimenta circa effectum conflictus electrici in acum magneticam" датский физик Ганс Христиан Эрстед (17771851) описал фундаментальный опыт по электромагнетизму, доказывающий, что ток в прямолинейном проводнике, идущем вдоль меридиана, отклоняет магнитную иглу от направления меридиана, интерес и удивление ученых были велики не только потому, что было получено столь, долго разыскивавшееся разрешение проблемы, но и потому, что новый опыт, как сразу же стало ясно, указывал на силу неньютоновского типа. В самом деле, из опыта Эрстеда ясно было видно, что сила, действующая между магнитным полюсом и элементом тока, направлена не по соединяющей их прямой, а по нормали к этой прямой, т. е. она, как тогда говорили, является "силой поворачивающей". Значение этого факта чувствовалось, уже тогда, хотя полностью оно было осознано лишь много лет спустя. Опыт Эрстеда вызвал первую трещину в ньютоновской модели мира.

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

Действительно неясным в статье Эрстеда еще и сегодня остается объяснение, которое он пытается дать наблюдавшимся им явлениям, обусловленным, по его мнению, двумя противоположно направленными спиральными движениями вокруг проводника "электрической материи, соответственно положительной и отрицательной".

Исключительность явления, открытого Эрстедом, сразу же привлекла к нему большое внимание экспериментаторов и теоретиков. Араго, вернувшись из Женевы, где он присутствовал при аналогичных опытах, повторенных Де ла Ривом, рассказал о них в Париже, а в сентябре того же 1820 г. собрал свою известную установку с вертикальным проводником тока, проходящим сквозь горизонтально расположенный кусок картона, посыпанный железными опилками. Но окружностей из железных опилок, которые мы обычно замечаем при проведении этого опыта, он не обнаружил. Экспериментаторы видят ясно эти окружности с тех пор, как Фарадей выдвинул теорию "магнитных кривых", или "силовых линий". Действительно, нередко, чтобы увидеть что-то, нужно очень желать этого! Араго же видел только, что проводник, по его выражению, "облепливается железными опилками так, как если б это был магнить", из чего он сделал заключение, что "ток вызывает магнетизм в железе, которое не подвергалось предварительному намагничиванию".

Все в том же 1820 г. Био зачитал два доклада (30 октября и 18 декабря), в которых сообщал о результатах проведенного им вместе с Саваром экспериментального исследования. Пытаясь открыть закон, определяющий зависимость величины электромагнитной силы от расстояния, Био решил воспользоваться методом колебаний, которым раньше пользовался уже Кулон. Для этого он собрал установку, состоящую из толстого вертикального проводника, расположенного рядом с магнитной стрелкой: при включении ток

Возможное существование тесной связи между элек­тричеством и магнетизмом предполагали уже самые первые исследователи, пораженные аналогией электростатических и магнитостатических явлений притяжения и отталкивания. Это представление было настолько распро­странено, что сначала Кардан, а затем и Гильберт считали его предрассудком и всячески старались показать различие этих двух явлений. Но это предполо­жение снова возникло в XVIII в. уже с большим основанием, когда было установлено намагничивающее действие молнии, а Франклину и Беккариа удалось добиться намагничивания с помощью разряда лейденской банки. Законы Кулона, формально одинаковые для электростатических и магнитостатических явлений, вновь выдвинули эту проблему.

После того как благодаря батарее Вольта появилась возможность полу­чать электрический ток в течение долгого времени, попытки обнаружить связь между электрическими и магнитными явлениями стали более частыми и более интенсивными. И все же, несмотря на интенсивные поиски, открытие заставило себя ждать целых двадцать лет. Причины такой задержки следует искать в научных представлениях, господствовавших в те времена. Все силы понимались только в ньютоновском смысле, т.е. как силы, которые действуют между материальными частицами по соединяющей их прямой. Поэтому исследователи старались обнаружить силы именно этого рода, создавая при­способления, с помощью которых они надеялись обнаружить предполагаемое притяжение или отталкивание между магнитным полюсом и электрическим током (или, выражаясь более общим образом, между «гальваническим» флюи­дом и магнитным флюидом) или же пытались намагнитить стальную иглу, направляя по ней ток.

Когда 21 июля 1820 г. в статье на латинском языке, озаглавленной “Experimenta circa effectum conflictus electrici in acum magneticam”, датский физик Ганс Христиан Эрстед (1777 – 1851) описал фундаментальный опыт по электромагнетизму, доказывающий, что ток в прямолинейном проводнике, идущем вдоль меридиана, отклоняет магнитную иглу от направления меридиана, интерес и удивление ученых были велики не только потому, что было получено столь долго разыскивавшееся разрешение проблемы, но и потому, что новый опыт, как сразу же стало ясно, указывал на силу неньютоновского типа. В самом деле, из опыта Эрстеда ясно было видно, что сила, действую­щая между магнитным полюсом и элементом тока, направлена не по соеди­няющей их прямой, а по нормали к этой прямой, т.е. она, как тогда говори­ли, является «силой поворачивающей». Значение этого факта чувствовалось уже тогда, хотя полностью оно было осознано лишь много лет спустя. Опыт Эрстеда вызвал первую трещину в ньютоновской модели мира.

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

Действительно неясным в статье Эрстеда еще и сегодня остается объяс­нение, которое он пытается дать наблюдавшимся им явлениям, обусловлен­ным, по его мнению, двумя противоположно направленными спиральными движениями вокруг проводника «электрической материи, соот­ветственно положительной и отрицательной».

Исключительность явления, открытого Эрстедом, сразу же привлекла к нему большое вни­мание экспериментаторов и тео­ретиков. Араго, вернувшись из Женевы, где он присутствовал при аналогичных опытах, по­вторенных Де ла Ривом, рас­сказал о них в Париже, а в сен­тябре 1820 г. собрал свою известную установку с вертикальным проводником тока, проходящим сквозь горизонтально распо­ложенный кусок картона, посыпанный железными опилками. Но окружно­стей из железных опилок, которые мы обычно замечаем при проведении этого опыта, он не обнаружил. Экспериментаторы видят ясно эти окружности с тех пор, как Фарадей выдвинул теорию «магнитных кривых», или «сило­вых линий». Действительно, нередко, чтобы увидеть что-то, нужно очень желать этого! Араго же видел только, что проводник, по его выражению, «облепливается железными опилками так, как если б это был магнит», из чего он сделал заключение, что «ток вызывает магнетизм в железе, которое не подвергалось предварительному намагничиванию».

Простейшие электрические и магнитные явления известны людям с очень давних времен.

По-видимому, уже за 600 лет до н. э. греки знали, что магнит притягивает к себе железо, а натертый янтарь – легкие предметы, вроде соломинок и т. п. Однако различие между электрическими и магнитными притяжениями было еще не ясно; те и другие считались явлениями одной природы.

Четкое разграничение этих явлений – заслуга английского врача и естествоиспытателя Уильяма Гильберта (1544-1603), который в 1600 г. выпустил в свет книгу под названием «О магните, магнитных телах и большом магните – Земле». С этой книги, собственно, и начинается подлинно научное изучение электрических и магнитных явлений. Гильберт описал в своей книге все свойства магнитов, которые в его эпоху были известны, а также изложил результаты собственных очень важных опытов. Он указал на ряд существенных различий между электрическими и магнитными притяжениями и ввел слово «электричество».

Хотя после Гильберта различие между электрическими и магнитными явлениями было уже для всех неоспоримо ясно, тем не менее ряд фактов указывал на то, что при всем своем различии эти явления каким-то образом тесно и неразрывно связаны друг с другом. Наиболее бросающимися в глаза были факты намагничивания железных предметов и перемагничивания магнитных стрелок под влиянием молний. В своей работе «Гром и молния» французский физик Доминик Франсуа Араго (1786-1853) описывает, например, такой случай. «В июле 1681 г. корабль «Королева», находившийся в сотне миль от берега, в открытом море, был поражен молнией, которая причинила значительные повреждения в мачтах, парусах и пр. Когда же наступила ночь, то по положению звезд выяснилось, что из трех компасов, имевшихся на корабле, два, вместо того чтобы указывать на север, стали указывать на юг, а третий стал указывать на запад». Араго описывает также случай, когда молния, ударившая в дом, сильно намагнитила в нем стальные ножи, вилки и другие предметы.

В начале XVIII века было уже установлено, что молния, по сути дела, представляет собой сильный электрический ток, идущий через воздух; поэтому факты вроде описанных выше могли подсказать мысль, что всякий электрический ток обладает какими-то магнитными свойствами. Однако обнаружить на опыте эти свойства тока, и изучить их удалось только в 1820 г. датскому физику Гансу Христиану Эрстеду (1777-1851).

Основной опыт Эрстеда изображен на рис. 199. Над неподвижным проводом 1, расположенным вдоль меридиана, т. е. в направлении север-юг, подвешена на тонкой нити магнитная стрелка 2 (рис. 199, а). Стрелка, как известно, устанавливается также приблизительно по линии север-юг, и поэтому она располагается примерно параллельно проводу. Но как только мы замкнем ключ и пустим ток по проводу 1, мы увидим, что магнитная стрелка поворачивается, стремясь установиться под прямым углом к нему, т. е. в плоскости, перпендикулярной к проводу (рис. 199, б). Этот фундаментальный опыт показывает, что в пространстве, окружающем проводник с током, действуют силы, вызывающие движение магнитной стрелки, т. е. силы, подобные тем, которые действуют вблизи естественных и искусственных магнитов. Такие силы мы будем называть магнитными силами, так же как мы называем силы, действующие на электрические заряды, электрическими.

Рис. 199. Опыт Эрстеда с магнитной стрелкой, обнаруживающий существование магнитного поля тока: 1 – провод, 2 – магнитная стрелка, подвешенная параллельно проводу, 3 – батарея гальванических элементов, 4 – реостат, 5 – ключ

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

Первый вопрос, который поставил перед собой Эрстед после того, как он сделал свое замечательное открытие, был таков: влияет ли вещество провода на создаваемое током магнитное поле? «Соединительный провод, – пишет Эрстед, – может состоять из нескольких проволок или металлических полос. Природа металла не меняет результата, разве только, пожалуй, в отношении величины.

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

Все свои опыты Эрстед проводил с металлами, т. е. с проводниками, в которых проводимость, как мы теперь знаем, имеет электронный характер. Нетрудно, однако, осуществить опыт Эрстеда, заменив металлический провод трубкой с электролитом или трубкой, в которой происходит разряд в газе. Такие опыты мы уже описали в § 40 (рис. 73) и видели, что хотя в этих случаях электрический ток обусловлен движением положительных и отрицательных ионов, но действие его на магнитную стрелку то же, что и в случае тока в металлическом проводнике. Какова бы ни была природа проводника, по которому течет ток, вокруг проводника всегда создается магнитное поле, под влиянием которого стрелка поворачивается, стремясь стать перпендикулярно к направлению тока.

Таким образом, мы можем утверждать: вокруг всякого тока возникает магнитное поле. Об этом важнейшем свойстве электрического тока мы уже упоминали (§ 40), когда говорили подробнее о других его действиях – тепловом и химическом.

Из трех свойств или проявлений электрического тока наиболее характерным является именно создание магнитного поля. Химические действия тока в одних проводниках – электролитах – имеют место, в других – металлах – отсутствуют. Выделяемое током тепло может быть при одном и том же токе больше или меньше в зависимости от сопротивления проводника. В сверхпроводниках возможно даже прохождение тока без выделения тепла (§ 49). Но магнитное поле – неотделимый спутник всякого электрического тока. Оно не зависит ни от каких специальных свойств того или иного проводника и определяется лишь силой и направлением тока. Большинство технических применений электричества также связано с наличием магнитного поля тока.



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