значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if-then ΠΈ if-then-else, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ ΠΊ извСстному числу Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ситуаций. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ простыС Ρ‚ΠΈΠΏΡ‹ byte, short, char, int. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Enum ΠΈ String (начиная с JDK7), ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠΎΠΉ для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ²: Character, Byte, Short, Integer.

Π”ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ case Π½Π΅ допускаСтся. Π’ΠΈΠΏ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ значСния Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ совмСстим с Ρ‚ΠΈΠΏΠΎΠΌ выраТСния.

ΠšΠΎΠΌΠ°Π½Π΄Ρƒ switch часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π²Ρ‹Π±ΠΎΡ€Π°. Π’Ρ‹Π±ΠΎΡ€ осущСствляСтся Π² зависимости ΠΎΡ‚ цСлочислСнного выраТСния. Π€ΠΎΡ€ΠΌΠ° ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ выглядит Ρ‚Π°ΠΊ:

КаТдая сСкция case ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ заканчиваСтся ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ break, которая ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ switch.

Рассмотрим ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с мСсяцами. Запустим наш ΡƒΡ‡Π΅Π±Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ΄ Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ:

ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с использованиСм if-then-else:

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ case имССтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π΅Ρ‚ свой Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°. Π•Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΈΠ½Π°Ρ‡Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° продолТится. Π₯отя ΠΈΠ½ΠΎΠ³Π΄Π° это ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ.

Если ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊΠ°Ρ… case совпадаСт, Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ. НапримСр, ΠΊΠΎΠ΄ для подсчёта Π΄Π½Π΅ΠΉ Π² мСсяцС:

ΠŸΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if ΠΌΡ‹ рассматривали ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π²Ρ€Π΅ΠΌΠ΅Π½Π°ΠΌΠΈ Π³ΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ Π΅Π³ΠΎ с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch:

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ случайным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ английскиС Π±ΡƒΠΊΠ²Ρ‹. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° опрСдСляСт, гласныС ΠΎΠ½ΠΈ ΠΈΠ»ΠΈ согласныС:

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΠ΅Ρ‚ΠΎΠ΄ Random.nextInt(26) Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ 0 ΠΈ 26, для получСния символа Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра остаётся ΠΏΡ€ΠΈΠ±Π°Π²ΠΈΡ‚ΡŒ смСщСниС ‘a’, ΠΏΡ€ΠΈ этом символ a автоматичСски прСобразуСтся ΠΊ Ρ‚ΠΈΠΏΡƒ int. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ Π² сСкциях case Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой цСлочислСнныС значСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ для сравнСния.

Π§Ρ‚ΠΎΠ±Ρ‹ вывСсти ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ c Π² символьном Π²ΠΈΠ΄Π΅, Π΅Ρ‘ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ Ρ‚ΠΈΠΏΡƒ char, ΠΈΠ½Π°Ρ‡Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ Π² числовом Π²ΠΈΠ΄Π΅.

Π’ Java SE 7 появилась Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ String Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ Π½Π° Android Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ (Upd.: Π²Ρ€ΠΎΠ΄Π΅ ΡƒΠΆΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚):

Допустимы Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ switch, Π½ΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ я Π½Π΅ сталкивался с Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.

Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅ Π²Π°ΠΆΠ½Ρ‹Π΅ свойства ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ПолноС руководство ΠΏΠΎ switch-выраТСниям Π² Java 12

значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π€ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

Π’ этом руководствС я расскаТу Π’Π°ΠΌ ΠΎΠ±ΠΎ всСм, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π½Π°Ρ‚ΡŒ ΠΎ switch-выраТСниях Π² Java 12.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ данная ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π°Ρ конструкция ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° Π² Π±ΡƒΠ΄ΡƒΡ‰ΠΈΡ… вСрсиях спСцификации языка.

Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠ΅ΠΉΡ‚Π΅ Π²Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ switch, ΠΊΠ°ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° синтаксиса Π² Java 12.

Если Ρƒ вас Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ со всСм этим самим, Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΌΠΎΠΉ Π΄Π΅ΠΌΠΎ-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Java X Π½Π° Π³ΠΈΡ‚Ρ…Π°Π±Π΅.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² switch

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΎΠ±Π·ΠΎΡ€Ρƒ Π½ΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΠΉ Π² switch, Π΄Π°Π²Π°ΠΉΡ‚Π΅ быстро ΠΎΡ†Π΅Π½ΠΈΠΌ ΠΎΠ΄Π½Ρƒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ. Допустим, ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с «ΡƒΠΆΠ°ΡΠ½Ρ‹ΠΌ» Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΌ Π±ΡƒΠ»Π΅Π°Π½ΠΎΠΌ ΠΈ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π±ΡƒΠ»Π΅Π°Π½. Π’ΠΎΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· способов ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это:

