uz
Feedback
Java Geek

Java Geek

Kanalga Telegram’da oβ€˜tish

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹Π΅ совСты, Π»Π°ΠΉΡ„Ρ…Π°ΠΊΠΈ ΠΈ ΠΊΠΎΠ΄ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ пост β€” Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ польза. Π£Ρ‡ΠΈΠΌ Java Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. По всСм вопросам @evgenycarter

Ko'proq ko'rsatish
2 379
Obunachilar
Ma'lumot yo'q24 soatlar
-97 kunlar
-3530 kunlar
Postlar arxiv
Π§Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ с ΠΊΠΎΠ΄ΠΎΠΌ? Он Π½Π΅ скомпилируСтся. Π­Ρ‚ΠΎ вопрос Π½Π° Π·Π½Π°Π½ΠΈΠ΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ: FileNotFoundException унаслСдован ΠΎΡ‚ IOEx
Π§Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ с ΠΊΠΎΠ΄ΠΎΠΌ? Он Π½Π΅ скомпилируСтся. Π­Ρ‚ΠΎ вопрос Π½Π° Π·Π½Π°Π½ΠΈΠ΅ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ: FileNotFoundException унаслСдован ΠΎΡ‚ IOException, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ catch Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Π° Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±Π»ΠΎΠΊ catch ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ошибка: exception FileNotFoundException has already been caught. @java_geek

Как ΠΎΠ΄Π½ΠΎΠΉ строчкой ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты любой collection Π² массив? ΠžΡ‚Π²Π΅Ρ‚ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅. @java_geek
Как ΠΎΠ΄Π½ΠΎΠΉ строчкой ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты любой collection Π² массив? ΠžΡ‚Π²Π΅Ρ‚ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅. @java_geek

Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ВозвСсти число Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΌΠΎΠΆΠ½ΠΎ двумя способами: 1)простоС ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅; 2)ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Math.pow() (Π΄Π²ΠΎΠΉΠ½
Π’ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ВозвСсти число Π² ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ ΠΌΠΎΠΆΠ½ΠΎ двумя способами: 1)простоС ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅; 2)ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Math.pow() (Π΄Π²ΠΎΠΉΠ½ΠΎΠ΅ основаниС, Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ стСпСни). ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ рСкомСндуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² случаС ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ нСобходимости, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² случаС Π΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни. ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΡƒΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Java Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² 300-600 Ρ€Π°Π· эффСктивнСС, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. @java_geek

КакиС Ρ‚ΠΈΠΏΡ‹ классов Π±Ρ‹Π²Π°ΡŽΡ‚ Π² Java? β˜•οΈ Top level class (ΠžΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс): βœ”οΈ Abstract class (Абстрактный класс); βœ”οΈ Final class (Π€ΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ класс). β˜•οΈ Interfaces (Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ). β˜•οΈ Enum (ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅). β˜•οΈ Nested class (Π’Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс): βœ”οΈ Static nested class (БтатичСский Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ класс); βœ”οΈ Member inner class (ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс); βœ”οΈ Local inner class (Π›ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс); βœ”οΈ Anonymous inner class (Анонимный класс). @java_geek

Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ Β«ΡƒΡΡ‹ΠΏΠΈΡ‚ΡŒΒ» ΠΏΠΎΡ‚ΠΎΠΊ? Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Ρ‹Π·Π²Π°Π² Π² Ρ…ΠΎΠ΄Π΅ Π΅Π³ΠΎ выполнСния статичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Thread.sleep() ΠΏΠ΅Ρ€Π΅Π΄Π°Π² Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ количСство Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² миллисСкундах. Π”ΠΎ истСчСния этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π²Π΅Π΄Π΅Π½ ΠΈΠ· состояния оТидания Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ interrupt() с выбрасываниСм InterruptedException. @java_geek

ВоспроизвСдСниС Π·Π²ΡƒΠΊΠΎΠ² Π—Π²ΡƒΠΊ β€” Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… дСсктопных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠ³Ρ€. Π―Π·Ρ‹ΠΊ программирования Java прСдоставляСт с
ВоспроизвСдСниС Π·Π²ΡƒΠΊΠΎΠ² Π—Π²ΡƒΠΊ β€” Π²Π°ΠΆΠ½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… дСсктопных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΠ³Ρ€. Π―Π·Ρ‹ΠΊ программирования Java прСдоставляСт срСдства для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌ. @java_geek

Π”Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ «конструктор» ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ отсутствуСт Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅ имя, Ρ‡Ρ‚ΠΎ ΠΈ класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ вызываСтся ΠΏΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса ΠΈ опрСдСляСт дСйствия Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ для Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. @java_geek

