Var value Ρ‡Ρ‚ΠΎ это

Var value Ρ‡Ρ‚ΠΎ это

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ var ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, инициализируя Π΅Ρ‘, ΠΏΡ€ΠΈ нСобходимости.

Бинтаксис

ОписаниС

ΠŸΡ€ΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ значСния нСобъявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ создана ΠΊΠ°ΠΊ глобальная пСрСмСнная (пСрСмСнная становится свойством глобального ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°) послС выполнСния присваивания значСния. Различия ΠΌΠ΅ΠΆΠ΄Ρƒ объявлСнной ΠΈ нСобъявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

1. ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ контСкстом выполнСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹. ΠΠ΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ всСгда Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹.

2. ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄ΠΎ выполнСния любого ΠΊΠΎΠ΄Π°. ΠΠ΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° ΠΊ Π½ΠΈΠΌ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ присваиваниС.

3. ΠžΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, нСзависимо ΠΎΡ‚ контСкста выполнСния, ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСнастраиваСмыми свойствами. ΠΠ΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ это настраиваСмыС свойства (Ρ‚.Π΅. ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ).

Из-Π·Π° пСрСчислСнных Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ, использованиС Π½Π΅ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСпрСдсказуСмым послСдствиям. Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ всСгда ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π²Π½Π΅ зависимости, находятся ΠΎΠ½ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π² глобальном контСкстС. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ значСния нСобъявлСнной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² строгом Ρ€Π΅ΠΆΠΈΠΌΠ΅ ECMAScript 5 Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

ΠŸΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… (ΠΊΠ°ΠΊ ΠΈ Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ объявлСния) ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π΄ΠΎ выполнСния ΠΊΠΎΠ΄Π°. Π“Π΄Π΅ Π±Ρ‹ Π½Π΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ объявлСниС, это Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Ρ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ объявили Π² самом Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ пСрСмСнная становится доступной Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½Π° объявлСна. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ называСтся «ΠΏΠΎΠ΄Π½ΡΡ‚ΠΈΠ΅ΠΌ» (Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… источниках «Π²ΡΠΏΠ»Ρ‹Ρ‚ΠΈΠ΅ΠΌ»).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½ΠΎ Π²Ρ‹Π½ΠΎΡΠΈΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΡ… области видимости (Π² Π½Π°Ρ‡Π°Π»ΠΎ глобального ΠΊΠΎΠ΄Π° ΠΈΠ»ΠΈ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ). Π­Ρ‚ΠΎ Π΄Π°Ρ‘Ρ‚ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚.Π΅. ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ), Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ†Π΅ΠΏΠΈ областСй видимости (Ρ‚.Π΅. ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ).

Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ подъСм Π±ΡƒΠ΄Π΅Ρ‚ Π²Π»ΠΈΡΡ‚ΡŒ Π½Π° объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π½ΠΎ Π½Π΅ Π½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π΅Ρ‘ значСния. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ присваиваСтся ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания:

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

VaR ΠΊΠ°ΠΊ способ ΠΎΡ†Π΅Π½ΠΊΠΈ риска. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

Var value Ρ‡Ρ‚ΠΎ это. 24755cbd24a7489fab2f0a318b53a7e0. Var value Ρ‡Ρ‚ΠΎ это Ρ„ΠΎΡ‚ΠΎ. Var value Ρ‡Ρ‚ΠΎ это-24755cbd24a7489fab2f0a318b53a7e0. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Var value Ρ‡Ρ‚ΠΎ это. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 24755cbd24a7489fab2f0a318b53a7e0

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒ вас с популярным инструмСнтом для ΠΎΡ†Π΅Π½ΠΊΠΈ финансового риска VaR (ValueAtRisk). ΠŸΡ€ΠΈ этом я ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ экономичСских, матСматичСских ΠΈ статистичСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ².

Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΈΠ΄Π΅ΠΈ VaR Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π² Π±Π°Π½ΠΊΠ΅ JP Morgan Π² 80-Ρ…. Π¨ΠΈΡ€ΠΎΠΊΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ VaR ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» Π² 1993 ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π» ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ Π“Ρ€ΡƒΠΏΠΏΠΎΠΉ Ρ‚Ρ€ΠΈΠ΄Ρ†Π°Ρ‚ΠΈ(G-30) ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ β€œΠ»ΡƒΡ‡ΡˆΠΈΡ… практик” для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Π΅Ρ€ΠΈΠ²Π°Ρ‚ΠΈΠ²Π°ΠΌΠΈ(ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ финансовыми инструмСнтами). А ΠΏΠΎΠ·ΠΆΠ΅ стала ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ риска Π±Π°Π½ΠΊΠ° ΠΏΠΎ систСмС Π‘Π°Π·Π΅Π»ΡŒ II (Π½Π°Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Ρ‹Ρ… Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ банковскому Ρ€Π΅Π³ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ). ИдСю ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ Π² VaR ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π΄ΠΎ Ρ€Π°Π½Π½ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚ Π»Π°ΡƒΡ€Π΅Π°Ρ‚Π° нобСлСвской ΠΏΡ€Π΅ΠΌΠΈΠΈ ΠΏΠΎ экономикС Π“Π°Ρ€ΠΈΠΈ ΠœΠ°Ρ€ΠΊΠΎΠ²ΠΈΡ†Π° Π² 1952.

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ VaR?

VaR ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рисками