Π‘ΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ это ΠΎΡ‡Π΅Π½ΡŒ Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Как ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ switch, Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ Π² «ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅», прСдставлСнный Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ просто вычисляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ присваиваСт Π΅Π³ΠΎ, Π½ΠΎ рСализация обходная (объявляСм ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ result ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅), ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π°ΡΡΡ (ΠΌΠΎΠΈ break ‘ΠΈ всСгда Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ copy-pasta) ΠΈ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π° ошибкам (Π·Π°Π±Ρ‹Π» Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π²Π΅Ρ‚ΠΊΡƒ? Ой!). Π’ΡƒΡ‚ явно Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, помСстив switch Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄:

Π’Π°ΠΊ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅: отсутствуСт фиктивная пСрСмСнная, Π½Π΅Ρ‚ break ‘ΠΎΠ², Π·Π°Π³Ρ€ΠΎΠΌΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΡ… ΠΊΠΎΠ΄ ΠΈ сообщСний компилятора ΠΎΠ± отсутствии default (Π΄Π°ΠΆΠ΅ Ссли Π² этом Π½Π΅Ρ‚ нСобходимости, ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС).

Но, Ссли ΠΏΠΎΠ΄ΡƒΠΌΠ°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ обязаны ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ Π½Π΅ΡƒΠΊΠ»ΡŽΠΆΡƒΡŽ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ языка. И это Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΡƒΡ‡Ρ‘Ρ‚Π°, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ Π½Π΅ всСгда Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. НСт, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΡˆΠ΅!

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅ΠΌ switch-выраТСния!

Как я ΠΏΠΎΠΊΠ°Π·Π°Π» Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, начиная с Java 12 ΠΈ Π²Ρ‹ΡˆΠ΅, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘Ρ€Π°Π·Ρƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π΄Π²Π΅ мысли:

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΡƒΠ³Π»ΡƒΠ±Π»ΡΡ‚ΡŒΡΡ Π² Π΄Π΅Ρ‚Π°Π»ΠΈ Π½ΠΎΠ²Ρ‹Ρ… возмоТностСй switch, Π² Π½Π°Ρ‡Π°Π»Π΅ я расскаТу ΠΎΠ± этих Π΄Π²ΡƒΡ… основных аспСктах.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ‹ ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ switch Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. А Ρ‡Π΅ΠΌ ΠΆΠ΅ ΠΎΠ½ Π±Ρ‹Π» Π΄ΠΎ этого?

Π”ΠΎ Java 12 switch Π±Ρ‹Π» ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ β€” ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ конструкциСй, Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ управлСния.

Π”ΡƒΠΌΠ°ΠΉΡ‚Π΅ ΠΎ различиях старой ΠΈ Π½ΠΎΠ²ΠΎΠΉ вСрсии switch, ΠΊΠ°ΠΊ ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ if ΠΈ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. Они ΠΎΠ±Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ логичСскоС условиС ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π²Π΅Ρ‚Π²Π»Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ if просто выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΆΠ΅ всё Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch оцСниваСтся (выбираСтся для выполнСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π°Ρ Π²Π΅Ρ‚ΠΊΠ°), ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вычислСний ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ присвоСн ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π•Ρ‰Π΅ ΠΎΠ΄Π½ΠΈΠΌ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ switch, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ΠΎ являСтся Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ классичСского ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch.

Π‘Ρ‚Ρ€Π΅Π»ΠΊΠ° ΠΈΠ»ΠΈ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅

Π’ Π²Π²ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использовался Π½ΠΎΠ²Ρ‹ΠΉ синтаксис Π² лямбда-стилС со стрСлкой ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ΅Ρ‚ΠΊΠΎΠΉ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰Π΅ΠΉΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ для этого Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ switch Π² качСствС выраТСния. ЀактичСски, ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ эквивалСнтСн ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΊΠΎΠ΄Ρƒ:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ break со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ! Π­Ρ‚ΠΎ идСально согласуСтся с инструкциями switch старого стиля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ break Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ значСния. Π’Π°ΠΊ Π² ΠΊΠ°ΠΊΠΎΠΌ случаС стрСлка ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ вмСсто ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°, для Ρ‡Π΅Π³ΠΎ ΠΎΠ½Π° здСсь? ΠŸΡ€ΠΎΡΡ‚ΠΎ хипстСрский синтаксис?

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, использованиС стрСлки ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±Π»ΠΎΠΊ справа ΠΎΡ‚ Π½Π΅Π΅. И Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ «ΠΏΡ€ΠΎΠ²Π°Π»ΠΈΠ²Π°Π½ΠΈΡ».

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΈ switch