Enum vs String Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Enum для ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… состояний ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅
Enum vs String Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Enum для ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… состояний ΠΌΠΎΠ΄Π΅Π»ΠΈ Ρ‚Π°ΠΌ, Π³Π΄Π΅ это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, Π½ΠΎ ΠΈ ускоряСт процСсс сравнСния этих состояний. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎ ссылкС, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎ, Π½Π° порядок быстрСС стравнСния строк ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ΠΎΠ². ΠŸΡ€Π°Π²Π΄Π°, Π² этом случаС Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ большой минус β€” ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ прилоТСния увСличиваСтся, особСнно это становится Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ, ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… состояний. Но Π² случаС Ссли это Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½Ρ‹Π΅ свойства, ΠΊΠ°ΠΊ мСсяц Π³ΠΎΠ΄Π°, Ρ‚ΠΎ смСло ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ пСрСчислСниС. @java_geek

КакиС классы ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ? β€’ OutputStreamWriter β€” «мост» ΠΌΠ΅ΠΆΠ΄Ρƒ классом OutputStream ΠΈ классом Writer. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹, записанныС Π² ΠΏΠΎΡ‚ΠΎΠΊ, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π±Π°ΠΉΡ‚Ρ‹. β€’ InputStreamReader β€” Π°Π½Π°Π»ΠΎΠ³ для чтСния. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса Reader Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ Π±Π°ΠΉΡ‚Ρ‹ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° InputStream ΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ΡΡ Π² символы. @java_geek

ΠžΡ†Π΅Π½ΠΈΡ‚Π΅ количСство памяти Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π° Ρ‚ΠΈΠΏΠ° byte Π² ArrayList? ArrayList основан Π½Π° массивС, для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… осущСствляСтся автоматичСская ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° значСния, поэтому 16 Π±Π°ΠΉΡ‚ тратится Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ 4 Π±Π°ΠΉΡ‚Π° (8 для x64) - Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ссылки Π½Π° этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² самой структурС Π΄Π°Π½Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² x32 JVM 4 Π±Π°ΠΉΡ‚Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта ΠΈ 16 Π±Π°ΠΉΡ‚ - Π½Π° Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° Byte. Для x64 - 8 Π±Π°ΠΉΡ‚ ΠΈ 24 Π±Π°ΠΉΡ‚Π° соотвСтствСнно. @java_geek

КакоС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ выбрасываСтся ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ошибки Π² Π±Π»ΠΎΠΊΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса? Если возникшСС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ - наслСдник RuntimeException: β€’ для статичСских Π±Π»ΠΎΠΊΠΎΠ² ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ java.lang.ExceptionInInitializerError; β€’ для нСстатичСских Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Ρ€ΠΎΡˆΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅-источник. Если возникшСС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ - наслСдник Error, Ρ‚ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… случаях Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ java.lang.Error. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: java.lang.ThreadDeath - ΡΠΌΠ΅Ρ€Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’ этом случаС Π½ΠΈΠΊΠ°ΠΊΠΎΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π²Ρ‹Π±Ρ€ΠΎΡˆΠ΅Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚. @java_geek

МоТно Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строки Π² конструкции switch? Π”Π°, начиная с Java 7 Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ switch ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ строки, Ρ€Π°Π½Π½ΠΈΠ΅ вСрсии Java Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ этого. ΠŸΡ€ΠΈ этом: β€’ ΡƒΡ‡Π°ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ строки Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ ΠΊ рСгистру; β€’ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ equals() для сравнСния ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ значСния со значСниями case, поэтому Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ NullPointerException стоит ΠΏΡ€Π΅Π΄ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° null. β€’ согласно Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ, Java 7 для строк Π² switch, компилятор Java Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ эффСктивный Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ для строк Π² конструкции switch, Ρ‡Π΅ΠΌ для сцСплСнных условий if-else. @java_geek