β€œΠ£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рисками это процСсс обнаруТСния, Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ принятия ΠΈΠ»ΠΈ смягчСния нСопрСдСлСнности Π² инвСстиционных Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ…. Π’ сущности, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рисками происходит всСгда ΠΊΠΎΠ³Π΄Π° инвСстор ΠΈΠ»ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ„ΠΎΠ½Π΄ΠΎΠΌ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈ пытаСтся ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ±Ρ‹Ρ‚ΠΊΠΈ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ(ΠΈΠ»ΠΈ Π½Π΅ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ€Ρ‹, учитывая Π΅Π³ΠΎ инвСстиционныС Ρ†Π΅Π»ΠΈ ΠΈ Ρ‚ΠΎΠ»Π΅Ρ€Π°Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΊ риску”.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рисками Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ? Π”Π°Π½ΠΈΠ΅Π» КанСман Π² своСй ΠΊΠ½ΠΈΠ³Π΅ β€œΠ”ΡƒΠΌΠ°ΠΉ мСдлСнно… Ρ€Π΅ΡˆΠ°ΠΉ быстро” ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ люди Π½Π΅ Π»ΡŽΠ±ΡΡ‚ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒ большС Ρ‡Π΅ΠΌ Π»ΡŽΠ±ΡΡ‚ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Π²Π°Ρ‚ΡŒ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽΡ‚ с 50% Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ 110$ ΠΈ с 50% ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Ρ‚ΡŒ 100$, Ρ‚ΠΎ ΠΎΠ½ скорСС всСго откаТСтся, хотя ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ ΠΈ большС. Автор Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ это ассимСтриСй ΠΏΠΎΡ‚Π΅Ρ€ΡŒ (loss averse).

ΠŸΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΡ‚Π΅Ρ€ΡŒ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ люди Ρ‚Π°ΠΊ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΌΡ‹ с Π²Π°ΠΌΠΈ ΠΈ займСмся. Но ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ VaR Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ понятии Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Π±Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ рисками.

НСмного ΠΎ Π’ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ

Π‘Π½Π°Ρ‡Π°Π»Π° рассмотрим Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€ 2. Π•ΡΡ‚ΡŒ информация ΠΎ Π΅ΠΆΠ΅Π΄Π½Π΅Π²Π½ΠΎΠΌ Π΄ΠΎΡ…ΠΎΠ΄Π΅ Π°ΠΊΡ†ΠΈΠΈ Π’ Π·Π° ΠΏΡ€ΠΎΡˆΠ»Ρ‹ΠΉ Π³ΠΎΠ΄. Бвойства Π΄ΠΎΡ…ΠΎΠ΄Π°:

Π₯отя ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ значСния Π² Π΄Π²ΡƒΡ… случаях ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ (+1%), ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ риска Ρ€Π°Π·Π½Ρ‹ΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡƒΠ±Ρ‹Ρ‚ΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΡˆΠ΅ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ случаС. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π’ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ, ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ (Π°Π½Π³Π». volatility) β€” статистичСский финансовый ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½Ρ‡ΠΈΠ²ΠΎΡΡ‚ΡŒ Ρ†Π΅Π½Ρ‹. ЯвляСтся ваТнСйшим финансовым ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ ΠΈ понятиСм Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ финансовыми рисками, Π³Π΄Π΅ прСдставляСт собой ΠΌΠ΅Ρ€Ρƒ риска использования финансового инструмСнта Π·Π° Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Или своими словами, Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ β€” это сила разброса Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π§Π΅ΠΌ большС разброс, Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Ρ‚Π΅ΠΌ Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ Π½Π°ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ†Π΅Π½Π΅ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. ΠΠ°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Π΅ΠΌ Π²Ρ‹ΡˆΠ΅ риск. Казалось Π±Ρ‹, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ это Ρ‚ΠΎΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΌ Π½ΡƒΠΆΠ΅Π½.

Но Ρƒ Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ сущСствСнный нСдостаток для управлСния рисками. Она ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠ°ΠΊ разброс ΠΏΡ€ΠΈΠ±Ρ‹Π»Π΅ΠΉ Ρ‚Π°ΠΊ ΠΈ разброс ΡƒΠ±Ρ‹Ρ‚ΠΊΠΎΠ². НапримСр, Ссли Ρ†Π΅Π½Π° Π½Π° Π°ΠΊΡ†ΠΈΡŽ Ρ€Π΅Π·ΠΊΠΎ вырастСт, Ρ‚ΠΎ ΠΈ Π²ΠΎΠ»Π°Ρ‚ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ увСличится. Π₯отя риск, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΠΎΡ‚Π΅Ρ€ΡŒ, останСтся Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠΈΡ‚ VaR, Π½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ VaR Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ ΡƒΠ±Ρ‹Ρ‚ΠΊΠΎΠ².

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° 1. Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠ±Ρ‹Ρ‚ΠΊΠΈ?

Если Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ· ΡƒΠ±Ρ‹Ρ‚ΠΊΠΎΠ² Π½Π° Π·Π°Π²Ρ‚Ρ€Π° Π±Ρ‹Π» -1% с Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ 50%, Ρ‚ΠΎ Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ситуация слоТнСС. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ:

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° 2. Π­ΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния.

Π’ ΠΎΠ±ΠΎΠΈΡ… этих случаях ΠΊ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ ΠΈ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ VaR.

β€œΠšΠ°ΠΊΠΎΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠ±Ρ‹Ρ‚ΠΎΠΊ я ΠΌΠΎΠ³Ρƒ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ вСроятности(довСрия)”

НапримСр, VaR 100$ c ΠΏΠΎΡ€ΠΎΠ³ΠΎΠΌ 99% Π·Π½Π°Ρ‡ΠΈΡ‚:

VaR состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²:

БущСствуСт Ρ‚Ρ€ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° получСния VaR: историчСский, ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠœΠΎΠ½Ρ‚Π΅-ΠšΠ°Ρ€Π»ΠΎ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим историчСский ΠΌΠ΅Ρ‚ΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π½Π°ΠΈΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ Π² области статистики ΠΈ, ΠΏΠΎ-ΠΌΠΎΠ΅ΠΌΡƒ, самый ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ ΠΈΠ· Ρ‚Ρ€Π΅Ρ….

Π¨Π°Π³ΠΈ подсчСта VaR:

1. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ доходности Π°ΠΊΡ†ΠΈΠΉ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ…. Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с yahoo.finance.com. Yahoo прСдоставляСт Ρ†Π΅Π½Ρ‹ открытия, закрытия ΠΈ Ρ‚Π΄. ΠœΡ‹ рассмотрим Ρ†Π΅Π½Ρ‹ закрытия(close*). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ внимания Ρ‡Ρ‚ΠΎ Π½Π° yahoo Π΄Π°Ρ‚Ρ‹ отсортированы Π² порядкС убывания, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² порядкС возрастания. ΠœΡ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Ρ†Π΅Π½Ρ‹ закрытия Π² ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ дня. НапримСр, Ссли Ρ†Π΅Π½Π° Π²Ρ‡Π΅Ρ€Π° Π±Ρ‹Π»Π° 10$, Π° сСгодня 15$, Ρ‚ΠΎ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ Π² ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚Π°Ρ… Π±ΡƒΠ΄Π΅Ρ‚ (15$-10$)/10$ = 50%;

Var value Ρ‡Ρ‚ΠΎ это. image loader. Var value Ρ‡Ρ‚ΠΎ это Ρ„ΠΎΡ‚ΠΎ. Var value Ρ‡Ρ‚ΠΎ это-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Var value Ρ‡Ρ‚ΠΎ это. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loaderΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Yahoo ΠΈ сортировка

Var value Ρ‡Ρ‚ΠΎ это. image loader. Var value Ρ‡Ρ‚ΠΎ это Ρ„ΠΎΡ‚ΠΎ. Var value Ρ‡Ρ‚ΠΎ это-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Var value Ρ‡Ρ‚ΠΎ это. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader
2. ΠžΡ‚ΡΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ±Ρ‹Π»ΠΈ ΠΏΠΎ Π²ΠΎΠ·Ρ€Π°ΡΡ‚Π°Π½ΠΈΡŽ (для наглядности я построил гистограмму);

* ΠœΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ close Ρ†Π΅Π½Ρƒ, Π° Π½Π΅ adj. close, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ adj. close нСпостоянна ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. НапримСр, Ссли происходят split-Ρ‹ Π°ΠΊΡ†ΠΈΠΉ. Наша ΠΆΠ΅ Ρ†Π΅Π»ΡŒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ†ΠΈΡ„Ρ€Ρ‹ сошлись Ρƒ Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ·ΠΆΠ΅.

Var value Ρ‡Ρ‚ΠΎ это. image loader. Var value Ρ‡Ρ‚ΠΎ это Ρ„ΠΎΡ‚ΠΎ. Var value Ρ‡Ρ‚ΠΎ это-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Var value Ρ‡Ρ‚ΠΎ это. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loaderΠ—Π°Π²Π΅Ρ€ΡˆΠ°Ρ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Apple, ΠΏΡ€ΠΈΠ²ΠΎΠΆΡƒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ интСрСсный Π³Ρ€Π°Ρ„ΠΈΠΊ. На Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΏΠΎ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΠΈ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Ρ‹ ΠΏΡ€ΠΈΠ±Ρ‹Π»Π΅ΠΉ, ΠΈ ΠΏΠΎ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»Π΅ β€” количСство Π΄Π½Π΅ΠΉ, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ±Ρ‹Π»ΡŒ ΠΏΠΎΠΏΠ°Π΄Π°Π»Π° Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π». Π­Ρ‚ΠΎΡ‚ Π³Ρ€Π°Ρ„ΠΈΠΊ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ распрСдСлСниС. Π­Ρ‚ΠΎΡ‚ Ρ„Π°ΠΊΡ‚ Π½Π°ΠΌ пригодится Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π³Π΄Π΅ ΠΌΡ‹ рассмотрим Π΄Π²Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄Π° подсчСта VaR.

НСмного ΠΎ нСдостатках историчСского ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ VaR Π²ΠΎΠΎΠ±Ρ‰Π΅ΠΌ:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΡ€Π°ΡΠΎΡ‚Π° ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° VaR Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ для Π½Π°Π±ΠΎΡ€Π° ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°ΠΊΡ†ΠΈΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π΅Π½Π½Ρ‹Ρ… Π±ΡƒΠΌΠ°Π³. НапримСр, VaR для Π½Π°Π±ΠΎΡ€Π° ΠΈΠ· ΠΎΠ±Π»ΠΈΠ³Π°Ρ†ΠΈΠΉ ΠΈ Π²Π°Π»ΡŽΡ‚ Π΄Π°Π΅Ρ‚ Π½Π°ΠΌ ΠΎΡ†Π΅Π½ΠΊΡƒ Π±Π΅Π· особых усилий. А использованиС Π΄Ρ€ΡƒΠ³ΠΈΡ… способов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Π°Π½Π°Π»ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… сцСнариСв, сильно услоТняСтся ΠΈΠ·-Π·Π° коррСляции (связи) ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†Π΅Π½Π½Ρ‹ΠΌΠΈ Π±ΡƒΠΌΠ°Π³Π°ΠΌΠΈ.

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

Π£ΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово «var»

Π’ самой ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΏΡ€ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΡ‹ ознакомились с трСмя способами объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

let ΠΈ const Π²Π΅Π΄ΡƒΡ‚ сСбя ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ лСксичСскому ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΡŽ, области видимости.

Но var – это ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π·Π²Π΅Ρ€ΡŒ, Π±Π΅Ρ€ΡƒΡ‰ΠΈΠΉ своё Π½Π°Ρ‡Π°Π»ΠΎ с Π΄Π°Π²Π½ΠΈΡ… Π²Ρ€Π΅ΠΌΡ‘Π½. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ var Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² соврСмСнных скриптах, Π½ΠΎ всё Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² старых.

Если Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ‹ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ с ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ скриптами, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ Π³Π»Π°Π²Ρ‹, ΠΎΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΡ‚ΡŒ шанс, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½Ρ‘Ρ‚Π΅ΡΡŒ с var Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

β€¦ΠžΠ΄Π½Π°ΠΊΠΎ, отличия всё ΠΆΠ΅ Π΅ΡΡ‚ΡŒ.

Для Β«varΒ» Π½Π΅ сущСствуСт Π±Π»ΠΎΡ‡Π½ΠΎΠΉ области видимости

ΠžΠ±Π»Π°ΡΡ‚ΡŒ видимости ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… var ограничиваСтся Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π»ΠΈΠ±ΠΎ, Ссли пСрСмСнная глобальная, Ρ‚ΠΎ скриптом. Π’Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ доступны Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π±Π»ΠΎΠΊΠ°.

Аналогично для Ρ†ΠΈΠΊΠ»ΠΎΠ²: var Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π±Π»ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ»ΠΈ локальной Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°:

Если Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° находится Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚ΠΎ var становится локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Β«varΒ» допускаСт ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ объявлСниС

Если Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‚ΠΎ пСрСмСнная ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:

Β«varΒ» ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ запуска Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ОбъявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… var ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (ΠΈΠ»ΠΈ запуска скрипта, Ссли пСрСмСнная являСтся глобальной).

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ var ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌΠΈ с самого Π½Π°Ρ‡Π°Π»Π° исполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, Π² ΠΊΠ°ΠΊΠΎΠΌ мСстС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ находятся ΠΈΡ… объявлСния (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π½Π΅ находятся Π²ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

…ВСхничСски ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ эквивалСнтСн ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ (объявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ var phrase ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΎ Π² Π½Π°Ρ‡Π°Π»ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ):

β€¦Π˜ Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ΄Ρƒ Π½ΠΈΠΆΠ΅ (ΠΊΠ°ΠΊ Π²Ρ‹ ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, блочная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости игнорируСтся):

Π­Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ называСтся Β«hoistingΒ» (всплытиС, поднятиС), ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ всС объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… var Β«Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚Β» Π² самый Π²Π΅Ρ€Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ОбъявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Β«Π²ΡΠΏΠ»Ρ‹Π²Π°ΡŽΡ‚Β», Π½ΠΎ присваивания Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ – Π½Π΅Ρ‚.

Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π‘Ρ‚Ρ€ΠΎΠΊΠ° var phrase = «ΠŸΡ€ΠΈΠ²Π΅Ρ‚» состоит ΠΈΠ· Π΄Π²ΡƒΡ… дСйствий:

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ обрабатываСтся Π² Π½Π°Ρ‡Π°Π»Π΅ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ («всплываСт»), ΠΎΠ΄Π½Π°ΠΊΠΎ присвоСниС значСния всСгда происходит Π² Ρ‚ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°, Π³Π΄Π΅ ΠΎΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ. Π’.Π΅. ΠΊΠΎΠ΄ выполняСтся ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡΡ†Π΅Π½Π°Ρ€ΠΈΡŽ:

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всС объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… var ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½ΠΈΡ… Π² любом мСстС. Однако, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ undefined Π΄ΠΎ строки с присвоСниСм значСния.

Π˜Ρ‚ΠΎΠ³ΠΎ

БущСствуСт 2 основных отличия var ΠΎΡ‚ let/const :

Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎ нСбольшоС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅, относящССся ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΌΡ‹ рассмотрим Π΅Π³ΠΎ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅.

Π­Ρ‚ΠΈ особСнности, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΊΠΎΠ΄. Блочная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости – это ΡƒΠ΄ΠΎΠ±Π½ΠΎ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ let ΠΈ const Π±Ρ‹Π»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹ Π² стандарт ΠΈ сСйчас ΡΠ²Π»ΡΡŽΡ‚ΡΡ основным способом объявлСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

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

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово var Π² Java: Ρ‡Ρ‚ΠΎ, Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ

РазбираСмся, Ρ‡Ρ‚ΠΎ Π·Π° var Ρ‚Π°ΠΊΠΎΠΉ ΠΈ Π² ΠΊΠ°ΠΊΠΈΡ… ситуациях ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ³ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ.

Var value Ρ‡Ρ‚ΠΎ это. 3e336c4741982edd311741de6162b054. Var value Ρ‡Ρ‚ΠΎ это Ρ„ΠΎΡ‚ΠΎ. Var value Ρ‡Ρ‚ΠΎ это-3e336c4741982edd311741de6162b054. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Var value Ρ‡Ρ‚ΠΎ это. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 3e336c4741982edd311741de6162b054

Var value Ρ‡Ρ‚ΠΎ это. df0df68875cd984a9f4dacde6bc87522. Var value Ρ‡Ρ‚ΠΎ это Ρ„ΠΎΡ‚ΠΎ. Var value Ρ‡Ρ‚ΠΎ это-df0df68875cd984a9f4dacde6bc87522. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Var value Ρ‡Ρ‚ΠΎ это. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° df0df68875cd984a9f4dacde6bc87522

robby mccullough / unsplash

Π§Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ?

Начиная с вСрсии 10, Π² Java появилось ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово var. Новая Ρ„ΠΈΡ‡Π° β€” local variable type inference (Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° локальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ) β€” Π½Π΅ Π΄Π°Ρ‘Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй. Π’ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Π½ΠΈΡ… Π½Π΅ Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚. ΠŸΡ€ΠΎΡΡ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ лишний ΠΊΠΎΠ΄ ΠΏΡ€ΠΈ объявлСнии ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° ΠΈΡ… Ρ‚ΠΈΠΏ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½ ΠΈΠ· контСкста.

Π’ ΠΊΠ°ΠΊΠΈΡ… случаях Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½?

Если ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ сразу ΠΆΠ΅ присваиваСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ компилятор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ‚ΠΈΠΏ. Π’ΠΎΡ‚ Ρ‚Ρ€ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ситуации, ΠΊΠΎΠ³Π΄Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΎΡ‚ явного указания Ρ‚ΠΈΠΏΠ° ΠΊ var:

1. ΠŸΡ€ΠΈ создании Π½ΠΎΠ²ΠΎΠ³ΠΎ экзСмпляра класса. ОсобСнно Ссли Ρƒ этого класса Π΄Π»ΠΈΠ½Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅.

Π’ этом случаС компилятор «догадываСтся», Ρ‡Ρ‚ΠΎ Ρƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ theLongestNameYouCanEverImagine Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΈΠΏ TheLongestNameYouCanEverImagine.

2. Π’ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ†ΠΈΠΊΠ»Π°.

Π—Π΄Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ i нСявно устанавливаСтся Ρ‚ΠΈΠΏ int.

Если ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ†Π΅Π»Ρ‹ΠΌ числом, Ρ‚ΠΎ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π½Π΅Ρ‘ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½ Ρ‚ΠΈΠΏ int. Π§Ρ‚ΠΎΠ±Ρ‹ компилятор Ρ€Π΅ΡˆΠΈΠ» ΠΈΠ½Π°Ρ‡Π΅, Π½ΡƒΠΆΠ½Ρ‹ подсказки-постфиксы: L β€” для Ρ‚ΠΈΠΏΠ° long, F β€” для float, D β€” для double, ΠΈΠ»ΠΈ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Ρ‚ΠΈΠΏΡƒ.

3. Π’ Π±Π»ΠΎΠΊΠ΅ try-with-resources.

Π’ΡƒΡ‚ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Π±Π»ΠΎΠΊΠ° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π΄Π²Π΅ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: Ρƒ reader Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΈΠΏ BufferedReader, Ρƒ writer β€” BufferedWriter.

ΠŸΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ сразу ΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ нСльзя сначала просто Π΄Π°Ρ‚ΡŒ var-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ имя ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Ρ‘:

А Π΅Ρ‰Ρ‘ Π²Π°ΠΆΠ½ΠΎ Π½Π΅ ΠΏΠ΅Ρ€Π΅ΠΏΡƒΡ‚Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° с ΠΊΠΎΠ½Ρ†ΠΎΠΌ строки. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² Java Π½Π΅ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ пСрСносами строк, поэтому Ρ€Π°Π·Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках:

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

26 Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΉ ΠΏΠΎ использованию Ρ‚ΠΈΠΏΠ° var Π² Java

Var value Ρ‡Ρ‚ΠΎ это. image loader. Var value Ρ‡Ρ‚ΠΎ это Ρ„ΠΎΡ‚ΠΎ. Var value Ρ‡Ρ‚ΠΎ это-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Var value Ρ‡Ρ‚ΠΎ это. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

The Java Local Variable Type Inference (LVTI) ΠΈΠ»ΠΈ ΠΊΡ€Π°Ρ‚ΠΊΠΎ β€” Ρ‚ΠΈΠΏ var (ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ var β€” это Π½Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово, Π° Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ имя Ρ‚ΠΈΠΏΠ°) Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² Java 10 с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ JEP 286: Local-Variable Type Inference. Являясь 100% Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ компилятора, ΠΎΠ½Π° Π½Π΅ влияСт Π½Π° Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, врСмя выполнСния ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Π’ основном компилятор провСряСт ΠΏΡ€Π°Π²ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания ΠΈ, исходя ΠΈΠ· Π½Π΅Π΅, опрСдСляСт ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π·Π°Ρ‚Π΅ΠΌ замСняСт ΠΈΠΌ var.

ПоявлСниС var Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Π²Π΅Π·Π΄Π΅ ΠΈ всСгда ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΠ½ΠΎΠ³Π΄Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ стандартными срСдствами.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим 26 ситуаций, с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var, Π° ΠΊΠΎΠ³Π΄Π° этого Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ стоит.

ΠŸΡƒΠ½ΠΊΡ‚ 1: ΡΡ‚Π°Ρ€Π°ΠΉΡ‚Π΅ΡΡŒ Π΄Π°Π²Π°Ρ‚ΡŒ осмыслСнныС ΠΈΠΌΠ΅Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ фокусируСмся Π½Π° Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° полям классов, Π½ΠΎ ΠΌΡ‹ Π½Π΅ удСляСм Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΆΠ΅ внимания ΠΈΠΌΠ΅Π½Π°ΠΌ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Когда наши ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹, содСрТат ΠΌΠ°Π»ΠΎ ΠΊΠΎΠ΄Π° ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅ ΠΈΠΌΠ΅Π½Π°, Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ часто ΠΌΡ‹ Π½Π΅ ΠΎΠ±Ρ€Π°Ρ‰Π°Π΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π° Ρ‚ΠΎ ΠΈ вовсС сокращаСм ΠΈΡ… ΠΈΠΌΠ΅Π½Π°.

Когда ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ var вмСсто написания явных Ρ‚ΠΈΠΏΠΎΠ², Ρ‚ΠΎ компилятор опрСдСляСт ΠΈΡ… автоматичСски ΠΈ подставляСт вмСсто var. Но с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этого людям становится Ρ‚Ρ€ΡƒΠ΄Π½Π΅Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ использованиС var ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΡΠ»ΠΎΠΆΠ½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв это происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ склонны ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ Π½Π° ΠΏΠ΅Ρ€Π²ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π° Π½Π° Π΅Π΅ имя, ΠΊΠ°ΠΊ Π½Π° Π²Ρ‚ΠΎΡ€ΠΈΡ‡Π½ΡƒΡŽ. Π₯отя Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π· Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:

НавСрно, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ согласятся, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΈΠΌΠ΅Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… слишком ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠ΅:

ΠŸΡ€ΠΈ использовании ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠΌΠ΅Π½, совмСстно с var, ΠΊΠΎΠ΄ становится Π΅Ρ‰Π΅ ΠΌΠ΅Π½Π΅Π΅ понятным:

Π‘ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ имСнования ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΎΠ»Π΅Π΅ осмыслСнныС ΠΈΠΌΠ΅Π½Π°:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3:

Π’ стрСмлСнии Π΄Π°Π²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ понятныС ΠΈΠΌΠ΅Π½Π° Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, Π½Π΅ Π²ΠΏΠ°Π΄Π°ΠΉΡ‚Π΅ Π² крайности:

ВмСсто этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΊΡ€Π°Ρ‚ΠΊΠΈΠΉ, Π½ΠΎ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ понятный Π²Π°Ρ€ΠΈΠ°Π½Ρ‚:

Π—Π½Π°Π΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, Ρ‡Ρ‚ΠΎ Ρƒ Java Π΅ΡΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ класс с ΠΈΠΌΠ΅Π½Π΅ΠΌ:
InternalFrameInternalFrameTitlePaneInternalFrameTitlePaneMaximizeButtonWindowNotFocusedState

Π§Ρ‚ΠΎ ΠΆΠ΅, ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… с Ρ‚Π°ΠΊΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСпростым Π΄Π΅Π»ΠΎΠΌ πŸ™‚

ΠŸΡƒΠ½ΠΊΡ‚ 2: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ var Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π° (int, long, float, double)

Π‘Π΅Π· использования Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ² для ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌΡ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ. Π­Ρ‚ΠΎ Π²Ρ‹Π·Π²Π°Π½ΠΎ нСявным ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ var-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π²Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° Π²Π΅Π΄ΡƒΡ‚ сСбя, ΠΊΠ°ΠΊ ΠΈ оТидалось. Π’ΡƒΡ‚ ΠΌΡ‹ явно объявляСм Ρ‚ΠΈΠΏΡ‹ boolean ΠΈ char:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ var, вмСсто явного объявлСния Ρ‚ΠΈΠΏΠΎΠ²:

Пока всС Ρ…ΠΎΡ€ΠΎΡˆΠΎ. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ сдСлаСм Ρ‚ΠΎ ΠΆΠ΅ самоС для Ρ‚ΠΈΠΏΠΎΠ² int, long, float ΠΈ double:

Π₯отя ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΠΎΠ΄Π° прост ΠΈ понятСн, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ var, вмСсто явного указания Ρ‚ΠΈΠΏΠΎΠ².

ВсС Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹, ΠΊΠ°ΠΊ int. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Java:

Но Ρ‡Ρ‚ΠΎ случится, Ссли ΠΌΡ‹ объявим число с дСсятичной Ρ‡Π°ΡΡ‚ΡŒΡŽ?

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ этого, Ссли ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° float:

Π§Ρ‚ΠΎ Π±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нСоТиданности, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π»:

ΠŸΡƒΠ½ΠΊΡ‚ 3: Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях var ΠΈ нСявныС привСдСния Ρ‚ΠΈΠΏΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΊΠΎΠ΄Π°

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ наш ΠΊΠΎΠ΄ находится ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Один ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΡ€Π·ΠΈΠ½Ρƒ ΠΏΠΎΠΊΡƒΠΏΠΎΠΊ с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Ρ‚ΠΎΠ²Π°Ρ€Π°ΠΌΠΈ ΠΈ вычисляСт Π»ΡƒΡ‡ΡˆΡƒΡŽ Ρ†Π΅Π½Ρƒ. Для этого ΠΎΠ½ сравниваСт Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ†Π΅Π½Ρ‹ Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ†Π΅Π½Ρƒ Π² Π²ΠΈΠ΄Π΅ Ρ‚ΠΈΠΏΠ° float. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ просто списываСт эту Ρ†Π΅Π½Ρƒ с ΠΊΠ°Ρ€Ρ‚Ρ‹.

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСт Π»ΡƒΡ‡ΡˆΡƒΡŽ Ρ†Π΅Π½Ρƒ:

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌ наш ΠΊΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя внСшними сСрвисными ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π² качСствС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Наши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΎΠ²Π°Ρ€Ρ‹ для ΠΏΠΎΠΊΡƒΠΏΠΊΠΈ, ΠΈ ΠΌΡ‹ рассчитываСм Π»ΡƒΡ‡ΡˆΡƒΡŽ Ρ†Π΅Π½Ρƒ для Π½ΠΈΡ…, Π° Π·Π°Ρ‚Π΅ΠΌ списываСм срСдства с ΠΊΠ°Ρ€Ρ‚Ρ‹:

Π§Π΅Ρ€Π΅Π· Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ врСмя компания, которая Π²Π»Π°Π΄Π΅Π΅Ρ‚ API, Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ вСщСствСнного прСдставлСния Ρ†Π΅Π½ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ дСсятичного (вмСсто float Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ int). Π˜Ρ‚Π°ΠΊ, ΠΎΠ½ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠ΄ API ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ наш ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ явноС объявлСниС float ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² качСствС Ρ†Π΅Π½Ρ‹. Π’ Π΅Π³ΠΎ Π½Ρ‹Π½Π΅ΡˆΠ½Π΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ Π²ΠΎ врСмя компиляции. Но Ссли Π±Ρ‹ ΠΌΡ‹ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄Π΅Π»ΠΈ Ρ‚Π°ΠΊΡƒΡŽ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ ΠΈ использовали var вмСсто float, Ρ‚ΠΎ наш ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠ» Π±Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, благодаря нСявному ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ²:

ΠŸΡƒΠ½ΠΊΡ‚ 4: ΠΊΠΎΠ³Π΄Π° Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ подходящим Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ явноС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ°ΠΆΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ var

НСкоторыС ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Π² Java Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏΡ‹ byte ΠΈ short. Π’ этом случаС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ явноС ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ², ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ это вмСсто var:

Но Π·Π°Ρ‡Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΉ ситуации ΠΎΡ‚Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ явному ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Ρ‚ΠΈΠΏΠΎΠ² вмСсто Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var? Π§Ρ‚ΠΎ ΠΆΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм этот ΠΊΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ var. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΎΠ±ΠΎΠΈΡ… случаях компилятор ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° int.

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ этой ошибки:

Π—Π΄Π΅ΡΡŒ Π½Π΅Ρ‚ Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΈΡˆΠ»ΠΈ Π±Ρ‹ Π½Π°ΠΌ Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ явноС нисходящСС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². Π›ΠΈΡ‡Π½ΠΎ я Π±ΡƒΠ΄Ρƒ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΡ… ситуаций, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ Π²ΠΈΠΆΡƒ здСсь Π½ΠΈΠΊΠ°ΠΊΠΈΡ… прСимущСств.

ΠŸΡ€ΠΈΠ±Π΅Π³Π°ΠΉΡ‚Π΅ ΠΊ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ записи Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ссли Π²Ρ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var:

ΠŸΡƒΠ½ΠΊΡ‚ 5: ΠΈΠ·Π±Π΅Π³Π°ΠΉΡ‚Π΅ использования var, Ссли названия ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ содСрТат достаточной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ для понимания ΠΊΠΎΠ΄Π°

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²ΠΎ использования var Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² написании Π±ΠΎΠ»Π΅Π΅ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. НапримСр, Π² случаС использования конструкторов, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ нСобходимости повторСния ΠΈΠΌΠ΅Π½ΠΈ класса ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ·Π±Ρ‹Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π°.

ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Для конструкции, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π½ΠΈΠΆΠ΅, var Ρ‚Π°ΠΊΠΆΠ΅ станСт ΡƒΠ΄Π°Ρ‡Π½Ρ‹ΠΌ способом упрощСния ΠΊΠΎΠ΄Π° Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΠΈ информативности.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π˜Ρ‚Π°ΠΊ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π½Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с var Π² прСдставлСнных ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…? ΠŸΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ вся нСобходимая информация содСрТится Π² названиях ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Но Ссли var, Π² сочСтании с ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡŽ ясности ΠΊΠΎΠ΄Π°, Π»ΡƒΡ‡ΡˆΠ΅ ΠΎΡ‚ΠΊΠ°ΠΆΠΈΡ‚Π΅ΡΡŒ ΠΎΡ‚ Π΅Π³ΠΎ использования.

ΠŸΡƒΠ½ΠΊΡ‚ 6: Ρ‚ΠΈΠΏ var Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π²ΠΎ врСмя компиляции

Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ попытаСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ присваиваниС. НапримСр, ΠΊΠΎΠ΄ Π½ΠΈΠΆΠ΅ Π½Π΅ скомпилируСтся:

А Π²ΠΎΡ‚ этот скомпилируСтся:

И этот ΠΊΠΎΠ΄ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ скомпилируСтся:

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ компилятор ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ» Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ var, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π½ΠΈΡ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ этого Ρ‚ΠΈΠΏΠ°.

ΠŸΡƒΠ½ΠΊΡ‚ 7: var Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для создания экзСмпляра ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ назначСния Π΅Π³ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΈΠΏΠ° интСрфСйса

Π’ Java ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ «ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйсов». НапримСр, ΠΌΡ‹ создаСм экзСмпляр класса ArrayList, связывая Π΅Π³ΠΎ с абстракциСй (интСрфСйсом):

И ΠΌΡ‹ ΠΈΠ·Π±Π΅Π³Π°Π΅ΠΌ Ρ‚Π°ΠΊΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ, ΠΊΠ°ΠΊ привязка ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°:

Π­Ρ‚ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнная ΠΈ ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π»Π΅Π³ΠΊΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ интСрфСйса Π½Π° Π»ΡŽΠ±ΡƒΡŽ Π΄Ρ€ΡƒΠ³ΡƒΡŽ. Для этого лишь Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° интСрфСйса.

ΠœΡ‹ Π½Π΅ смоТСм ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ этой ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ var ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Ρ‚.ΠΊ. для Π½ΠΈΡ… всСгда выводится ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ. НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΊΠΎΠ΄Π° компилятор ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΊΠ°ΠΊ ArrayList :

Π•ΡΡ‚ΡŒ нСсколько Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Π² Π·Π°Ρ‰ΠΈΡ‚Ρƒ var, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ±ΡŠΡΡΠ½ΡΡŽΡ‚ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅:

var ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π³Π΄Π΅, Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ интСрфСйсов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ мСньшС, Ρ‡Π΅ΠΌ Π² случаях с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΌΠΈ значСниями ΠΈΠ»ΠΈ полями

ΠžΠ±Π»Π°ΡΡ‚ΡŒ дСйствия Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ нСбольшой, поэтому Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… трудностСй

var воспринимаСт ΠΊΠΎΠ΄, стоящий справа, ΠΊΠ°ΠΊ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для опрСдСлСния фактичСского Ρ‚ΠΈΠΏΠ°. Если, Π² ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½, Ρ‚ΠΎ опрСдСляСмый Ρ‚ΠΈΠΏ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ, Π²Ρ‹Π·Π²Π°Π² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² ΠΊΠΎΠ΄Π΅, ΠΎΠΏΠΈΡ€Π°ΡŽΡ‰Π΅ΠΌΡΡ Π½Π° эту ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ.

ΠŸΡƒΠ½ΠΊΡ‚ 8: Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°

ИспользованиС var Π² сочСтании с diamond operator (<>) ΠΏΡ€ΠΈ отсутствии ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚ΠΈΠΏΠ°, ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ.

Π”ΠΎ Java 7 для ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ использовалось явноС ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ²:

Начиная с Java 7 Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½ diamond operator. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС компилятор ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π²Π΅Π΄Π΅Ρ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ:

Какой ΠΆΠ΅ Ρ‚ΠΈΠΏ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ Π² ΠΊΠΎΠ΄Π΅ Π½ΠΈΠΆΠ΅?

Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… конструкций:

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, var ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ссли ΠΌΡ‹ прСдоставим Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для опрСдСлСния ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π’ΠΈΠΏ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ нСпосрСдствСнно ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°.

НСпосрСдствСнно ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Ρ‚ΠΈΠΏ:

ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°:

ΠŸΡƒΠ½ΠΊΡ‚ 9: присвоСниС массива ΠΊ var-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ скобок [ ]

ВсС ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ массивы Π² Java:

Как насчСт использования var ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с массивами? Π’ этом случаС Π½Π΅Ρ‚ нСобходимости ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ скобки с Π»Π΅Π²ΠΎΠΉ стороны.

Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ (это Π΄Π°ΠΆΠ΅ Π½Π΅ скомпилируСтся):

Код Π½ΠΈΠΆΠ΅, с использованиСм var Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ скомпилируСтся. Π­Ρ‚ΠΎ происходит ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ компилятор Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΎΠΉ части:

ΠŸΡƒΠ½ΠΊΡ‚ 10: var нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ объявлСнии Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² ΠΎΠ΄Π½ΠΎΠΉ строкС

Если Π²Π°ΠΌ нравится ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ var Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для этого. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π΅ скомпилируСтся:

ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

ΠŸΡƒΠ½ΠΊΡ‚ 11: Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΡ‚Ρ€Π΅ΠΌΠΈΡ‚ΡŒΡΡ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ своСй области видимости. Π’ΠΈΠΏ var усиливаСт это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅

БохраняйтС Π½Π΅Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ видимости для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… β€” я ΡƒΠ²Π΅Ρ€Π΅Π½, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠ»Ρ‹ΡˆΠ°Π»ΠΈ это ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄ΠΎ появлСния var.

Π§ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ быстроС исправлСния Π±Π°Π³ΠΎΠ² β€” Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΏΠΎΠ»ΡŒΠ·Ρƒ этого ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°. НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ стэк ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π›ΡƒΡ‡ΡˆΠ΅ всСго это Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ:

ΠŸΡƒΠ½ΠΊΡ‚ 12: Ρ‚ΠΈΠΏ var ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ использованиС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π² ΠΏΡ€Π°Π²ΠΎΠΉ части Ρ‚Π΅Ρ€Π½Π°Ρ€Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈ явном ΡƒΠΊΠ°Π·Π°Π½ΠΈΠΈ Ρ‚ΠΈΠΏΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π½Π΅ скомпилируСтся:

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ:

Код Π½ΠΈΠΆΠ΅, Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ скомпилируСтся:

Но ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹:

Π’ΠΎ всСх Ρ‚Π°ΠΊΠΈΡ… случаях Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅ΡΡ‚ΡŒ var:

Из этих ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π½Π΅ слСдуСт, Ρ‡Ρ‚ΠΎ Ρ‚ΠΈΠΏ var опрСдСляСт Ρ‚ΠΈΠΏΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π²ΠΎ врСмя выполнСния. Π­Ρ‚ΠΎ Π½Π΅ Ρ‚Π°ΠΊ!

И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Ρ‚ΠΈΠΏ var Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°Ρ… ΠΎΠ±ΠΎΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ²:

ΠŸΡƒΠ½ΠΊΡ‚ 13: Ρ‚ΠΈΠΏ var ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ²

ΠœΡ‹ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ явноС объявлСниС Ρ‚ΠΈΠΏΠΎΠ² Π² Ρ†ΠΈΠΊΠ»Π°Ρ… for Π½Π° Ρ‚ΠΈΠΏ var.

ИзмСнСниС явного Ρ‚ΠΈΠΏΠ° int Π½Π° var:

ИзмСнСниС явного Ρ‚ΠΈΠΏΠ° Order Π½Π° var:

ΠŸΡƒΠ½ΠΊΡ‚ 14: var ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ (stream) Π² Java 8

ΠžΡ‡Π΅Π½ΡŒ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var ΠΈΠ· Java 10 с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ (stream), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ появились Π² Java 8.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ явноС объявлСниС Ρ‚ΠΈΠΏΠ° Stream Π½Π° var:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2:

ΠŸΡƒΠ½ΠΊΡ‚ 15: var ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ объявлСнии Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для разбиСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π° части

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

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ большого выраТСния:

Π›ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π±Π΅ΠΉΡ‚Π΅ ΠΊΠΎΠ΄ Π½Π° составныС части:

Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠΎΠ΄Π° выглядит Π±ΠΎΠ»Π΅Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Π΅Π΅ ΠΈ ΠΏΡ€ΠΎΡ‰Π΅, Π½ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΎ Π½Π° сущСствованиС. Для нашСго Ρ€Π°Π·ΡƒΠΌΠ° Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊ пониманию Ρ‚Π°ΠΊΠΈΡ… Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, использованиС Ρ‚ΠΈΠΏΠ° var ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΌΠΎΡ‡ΡŒ ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… конструкций Π·Π° счСт сокращСния усилий Π½Π° объявлСниС Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…:

ΠŸΡƒΠ½ΠΊΡ‚ 16: var Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован, ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

ΠŸΠΎΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ Π΄Π²Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΊΠΎΠ΄Π° Π½Π΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

ИспользованиС var, ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния:

ИспользованиС var, ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

ΠŸΡƒΠ½ΠΊΡ‚ 17: Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° var ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Ρ‹, ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ΄Π° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ исправно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

с Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠ°ΠΌΠΈ всС Ρ‚Π°ΠΊ ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ:

ΠŸΡƒΠ½ΠΊΡ‚ 18: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ var ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ с Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ классами

ВмСсто явного указания Ρ‚ΠΈΠΏΠΎΠ²:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ var:

ΠŸΡƒΠ½ΠΊΡ‚ 19: ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° var ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС effectively final ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

… начиная с Java SE 8, Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ класс ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Π±Π»ΠΎΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ final ΠΈΠ»ΠΈ effectively final. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ измСняСтся послС ΠΈΡ… ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΡΠ²Π»ΡΡŽΡ‚ΡΡ effectively final.

Π§Ρ‚ΠΎ ΠΆ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° var ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ effectively final. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅.

ΠŸΡƒΠ½ΠΊΡ‚ 20: var-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ final-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ

Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ var ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½Π° объявлСна ΠΊΠ°ΠΊ effectively final). Но ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, ΠΊΠ°ΠΊ final.

ΠŸΡƒΠ½ΠΊΡ‚ 21: лямбда выраТСниям ΠΈ ссылкам Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π½ΡƒΠΆΠ½Ρ‹ явныС Ρ‚ΠΈΠΏΡ‹

Π’ΠΈΠΏ var Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ссли Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ инициализация Ρ‡Π΅Ρ€Π΅Π· лямбда выраТСния ΠΈ ссылки Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, с использованиСм var, Π½Π΅ скомпилируСтся:

ВмСсто этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅:

Но Π² Java 11 Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² контСкстС лямбда Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Java 11:

ΠŸΡƒΠ½ΠΊΡ‚ 22: ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ var null’Π΅ΠΌ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ

Π—Π°ΠΏΡ€Π΅Ρ‰Π΅Π½ΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡ‚ΡŒ var-ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±Π΅Π· ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π΅ скомпилируСтся (ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ null):

И этот Ρ‚ΠΎΠΆΠ΅ Π½Π΅ скомпилируСтся (отсутствуСт ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€):

А этот ΠΊΠΎΠ΄ скомпилируСтся ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ исправно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ:

ΠŸΡƒΠ½ΠΊΡ‚ 23: Ρ‚ΠΈΠΏ var нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² полях класса

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var для Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½ΠΎ Π½Π΅ Π² качСствС ΠΏΠΎΠ»Π΅ΠΉ классов.

Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкам компиляции:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Π°ΠΊΠΎΠΉ способ:

ΠŸΡƒΠ½ΠΊΡ‚ 24: var нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² Π±Π»ΠΎΠΊΠ΅ catch

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, это Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π² try-with-resources

Π‘Π»ΠΎΠΊ catch

Когда ΠΊΠΎΠ΄ бросаСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠΉΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ компиляции:

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ явный Ρ‚ΠΈΠΏ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ:

Try-with-resources

Однако, var ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Π±Π»ΠΎΠΊΠ΅ try-with-resources.

МоТно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ΠΎΠΌ с var:

ΠŸΡƒΠ½ΠΊΡ‚ 25: Ρ‚ΠΈΠΏ var ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ с Π΄ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΊΠ°ΠΌΠΈ

НапримСр, Ρƒ нас Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

Π’ этом случаС, использованиС var Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ ΠΈ оТидалось, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ просто ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ T Π½Π° var:

Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΄Π΅ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var:

Π’ΡƒΡ‚ ΠΌΠΎΠΆΠ½ΠΎ бСзопасно Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ List Π½Π° var:

ΠŸΡƒΠ½ΠΊΡ‚ 26: Π±ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ с Ρ‚ΠΈΠΏΠΎΠΌ var ΠΏΡ€ΠΈ использовании Wildcards (?), ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ²

ИспользованиС? Wildcards

МоТно бСзопасно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ var Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Но Π½Π΅ замСняйтС Foo Π½Π° var Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ошибки Π² ΠΊΠΎΠ΄Π΅, Π° с использованиСм var ΠΎΠ½ΠΈ чудСсным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΎΠ½ Π½Π΅ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, Π½ΠΎ, Π΄ΡƒΠΌΠ°ΡŽ, ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ идСю Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠΉ строки ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ArrayList ΠΈΠ· строк, Π° Π² ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Collection :

ИспользованиС ΠΊΠΎΠ²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (Foo ) ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (Foo )

ΠœΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Если ΠΌΡ‹ ΠΎΡˆΠΈΠ±ΠΎΡ‡Π½ΠΎ присвоим Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ошибки Π²ΠΎ врСмя компиляции, это Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚ΠΎ, Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ:

Но ΠΏΡ€ΠΈ использовании var:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Π·Π½Π°Ρ‡ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ любой класс, ΠΈ наш ΠΊΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ скомпилирован. Но это Π½Π΅ Ρ‚ΠΎ Ρ‡Π΅Π³ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ – наши ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Ρ‚ΠΈΠΏ Β«varΒ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ появился Π² Java 10. Π’Π°ΠΊΠΆΠ΅ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Π»ΠΈ мноТСство ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‚ прСимущСства ΠΈ нСдостатки ΠΏΡ€ΠΈ использовании динамичСского вывСдСния Ρ‚ΠΈΠΏΠ° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. И Π½Π°ΠΊΠΎΠ½Π΅Ρ† ΡƒΠ·Π½Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ var осущСствляСтся Π²ΠΎ врСмя компиляции, Ρ‡Ρ‚ΠΎ позволяСт ΠΎΡ‚Π»Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ мноТСство ошибок.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ var ΠΈ Π΄Π° ΠΏΡ€ΠΈΠ±ΡƒΠ΄Π΅Ρ‚ с Π²Π°ΠΌΠΈ Java!

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

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

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