НСсколько ΠΌΠ΅Ρ‚ΠΎΠΊ Π½Π° case

Π”ΠΎ сих ΠΏΠΎΡ€ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ case содСрТал Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΌΠ΅Ρ‚ΠΊΡƒ. Но Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ всС измСнилось β€” ΠΎΠ΄ΠΈΠ½ case ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСскольким ΠΌΠ΅Ρ‚ΠΊΠ°ΠΌ:

ПовСдСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΌ: TRUE ΠΈ FALSE приводят ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ β€” вычисляСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ «sane».

Π’ΠΈΠΏΡ‹ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Enum

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ стрСлкС

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΄Π²Π° свойства, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… для стрСлочной Ρ„ΠΎΡ€ΠΌΡ‹ записи раздСлитСля:

ΠžΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΠΈΠ΅ сквозного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ case

Π’ΠΎΡ‚, Ρ‡Ρ‚ΠΎ говорится Π² JEP 325 ΠΎΠ± этом:

Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch Π² Java тСсно связан с Ρ‚Π°ΠΊΠΈΠΌΠΈ языками, ΠΊΠ°ΠΊ C ΠΈ C++ ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠΊΠ²ΠΎΠ·Π½ΡƒΡŽ сСмантику. Π₯отя этот Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ способ управлСния часто ΠΏΠΎΠ»Π΅Π·Π΅Π½ для написания Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° (Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ парсСры для Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ³ΠΎ кодирования), ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ switch ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² ΠΊΠΎΠ΄Π΅ Π±ΠΎΠ»Π΅Π΅ высокого уровня, ошибки Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ ΠΏΠ΅Ρ€Π΅Π²Π΅ΡˆΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ.

Π― ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ согласСн ΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ switch Π±Π΅Π· повСдСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

Π’Π°ΠΆΠ½ΠΎ ΡƒΡΠ²ΠΎΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ это Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ switch Π² качСствС выраТСния ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚ΡƒΡ‚ являСтся стрСлка ΠΏΡ€ΠΎΡ‚ΠΈΠ² двоСточия.

Π‘Π»ΠΎΠΊΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ²

Как ΠΈ Π² случаС с лямбдами, стрСлка ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ (ΠΊΠ°ΠΊ Π²Ρ‹ΡˆΠ΅), Π»ΠΈΠ±ΠΎ Π½Π° Π±Π»ΠΎΠΊ, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹ΠΌΠΈ скобками:

Π‘Π»ΠΎΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ приходится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ для многострочных ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈΠΌΠ΅ΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ прСимущСство (Ρ‡Ρ‚ΠΎ Π½Π΅ трСбуСтся ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ двоСточия), ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для использования ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΈΠΌΠ΅Π½ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ€Π°Π·Π½Ρ‹Ρ… Π²Π΅Ρ‚ΠΊΠ°Ρ…, switch Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ выраТСниях switch

И послСднСС, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π²Π°ΠΆΠ½ΠΎΠ΅ β€” особСнности использования switch Π² качСствС выраТСния:

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ этом Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния, какая Ρ„ΠΎΡ€ΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ!

ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅Π½Π½Ρ‹Π΅ выраТСния

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ switch-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏ опрСдСляСтся ΠΏΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΈΡŽ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Π³Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ switch ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΅Π³ΠΎ Π²Π΅Ρ‚ΠΎΠΊ. Если switch-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ назначаСтся Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, пСрСдаСтся Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² контСкстС, Π³Π΄Π΅ извСстСн Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ (это называСтся Ρ†Π΅Π»Π΅Π²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ), Ρ‚ΠΎ всС Π΅Π³ΠΎ Π²Π΅Ρ‚ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ этому Ρ‚ΠΈΠΏΡƒ. Π’ΠΎΡ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π΄Π΅Π»Π°Π»ΠΈ Π΄ΠΎ сих ΠΏΠΎΡ€:

Π’ΠΎ ΠΆΠ΅ самоС происходит ΠΈ здСсь:

А Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ сСйчас?

(ΠŸΡ€ΠΎ использованиС Ρ‚ΠΈΠΏΠ° var Ρ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ Π² нашСй ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ 26 Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ использованию Ρ‚ΠΈΠΏΠ° var Π² Java β€” ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ°)