КакиС возмоТности соврСмСнных вСрсий Java Π²Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π—Π΄Π΅ΡΡŒ собраны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ возмоТности, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π·Π²Π°Π»ΠΈ наибольший интСрСс. β˜•οΈ Pattern Matching β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof с ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½-ΠΌΠ°Ρ‚Ρ‡ΠΈΠ½Π³ΠΎΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ стал ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠΉ синтаксичСской конструкциСй ΠΈ большС Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ„Π»Π°Π³Π° --enable-preview. β˜•οΈ Stream.toList() β€” ΠΌΠ΅Ρ‚ΠΎΠ΄ собираСт содСрТимоС Stream Π² нСизмСняСмый список ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π΅Π³ΠΎ. β˜•οΈ Stream.mapMulti() β€” ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ Stream.flatMap(), ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ, Π³Π΄Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ – Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ элСмСнт, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ – Consumer, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ кладутся значСния. β˜•οΈ Records β€” записи ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΉ синтаксис для объявлСния классов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· явного опрСдСлСния Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π²Ρ€ΠΎΠ΄Π΅ equals(), hashCode() ΠΈ toString(). @java_geek

Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ == ΠΈ .equals() Π² Java Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² Java для сравнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ равСнства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Π° equals()
Π Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ == ΠΈ .equals() Π² Java Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² Java для сравнСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ равСнства ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΠ±Π° equals() ΠΈ Β«==Β», Π½ΠΎ Π²ΠΎΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ: 1. Один ΠΈΠ· Π½ΠΈΡ… являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ - ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. 2. МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ == для сравнСния ссылок (адрСсов Π² памяти) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ .equals() для сравнСния содСрТимого. ΠŸΡ€ΠΎΡ‰Π΅ говоря, == провСряСт, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΈ ΠΎΠ±Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ мСсто Π² памяти, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ .equals() сравниваСт значСния Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°Ρ…. 3. Если класс Π½Π΅ пСрСопрСдСляСт ΠΌΠ΅Ρ‚ΠΎΠ΄ equals, Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ equals блиТайшСго Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ класса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» этот ΠΌΠ΅Ρ‚ΠΎΠ΄. @java_geek

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ «интСрнационализация», «локализация»? Π˜Π½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ (internationalization) - способ создания ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π°Π·Π½Ρ‹Ρ… Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΉ, говорящих Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… языках. Локализация (localization) - адаптация интСрфСйса прилоТСния ΠΏΠΎΠ΄ нСсколько языков. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ языка ΠΌΠΎΠΆΠ΅Ρ‚ внСсти ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ слоТности Π² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса. @java_geek

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚, Ссли ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ equals() Π½Π΅ пСрСопрСдСляя hashCode()? КакиС ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹? ΠšΠ»Π°ΡΡΡ‹ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π° этого ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π’Π°ΠΊ для HashMap это ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°Ρ€Π° Β«ΠΊΠ»ΡŽΡ‡-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅Β», которая Π±Ρ‹Π»Π° Π² Π½Π΅Ρ‘ ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π° ΠΏΡ€ΠΈ использовании Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра ΠΊΠ»ΡŽΡ‡Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π² Π½Π΅ΠΉ Π½Π°ΠΉΠ΄Π΅Π½Π°. @java_geek

ΠœΠ΅Ρ‚ΠΎΠ΄ Math.random() Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайного числа Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0.0 Π΄ΠΎ 1.0. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ дос
ΠœΠ΅Ρ‚ΠΎΠ΄ Math.random() Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ случайного числа Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0.0 Π΄ΠΎ 1.0. Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ достигнуты с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠΈ. Π’Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π±ΠΎΡ€Π° случайного числа Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0 Π΄ΠΎ 10. @java_geek

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Optional? ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Optional β€” это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡
Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Optional? ΠžΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Optional β€” это ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ null. Вакая ΠΎΠ±Ρ‘Ρ€Ρ‚ΠΊΠ° являСтся ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ срСдством прСдотвращСния NullPointerException, Ρ‚.ΠΊ. ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка, ΠΈΠ·Π±Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚ добавлСния ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ if null/notNull ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ. @java_geek

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Reflection? РСфлСксия (Reflection) - это ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ получСния Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π²ΠΎ врСмя Π΅Ρ‘ выполнСния (runtime). Π’ Java Reflection осущСствляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Java Reflection API, состоящСго ΠΈΠ· классов ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² java.lang ΠΈ java.lang.reflect. ВозмоТности Java Reflection API: β€’ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ класса ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°; β€’ ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°Ρ… класса, полях, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ…, конструкторах ΠΈ супСрклассах; β€’ ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ интСрфСйсов, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… классом; β€’ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ экзСмпляра класса; β€’ ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ установка Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°; β€’ Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°; β€’ Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ массива. @java_geek

ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая заставляСт ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ConcurrentModificationException. Вопрос с ΠΏΠΎΠ΄Π²ΠΎΡ…ΠΎΠΌ: C
ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΎΠ΄Π½ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая заставляСт ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π²Ρ‹Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ConcurrentModificationException. Вопрос с ΠΏΠΎΠ΄Π²ΠΎΡ…ΠΎΠΌ: ConcurrentModificationException ΠΊ многопоточности Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚. Π’ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ эта ΡˆΡ‚ΡƒΠΊΠ° Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ пытаСмся ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡŽ Π²ΠΎ врСмя итСрирования ΠΏΠΎ Π½Π΅ΠΉ. @java_geek