Если Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ‚ΠΈΠΏ нСизвСстСн, ΠΈΠ·-Π·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ var, Ρ‚ΠΈΠΏ вычисляСтся ΠΏΡƒΡ‚Π΅ΠΌ нахоТдСния Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ супСртипа ΠΈΠ· Ρ‚ΠΈΠΏΠΎΠ², создаваСмых Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ.

Π Π°Π½Π½ΠΈΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚

БлСдствиСм различия ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ switch являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ return для Π²Ρ‹Ρ…ΠΎΠ΄Π° ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch :

… Π²Ρ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ return Π²Π½ΡƒΡ‚Ρ€ΠΈ выраТСния …

Π­Ρ‚ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ смысл нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ стрСлку ΠΈΠ»ΠΈ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅.

ΠŸΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ всСх Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ исход, компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ. Для switch-Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ компилятор Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΡΡ‚Π°ΠΈΠ²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΎΡ…Π²Π°Ρ‡Π΅Π½Ρ‹. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ошибкС компиляции:

Π”Π°, компилятор Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ смоТСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π»ΠΈ всС значСния enum (ΠΈΡΡ‡Π΅Ρ€ΠΏΡ‹Π²Π°ΡŽΡ‚ Π»ΠΈ всС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹), ΠΈ Π½Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ бСсполСзныС значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ! Π”Π°Π²Π°ΠΉΡ‚Π΅ посидим ΠΌΠΈΠ½ΡƒΡ‚Ρƒ Π² Π±Π΅Π·ΠΌΠΎΠ»Π²Π½ΠΎΠΉ благодарности.

Π Π°Π·ΠΌΡ‹ΡˆΠ»Π΅Π½ΠΈΠ΅

Из ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΌΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Java 12 ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ switch Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, надСляя Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹ΠΌΠΈ возмоТностями:

Π—Π°Ρ‚Π΅ΠΌ, прСдполагая, Ρ‡Ρ‚ΠΎ switch остаСтся Ρ‚Π°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ½ являСтся Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ стрСлочная Ρ„ΠΎΡ€ΠΌΠ° станСт Π½ΠΎΠ²Ρ‹ΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π‘Π΅Π· сквозного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ case ΠΈ с Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌΠΈ лямбда-выраТСниями (это ΠΎΡ‡Π΅Π½ΡŒ СстСствСнно ΠΈΠΌΠ΅Ρ‚ΡŒ case ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² ΠΎΠ΄Π½ΠΎΠΉ строкС) switch выглядит Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Π΅Π΅ ΠΈ Π½Π΅ ΡƒΡ…ΡƒΠ΄ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°. Π― ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅, Ссли Ρƒ мСня Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π² сквозном ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅.

Π§Ρ‚ΠΎ Π²Ρ‹ Π΄ΡƒΠΌΠ°Π΅Ρ‚Π΅? Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½Ρ‹ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ всС слоТилось?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch (C)

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ switch ΠΈ case ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ слоТными условными опСрациями ΠΈ опСрациями вСтвлСния. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π½ΡƒΡ‚Ρ€ΠΈ своСго Ρ‚Π΅Π»Π°.

Бинтаксис

selection-statement :
switch ( expression ) statement

labeled-statement :
case constant-expression : statement
default : statement

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ

ЗначСния expression ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ constant-expression Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ цСлочислСнный Ρ‚ΠΈΠΏ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ constant-expression Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎΠ΅ константноС цСлочислСнноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²ΠΎ врСмя компиляции.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ВыраТСния switch expression ΠΈ case constant-expression Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ цСлочислСнного Ρ‚ΠΈΠΏΠ°. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ case constant-expression Π² Ρ‚Π΅Π»Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ switch :

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ для систСм ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚

Π’ Microsoft C Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (default) Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ компилятора /Za для ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ этих Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Pro Java

Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹

28 Π°ΠΏΡ€. 2015 Π³.

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch

ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π€ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

Часто ΠΎΠ½ оказываСтся эффСктивнСС примСнСния Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if-else-if.

НапримСр, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ поста ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π€ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

И Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π€ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ вычисляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ выраТСния Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡ‰Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΡƒ case, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Если ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΊΡƒ, ΠΎΠ½ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π±Π»ΠΎΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° послС ΠΌΠ΅Ρ‚ΠΊΠΈ case. Если ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΌΠ΅Ρ‚ΠΊΡƒ case с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΎΠ½ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° послС ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΈ default:. Или, Ссли Π½Π΅Ρ‚ ΠΌΠ΅Ρ‚ΠΊΠΈ default:, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ выполняСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ case Ссли ΠΎΠ½ Π΅ΡΡ‚ΡŒ, Π»ΠΈΠ±ΠΎ Π½Π΅ выполняСт Π½ΠΈ ΠΊΠ°ΠΊΠΎΠΉ Ссли Π½Π΅Ρ‚ подходящСй ΠΌΠ΅Ρ‚ΠΊΠΈ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΊΠΈ default ΠΈ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ выполнятся ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°.

значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π€ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΊΠΈ case для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. По сущСству это спользованиС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² case Π±Π΅Π· Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ… ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² break.

значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π€ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ switch

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² внСшнСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch. Π’Π°ΠΊΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ switch. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch опрСдСляСт собствСнный Π±Π»ΠΎΠΊ, ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ константами case Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΈ внСшнСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² switch Π½Π΅ происходит. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ допустим:

значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch. Π€ΠΎΡ‚ΠΎ значСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ case1: Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch Π½Π΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΠ΅Ρ‚ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ case1: внСшнСго ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сравниваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ count Ρ‚ΠΎΠ»ΡŒΠΊΠΎ со списком Π²Π΅Ρ‚Π²Π΅ΠΉ case внСшнСго уровня. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ count Ρ€Π°Π²Π½ΠΎ 1, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° сравниваСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ target c Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ списком Π²Π΅Ρ‚Π²Π΅ΠΉ case.

Ну ΠΈ Π½Π° послСдок ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch эффСктивнСС Π½Π°Π±ΠΎΡ€Π° Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if. Π­Ρ‚ΠΎ свойство прСдставляСт особый интСрСс, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ позволяСт ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ компилятора Java. ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch, компилятор Java Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΈΠ· констант case ΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ β€œΡ‚Π°Π±Π»ΠΈΡ†Ρƒ пСрСходов”, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π²Ρ‹Π±ΠΎΡ€Π° Π²Π΅Ρ‚Π²ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² зависимости ΠΎΡ‚ значСния выраТСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° трСбуСтся ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ Π² большой Π³Ρ€ΡƒΠΏΠΏΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстрСС ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² if-else. Π­Ρ‚ΠΎ обусловлСно Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ компилятору извСстно, Ρ‡Ρ‚ΠΎ всС константы case ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ, ΠΈ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ просто ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ равСнства Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ выраТСния switch. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π½Π΅ располагаСт ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ свСдСниями ΠΎ Π΄Π»ΠΈΠ½Π½ΠΎΠΌ спискС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° if.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ЗначСния ΠΊΠ°ΠΊΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ рассмотрим:

Π’ ΠΊΠΎΠ½Ρ†Π΅ ΡƒΡ€ΠΎΠΊΠ° ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ‹ упраТнСния для закрСплСния ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π°.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ if-else ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

Π‘Π»ΠΎΠΊ else Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Java.

Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if

Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ if-else

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ if-else отличаСтся ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Ссли логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ false, Ρ‚ΠΎ выполняСтся Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π°, находящийся Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках послС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова else

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ сокращСния if-else

1. Если Π±Π»ΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° if, else содСрТат лишь ΠΎΠ΄Π½Ρƒ строку, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· использования Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобок. ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° записи условия выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Если ЛогичСскоС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true, Ρ‚ΠΎ выполняСтся Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅1, Π° ΠΈΠ½Π°Ρ‡Π΅ β€” Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅2. Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΏΡ€ΠΈ использовании этой конструкции Π΄Π²Π° послСдних выраТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ‚ΠΈΠΏ.

Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch β€” case

Условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ switch β€” case ΡƒΠ΄ΠΎΠ±Π΅Π½ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° количСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ if-else ΠΎΡ‡Π΅Π½ΡŒ Π΄ΠΎΠ»Π³ΠΎ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄ :

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках послС switch сравниваСтся со значСниями, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ послС слова case, ΠΈ, Π² случаС совпадСния, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ ΠΊΠΎΠ΄Π°. Если Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ совпадаСт Π½ΠΈ с ΠΎΠ΄Π½ΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ case, Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся Π±Π»ΠΎΠΊΡƒ default, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ. ПослС выполнСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ break Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° switch. Если break отсутствуСт, Ρ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ пСрСдаСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π±Π»ΠΎΠΊΡƒ Π·Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, для цСлочислСнного значСния, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ дСнь Π½Π΅Π΄Π΅Π»ΠΈ, опрСдСляСтся Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π² Π²ΠΈΠ΄Π΅ строки. Для значСния 3, пСрСмСнная dayString ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Β«Π‘Ρ€Π΅Π΄Π°Β».

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *