созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ создадим Π½Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° языкС Java.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ прилоТСния Π½Π° языкС Java состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… шагов:

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ исходного Ρ„Π°ΠΉΠ»Π°

Π˜Ρ‚Π°ΠΊ, ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΈ пишСм Π² Π½Π΅ΠΌ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Hello World, Ρ†Π΅Π»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ β€” Π²Ρ‹Π²ΠΎΠ΄ Π½Π° экран сообщСния Hello World!

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Если Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Notepad++ Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π’ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°:Java source file (*.java)

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹! Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ Π² точности Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ называСтся наш класс β€” HelloWorld. Π’Π°ΠΊ ΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ рСгистр Π±ΡƒΠΊΠ². HelloWorld ΠΈ helloworld Π² Π΄Π°Π½Π½ΠΎΠΌ случаС это Ρ€Π°Π·Π½Ρ‹Π΅ слова!

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ исходного Ρ„Π°ΠΉΠ»Π°

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ создан, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ компиляции. Для компиляции Java ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ компилятор javac, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² состав установлСнного Π½Π°ΠΌΠΈ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€ΠΎΠΊΠ΅ ΠΏΠ°ΠΊΠ΅Ρ‚Π° JDK.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный Ρ„Π°ΠΉΠ», ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку. Для этого Π² мСню Windows ΠŸΡƒΡΠΊ Π² строкС поиска Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ cmd ΠΈ ΠΆΠΌΠ΅ΠΌ Enter. ПослС этого откроСтся ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² Π½Π΅ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π° Ρ‚ΠΎΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится наш исходный Ρ„Π°ΠΉΠ» (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ C:\studyjava\). Для этого Π²Π²ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ дирСктория измСнилась, Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ компиляции

ПослС этого, ΠΎΠΊΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (рис 2.2):

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ подтвСрТдСния, ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Однако, Π² ΠΏΠ°ΠΏΠΊΠ΅ с нашим исходным Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Ρ„Π°ΠΉΠ» HelloWorld.class. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Π­Ρ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π½Π° экран список всСх Ρ„Π°ΠΉΠ»ΠΎΠ², находящихся Π² Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ (рис 2.3).

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Если Ρ„Π°ΠΉΠ» HelloWorld.class присутствуСт Π² этом спискС, Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π»Π°ΡΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ.

Если Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΅ΡΡ‚ΡŒ ошибка, Ρ‚ΠΎ компилятор Java ΠΏΡ€ΠΈ компиляции Π½Π°ΠΌ ΠΎΠ± этом сообщит.

ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ экспСримСнт: ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ наш Ρ„Π°ΠΉΠ» HelloWorld.java ΠΈ ΡƒΠ΄Π°Π»ΠΈΠΌ послСднюю Π·Π°ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽΡΡ Ρ„ΠΈΠ³ΡƒΡ€Π½ΡƒΡŽ скобку Β«>Β». Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ Ρ„Π°ΠΉΠ» ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΅Π³ΠΎ Π΅Ρ‰Π΅ Ρ€Π°Π· ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ сообщСниС ΠΎΠ± ошибкС (рис 2.4).

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, Π½ΡƒΠΆΠ½ΠΎ вновь ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Ρ„Π°ΠΉΠ» для рСдактирования, ΡƒΡΡ‚Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΎΡˆΠΈΠ±ΠΊΡƒ, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΈ Π΅Ρ‰Π΅ Ρ€Π°Π· Π΅Π³ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.

Запуск ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ послСднСй стадии β€” запуску ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΌ ΠΎΠΊΠ½Π΅:

ΠΈ Ссли всС ΠΏΠ΅Ρ€Π΅Π΄ этим Π±Ρ‹Π»ΠΎ сдСлано ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Ρ‚ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” Π²Ρ‹Π²ΠΎΠ΄ сообщСния Β«Hello World!Β» (рис 2.5).

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π•Ρ‰Π΅ Ρ€Π°Π· ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΊ рСгистру Π² Java. Если Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ helloworld вмСсто HelloWorld, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Java попросту Π½Π΅ Π½Π°ΠΉΠ΄Π΅Ρ‚ Ρ„Π°ΠΉΠ» с Ρ‚Π°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.

Π’ качСствС домашнСго задания ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° экран ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ своС сообщСниС вмСсто Hello World!.

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

Быстрый старт Π² Java: ΠΎΡ‚ установки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ софта Π΄ΠΎ ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Как Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, Java β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых популярных языков программирования Π² ΠΌΠΈΡ€Π΅ ΠΈ Π΅Π³ΠΎ Π·Π½Π°Π½ΠΈΠ΅ сущСствСнно ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ Π²Π°ΡˆΡƒ Π·Π½Π°Ρ‡ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΊ программиста. Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΠ»ΠΈ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° этом языкС. Π’Π°ΠΌ понадобится ΠΏΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ JDK для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java. JDK β€” Π½Π°Π±ΠΎΡ€ софта, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Oracle, содСрТащий Π² сСбС компилятор (javac), срСду выполнСния (Java Runtime Environment), ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ языка, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ. ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² эту ΡΡ‚Π°Ρ‚ΡŒΡŽ, Π²Ρ‹ ΡƒΠ·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ JDK Π½Π° своСй систСмС, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ IDE ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ для Java. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Java.

Установка Java Development Kit

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ установили Java Development Kit, Π½ΠΎ это Π΅Ρ‰Π΅ Π½Π΅ всё. НСобходимо Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Π³ΠΎ для вашСй систСмы.

Настройка JDK Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Windows

ПослС установки JDK ΠΈ JRE Π½Π΅ ΠΏΠΎΠΌΠ΅ΡˆΠ°Π΅Ρ‚ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΎΠ΄Π½Ρƒ ΠΈΠ· IDE.

Установка IDE

Для Π½Π°Ρ‡Π°Π»Π° разбСрёмся, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ IDE.

IDE (Integrated Development Environment) β€” это комплСкс ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… срСдств, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ программистами для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. IDE позволяСт с Π»Ρ‘Π³ΠΊΠΎΡΡ‚ΡŒΡŽ ΠΏΠΈΡΠ°Ρ‚ΡŒ, Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ, ΠΎΡ‚Π»Π°ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄.

Для написания слоТных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ цСлСсообразно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ IDE. ΠœΡ‹ рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярныС.

Π‘Π»ΠΎΠΊΠ½ΠΎΡ‚

Π”Π°, ΠΈ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄! Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π°ΠΌ потрСбуСтся всСго лишь ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ JDK ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Π½Π΅ΠΉ. ΠŸΠΈΡˆΠ΅Ρ‚Π΅ ΠΊΠΎΠ΄ Π² Π±Π»ΠΎΠΊΠ½ΠΎΡ‚Π΅, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ слоТных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ это Π½Π΅ самый Π»ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈΠ·-Π·Π° отсутствия ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… возмоТностСй, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹Ρ… IDE.

NetBeans

NetBeans β€” Π²Ρ‹Π±ΠΎΡ€ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Π’ Π½Π΅ΠΉ Π΅ΡΡ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ возмоТности ΠΈ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ позволят Π²Π°ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ кроссплатформСнной, Π° ΠΊΠΎΠ΄ ΡƒΠ΄ΠΎΠ±ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΌ. NetBeans ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Java, Π½ΠΎ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ языки программирования для дСсктоп- ΠΈ Π²Π΅Π±-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Она ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ бСсплатна, ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π΅Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта. Π’ΠΎΡ‚ лишь Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅Ρ‘ возмоТности:

Eclipse

Eclipse, ΠΊΠ°ΠΊ ΠΈ Netbeans β€” ΠΎΠ΄Π½Π° ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярных IDE. Она прСдоставляСт Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ понятный интСрфСйс ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ срСду Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΡ„ΠΎΡ€Ρ‚Π½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния Π½Π° Java. Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Eclipse ΠΌΠΎΠΆΠ½ΠΎ бСсплатно с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта. ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:

IntelliJ IDEA

IntelliJ IDEA β€” извСстная IDE для Java, написанная, ΠΊΠ°ΠΊ Π½ΠΈ странно, Π½Π° Java. Π£ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ΠΎΠ²Π°Π½Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ инструмСнтами ΠΈ позволяСт Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. НахоТдСниС ошибок ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΊΠ° ΠΊΠΎΠ΄Π° Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±Ρ‹Π»ΠΈ Ρ‚Π°ΠΊΠΈΠΌΠΈ Π»Π΅Π³ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ с IntelliJ IDEA.

JCreator

JCreator β€” продвинутая ΠΈ самая быстрая IDE для Java, написанная Π½Π° C++.

ПишСм свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹ установили ΠΈ настроили JDK, JRE ΠΈ IDE для Java. Каков ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг? ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ языка. Π’Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с Π±Π°Π·ΠΎΠ²ΠΎΠΉ структурой ΠΊΠΎΠ΄Π° Π½Π° Java ΠΈ создадитС свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ! Π‘Ρ‚ΠΎΠΈΡ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Java слСдуСт ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ хотя Π±Ρ‹ с самыми простыми ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования.

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

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Java

Π’ Ρ„Π°ΠΉΠ»Π΅ с исходным ΠΊΠΎΠ΄ΠΎΠΌ содСрТится нСсколько классов β€” это части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π₯ΠΎΡ€ΠΎΡˆΠ΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ считаСтся Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° нСсколько Ρ„Π°ΠΉΠ»ΠΎΠ² с исходным ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ со своим Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’ классах содСрТатся ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€” дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ содСрТатся ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚.

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ созданию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π° Π² Π½Ρ‘ΠΌ ΠΈ Ρ„Π°ΠΉΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ваш ΠΊΠΎΠ΄. Рассмотрим созданиС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π½Π° IDE Eclipse, Π½ΠΎ Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… IDE процСсс отличаСтся Π½Π΅ сильно. CΠ²Π΅Ρ€Ρ…Ρƒ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«FileΒ», Π·Π°Ρ‚Π΅ΠΌ Π½Π°Π²Π΅Π΄ΠΈΡ‚Π΅ курсор Π½Π° Β«NewΒ», Π² ΠΎΡ‚ΠΊΡ€Ρ‹Π²ΡˆΠ΅ΠΌΡΡ мСню Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«Java ProjectΒ». Π’ появившСмся ΠΎΠΊΠ½Π΅ Π²Π²Π΅Π΄ΠΈΡ‚Π΅ имя ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π²Π°ΠΌ настройки (Ссли Π½Π΅ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ просто ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ всС ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ) ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«NextΒ». Π“ΠΎΡ‚ΠΎΠ²ΠΎ, Π²Ρ‹ создали ΠΏΡ€ΠΎΠ΅ΠΊΡ‚! ΠžΡΡ‚Π°Π»ΠΎΡΡŒ лишь ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π² Π½Ρ‘ΠΌ класс, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π²Ρ‹ Π½Π°ΠΏΠΈΡˆΠ΅Ρ‚Π΅ свою ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π©Ρ‘Π»ΠΊΠ½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΌΡ‹ΡˆΠΈ ΠΏΠΎ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρƒ (ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ справа) ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ Β«NewΒ» β†’ Β«ClassΒ». ΠŸΡ€ΠΈΡΠ²ΠΎΠΉΡ‚Π΅ Π½ΠΎΠ²ΠΎΠΌΡƒ классу имя (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ β€” это first ) ΠΈ Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Β«FinishΒ».

ΠŸΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΠΌ ΠΊ написанию вашСй ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. По Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, выводящая Π½Π° экран Β«Hello, world!Β».

Π Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ ΠΏΠΎ частям написанноС Π½Π°ΠΌΠΈ:

Π₯ΠΎΡ€ΠΎΡˆΠΎ, Π²Ρ‹ написали Π²Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΅Ρ‘ Π½Π°Π΄ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Для этого просто Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π±Π΅Π»ΡƒΡŽ стрСлочку Π² Π·Π΅Π»Π΅Π½ΠΎΠΌ ΠΊΡ€ΡƒΠΆΠΊΠ΅ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ (ΠΏΡ€ΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора Π½Π° Π½Π΅Ρ‘ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²Ρ‹ΡΠ²Π΅Ρ‚ΠΈΡ‚ΡŒΡΡ Β«RunΒ»). ПослС наТатия Π²Π½ΠΈΠ·Ρƒ откроСтся консоль, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ сообщСниС Β«Hello, worldΒ»! ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΡŽ, Π²Ρ‹ написали Π²Π°ΡˆΡƒ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Java ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒΡΡ Π² ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΈΡ€ этого языка!

ΠŸΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ссылки для дальнСйшСго изучСния

Π’ΠΎΡ‚ нСсколько рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Java:

Π₯ΠΈΠ½Ρ‚ для программистов: Ссли Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ΡΡŒ Π½Π° сорСвнования Huawei Cup, Ρ‚ΠΎ бСсплатно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ доступ ΠΊ ΠΎΠ½Π»Π°ΠΉΠ½-школС для участников. МоТно ΠΏΡ€ΠΎΠΊΠ°Ρ‡Π°Ρ‚ΡŒΡΡ ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠ°ΠΌ ΠΈ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ·Ρ‹ Π² самом сорСвновании.

ΠŸΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ рСгистрации

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

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ для запуска ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Java ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, компиляция, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° JVM

Ни для ΠΊΠΎΠ³ΠΎ Π½Π΅ сСкрСт, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Java β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых популярных языков программирования Π² ΠΌΠΈΡ€Π΅. Π”Π°Ρ‚Π° ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ выпуска Java β€” 23 мая 1995 Π³ΠΎΠ΄Π°.

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ посвящСна основам основ: Π² Π½Π΅ΠΉ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Ρ‹ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ особСнности языка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ придутся кстати Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ β€œΠ΄ΠΆΠ°Π²ΠΈΡΡ‚Π°ΠΌβ€, Π° ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Π΅ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ смогут ΠΎΡΠ²Π΅ΠΆΠΈΡ‚ΡŒ свои знания.

* Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²Π»Π΅Π½Π° Π½Π° основС Π΄ΠΎΠΊΠ»Π°Π΄Π° ЕвгСния Π€Ρ€Π°ΠΉΠΌΠ°Π½Π° β€” Java Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ IntexSoft.
Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ссылки Π½Π° внСшниС ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹
.

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

1. JDK, JRE, JVM

Java Development Kit β€” ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языкС Java. Он Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Java Development Tools ΠΈ срСду выполнСния Java β€” JRE (Java Runtime Environment).

Java development tools Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ Π² сСбя ΠΎΠΊΠΎΠ»ΠΎ 40 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΡƒΠ»ΠΎΠ²: javac (компилятор), java (Π»Π°ΡƒΠ½Ρ‡Π΅Ρ€ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ), javap (java class file disassembler), jdb (java debugger) ΠΈ Π΄Ρ€.

Π‘Ρ€Π΅Π΄Π° выполнСния JRE β€” это ΠΏΠ°ΠΊΠ΅Ρ‚ всСго Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ для запуска скомпилированной Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ JVM ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ классов Java β€” Java Class Library.

JVM β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, прСдназначСнная для выполнСния Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°. ΠŸΠ΅Ρ€Π²ΠΎΠ΅ прСимущСство JVM β€” это ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ β€œWrite once, run anywhere”. Он ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, написанноС Π½Π° Java, Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ…. Π­Ρ‚ΠΎ являСтся большим прСимущСством JVM ΠΈ самой Java.

Π”ΠΎ появлСния Java, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Ρ‹Π»ΠΈ написаны ΠΏΠΎΠ΄ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Π΅ систСмы, Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π΄Π°Π²Π°Π»ΠΎΡΡŒ Ρ€ΡƒΡ‡Π½ΠΎΠΌΡƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, ΠΊΠ°ΠΊ Π±ΠΎΠ»Π΅Π΅ эффСктивному ΠΈ прСдсказуСмому. Π‘ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½Ρ‹ 1990-Ρ… Π³ΠΎΠ΄ΠΎΠ², послС появлСния Java, автоматичСскоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ стало ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΎΠΉ.

БущСствуСт мноТСство Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ JVM, ΠΊΠ°ΠΊ коммСрчСских, Ρ‚Π°ΠΊ ΠΈ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Одна ΠΈΠ· Ρ†Π΅Π»Π΅ΠΉ создания Π½ΠΎΠ²Ρ‹Ρ… JVM β€” ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹. КаТдая JVM ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ ΠΏΠΎΠ΄ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ, ΠΏΡ€ΠΈ этом Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΅Π΅ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° быстрСС Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅. Бамая распространённая рСализация JVM β€” это JVM Hotspot ΠΎΡ‚ OpenJDK. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ IBM J9, Excelsior JET.

2. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° JVM

Богласно спСцификации Java SE, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ Π² JVM, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 3 этапа:

3. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ классов ΠΈ ΠΈΡ… иСрархия

ВСрнСмся ΠΊ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°ΠΌ классов β€” это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ классы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ JVM. Они Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ классы Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π΄Π΅Π»Π°ΡŽΡ‚ ΠΈΡ… доступными для выполнСния. Π—Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ со всСми классами: ΠΈ с нашими, ΠΈ с Ρ‚Π΅ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСпосрСдствСнно Π½ΡƒΠΆΠ½Ρ‹ для Java.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ: ΠΌΡ‹ написали своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ ΠΏΠΎΠΌΠΈΠΌΠΎ стандартных классов Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ наши классы, ΠΈ ΠΈΡ… ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ. Как с этим Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ JVM? Π’ Java Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° отлоТСнная Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° классов, ΠΈΠ½Ρ‹ΠΌΠΈ словами lazy loading. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° классов Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ встрСтится ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ классу.

Π˜Π΅Ρ€Π°Ρ€Ρ…ΠΈΡ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² классов

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ классов β€” это Bootstrap classloader. Он написан Π½Π° C++. Π­Ρ‚ΠΎ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ всС систСмныС классы ΠΈΠ· Π°Ρ€Ρ…ΠΈΠ²Π° rt.jar. ΠŸΡ€ΠΈ этом, Π΅ΡΡ‚ΡŒ нСбольшоС ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ классов ΠΈΠ· rt.jar ΠΈ Π½Π°ΡˆΠΈΡ… классов: ΠΊΠΎΠ³Π΄Π° JVM Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ классы ΠΈΠ· rt.jar, ΠΎΠ½Π° Π½Π΅ выполняСт всС этапы ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ любого Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класс-Ρ„Π°ΠΉΠ»Π° Ρ‚.ΠΊ. JVM ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ извСстно, Ρ‡Ρ‚ΠΎ всС эти классы ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² этот Π°Ρ€Ρ…ΠΈΠ² ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ свои Ρ„Π°ΠΉΠ»Ρ‹ Π½Π΅ стоит.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ β€” это Extension classloader. Он Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ классы Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ jre/lib/ext. Допустим, Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ класс загруТался ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ стартС Java ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Для этого Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ исходный Ρ„Π°ΠΉΠ» класса Π² эту ΠΏΠ°ΠΏΠΊΡƒ, ΠΈ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ.

Π•Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊ β€” System classloader. Он Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ классы ΠΈΠ· classpath’а, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΏΡ€ΠΈ запускС прилоТСния.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ классов происходит ΠΏΠΎ ΠΈΠ΅Ρ€Π°Ρ€Ρ…ΠΈΠΈ:

4. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π‘lass-Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ процСсс Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ нСпосрСдствСнно ΠΊ структурС Class-Ρ„Π°ΠΉΠ»ΠΎΠ².

ВсС числа, строки, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° классы, поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ хранятся Π² Π‘onstant pool β€” области памяти Meta space. ОписаниС класса хранится Ρ‚Π°ΠΌ ΠΆΠ΅ ΠΈ содСрТит имя, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹, супСр-класс, супСр-интСрфСйсы, поля, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹. Атрибуты, Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ классов:

5. ИсполнСниС Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π° Π½Π° JVM

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, для исполнСния Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄Π°, JVM ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡ β€” довольно ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΉ процСсс. Π’ процСссС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠΈ, ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€ β€œΠ±Π΅ΠΆΠΈΡ‚β€ построчно ΠΏΠΎ класс-Ρ„Π°ΠΉΠ»Ρƒ ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π³ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понятны JVM.

Π’Π°ΠΊΠΆΠ΅ JVM ΠΌΠΎΠΆΠ΅Ρ‚ Π΅Π³ΠΎ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Ρ‚.Π΅. ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСпосрСдствСнно Π½Π° CPU.

ΠšΠΎΠΌΠ°Π½Π΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ часто, Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Π° сразу Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

6. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡ

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ β€” это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, которая ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ исходныС части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, написанныС Π½Π° языкС программирования высокого уровня, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° машинном языкС, β€œΠΏΠΎΠ½ΡΡ‚Π½ΡƒΡŽβ€ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ.

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€Ρ‹ дСлятся Π½Π°:

Π’Π°ΠΊΠΆΠ΅ компиляторы ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ компиляции:

7. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ памяти Π² Java

Π‘Ρ‚Π΅ΠΊ β€” это ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти Π² Java, которая Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ схСмС LIFO β€” β€œLast in β€” Fisrt Out” ΠΈΠ»ΠΈ β€œΠŸΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ вошСл, ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»β€.

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Он Π½ΡƒΠΆΠ΅Π½ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² стСкС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° выполняСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ΠΈ Π±Ρ‹Π»ΠΈ созданы.

Когда вызываСтся любой ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Java, создаСтся Ρ„Ρ€Π΅ΠΉΠΌ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти Π² стСкС, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ кладСтся Π½Π° Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ. Когда ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΎΠ½ удаляСтся ΠΈΠ· памяти, Ρ‚Π΅ΠΌ самым освобоТдая ΠΏΠ°ΠΌΡΡ‚ΡŒ для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Если ΠΏΠ°ΠΌΡΡ‚ΡŒ стСка Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π°, Java бросит ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ java.lang.StackOverFlowError. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ, Ссли Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ рСкурсивная функция, которая Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ сама сСбя ΠΈ памяти Π² стСкС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Π²Π°Ρ‚Π°Ρ‚ΡŒ.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности стСка:

ΠšΡƒΡ‡Π° Ρ€Π°Π·Π±ΠΈΡ‚Π° Π½Π° нСсколько Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΡ… частСй, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… поколСниями:

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΎΡ‚ΠΊΠ°Π·Π°Π»ΠΈΡΡŒ ΠΎΡ‚ Permanent generation? Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, это ΠΈΠ·-Π·Π° ошибки, которая Π±Ρ‹Π»Π° связана с ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ области: Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Perm ΠΈΠΌΠ΅Π» константный Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ Π½Π΅ ΠΌΠΎΠ³ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ динамичСски, Ρ€Π°Π½ΠΎ ΠΈΠ»ΠΈ ΠΏΠΎΠ·Π΄Π½ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Π»Π°ΡΡŒ, кидалась ошибка, ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠ°Π΄Π°Π»ΠΎ.

Meta space ΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ динамичСский Ρ€Π°Π·ΠΌΠ΅Ρ€, ΠΈ Π²ΠΎ врСмя исполнСния ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒΡΡ Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² памяти JVM.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ особСнности ΠΊΡƒΡ‡ΠΈ:

ΠžΡΠ½ΠΎΠ²Ρ‹Π²Π°ΡΡΡŒ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²Ρ‹ΡˆΠ΅, рассмотрим, ΠΊΠ°ΠΊ происходит ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π½Π° простом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅:

Π£ нас Π΅ΡΡ‚ΡŒ класс App, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ СдинствСнный ΠΌΠ΅Ρ‚ΠΎΠ΄ main состоит ΠΈΠ·:

β€” ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½ΠΎΠΉ id Ρ‚ΠΈΠΏΠ° int со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 23
β€” ссылочной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ pName Ρ‚ΠΈΠΏΠ° String со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Jon
β€” ссылочной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ p Ρ‚ΠΈΠΏΠ° person

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка создаётся ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ хранятся Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ этому ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ для выполнСния.
Π’ нашСм случаС, это ссылка Π½Π° класс person: сам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ хранится Π² ΠΊΡƒΡ‡Π΅, Π° Π² стСкС хранится ссылка. Π’Π°ΠΊΠΆΠ΅ Π² стСк кладСтся ссылка Π½Π° строку, Π° сама строка хранится Π² ΠΊΡƒΡ‡Π΅ Π² String pool. ΠŸΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ² хранится нСпосрСдствСнно Π² стСкС.

Для Π²Ρ‹Π·ΠΎΠ²Π° конструктора с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ Person (String) ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄Π° main() Π² стСкС, ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° main() создаСтся Π² стСкС ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚:

β€” this β€” ссылка Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
β€” ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ id
β€” ΡΡΡ‹Π»ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ personName, которая ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° строку Π² String Pool.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²Ρ‹Π·Π²Π°Π»ΠΈ конструктор, вызываСтся setPersonName(), послС Ρ‡Π΅Π³ΠΎ снова создаСтся Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Ρ€Π΅ΠΉΠΌ Π² стСкС, Π³Π΄Π΅ хранятся Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅: ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ссылка Π½Π° строку, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° выполнится ΠΌΠ΅Ρ‚ΠΎΠ΄ setter, Ρ„Ρ€Π΅ΠΉΠΌ ΠΏΡ€ΠΎΠΏΠ°Π΄Π΅Ρ‚, стСк очистится. Π”Π°Π»Π΅Π΅ выполняСтся конструктор, очищаСтся Ρ„Ρ€Π΅ΠΉΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» создан ΠΏΠΎΠ΄ конструктор, послС Ρ‡Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ main() Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΈ Ρ‚ΠΎΠΆΠ΅ удаляСтся ΠΈΠ· стСка.

Если Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Π½Ρ‹ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, для Π½ΠΈΡ… Π±ΡƒΠ΄ΡƒΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ созданы Π½ΠΎΠ²Ρ‹Π΅ Ρ„Ρ€Π΅ΠΉΠΌΡ‹ с контСкстом этих ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ².

8. Garbage collector

Π’ ΠΊΡƒΡ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Garbage collector β€” ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π°Ρ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС Java, которая избавляСтся ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ.

Π Π°Π·Π½Ρ‹Π΅ JVM ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ сборки мусора, Ρ‚Π°ΠΊΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅ сборщики мусора.

ΠœΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ самом простом сборщикС Serial GC. Π‘Π±ΠΎΡ€ΠΊΡƒ мусора ΠΌΡ‹ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ System.gc().

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ упомянуто Π²Ρ‹ΡˆΠ΅, ΠΊΡƒΡ‡Π° Ρ€Π°Π·Π±ΠΈΡ‚Π° Π½Π° 2 области: New generation ΠΈ Old generation.

New generation (младшСС ΠΏΠΎΠΊΠΎΠ»Π΅Π½ΠΈΠ΅) Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя 3 Ρ€Π΅Π³ΠΈΠΎΠ½Π°: Eden, Survivor 0 ΠΈ Survivor 1.

Old generation Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Ρ€Π΅Π³ΠΈΠΎΠ½ Tenured.

Π§Ρ‚ΠΎ происходит, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ создаСм Π² Java ΠΎΠ±ΡŠΠ΅ΠΊΡ‚?

Π’ ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΠΏΠ°Π΄Π°Π΅Ρ‚ Π² Eden. Если ΠΌΡ‹ создали ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π² Eden ΡƒΠΆΠ΅ Π½Π΅Ρ‚ мСста, срабатываСт сборщик мусора ΠΈ освобоТдаСт ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π­Ρ‚ΠΎ, Ρ‚Π°ΠΊ называСмая, малая сборка мусора β€” Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ ΠΎΠ½ ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Eden ΠΈ ΠΊΠ»Π°Π΄Ρ‘Ρ‚ β€œΠ²Ρ‹ΠΆΠΈΠ²ΡˆΠΈΠ΅β€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ€Π΅Π³ΠΈΠΎΠ½ Survivor 0. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Ρ€Π΅Π³ΠΈΠΎΠ½ Eden ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ высвобоТдаСтся.

Если ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Eden снова Π±Ρ‹Π»Π° Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π°, garbage collector Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ Eden ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ Survivor 0, которая занята Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚. ПослС очищСния Π²Ρ‹ΠΆΠΈΠ²ΡˆΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠΏΠ°Π΄ΡƒΡ‚ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ€Π΅Π³ΠΈΠΎΠ½ β€” Survivor 1, Π° Π΄Π²Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… останутся чистыми. ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ сборкС мусора Π² качСствС Ρ€Π΅Π³ΠΈΠΎΠ½Π° назначСния ΠΎΠΏΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½ Survivor 0. ИмСнно поэтому Π²Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Ρ€Π΅Π³ΠΈΠΎΠ½ΠΎΠ² Survivor всСгда Π±Ρ‹Π» пустым.

JVM слСдит Π·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постоянно ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π΅Π³ΠΈΠΎΠ½Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ. И для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, послС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ€ΠΎΠ³Π° сборщик мусора ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² Ρ€Π΅Π³ΠΈΠΎΠ½ Tenured.

Когда Π² Tenured мСста для Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, происходит полная сборка мусора β€” Mark-Sweep-Compact.

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π’ΠΎ врСмя этого ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° опрСдСляСтся, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, Ρ€Π΅Π³ΠΈΠΎΠ½ очищаСтся ΠΎΡ‚ этих ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти Tenured дСфрагмСнтируСтся, Ρ‚.Π΅. ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ заполняСтся Π½ΡƒΠΆΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

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

Быстрый старт с Java: ΠΎΡ‚ знакомства Π΄ΠΎ вашСй ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΠ³Ρ€Ρ‹

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ рассчитана Π½Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π•Ρ‘ Ρ†Π΅Π»ΡŒ β€” ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π°Π·Ρ‹ языка Java (классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, компиляция, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, JVM, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, условия, Ρ†ΠΈΠΊΠ»Ρ‹, ΠΈΠΌΠΏΠΎΡ€Ρ‚). Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚:

Java Development Kit (JDK)

Π’ строку поиска Google Π²Π²ΠΎΠ΄ΠΈΠΌ запрос: β€œjdk 8 download”, пСрвая ΠΆΠ΅ строка поисковой Π²Ρ‹Π΄Π°Ρ‡ΠΈ даст Π½Π°ΠΌ ссылку Π½Π° страницу Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сайтС oracle.com. ЛистаСм Π²Π½ΠΈΠ·, Ρ‰Ρ‘Π»ΠΊΠ°Π΅ΠΌ ΠΏΠΎ Ρ€Π°Π΄ΠΈΠΎ-ΠΊΠ½ΠΎΠΏΠΊΠ΅ β€œAccept License Agreement”, соглашаясь с Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ, ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ β€œDownload”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΠΈ Π΅Ρ‘ разрядности (32/64). Для скачивания потрСбуСтся рСгистрация Π½Π° сайтС (Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½ ΠΈ e-mail). Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΈ устанавливаСм. На этапС Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΊΠΈ JDK рСкомСндуСтся ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Public JRE ΠΈ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ имя ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΎ β€œjdk1.8”.

Бчастливым обладатСлям Windows потрСбуСтся Ρ‚Π°ΠΊΠΆΠ΅ настройка систСмных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Как ΠΈΡ… Π½Π°ΠΉΡ‚ΠΈ: ПанСль управлСния β†’ БистСма β†’ Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ систСмы β†’ Π’ΠΊΠ»Π°Π΄ΠΊΠ° Β«Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΒ» β†’ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды», Π²Ρ‚ΠΎΡ€ΠΎΠ΅ окошко свСрху. Π’ Π½Π΅ΠΌ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ JAVA_HOME ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ) Path (для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΒ» ΠΈ Β«Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ». Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ JAVA_HOME содСрТит ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ JDK. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Path дополняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ %JAVA_HOME%\bin. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ список ΠΏΡƒΡ‚Π΅ΠΉ раздСляСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой (;). Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° сайтС Oracle.

JDK содСрТит ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Π½ΠΎ Π½Π°ΠΌ потрСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ компилятор (javac) ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java β€” JVM (java).

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ установки ΠΈ настройки ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС (Π½Π° Windows: Win + R β†’ cmd) ΠΈΠ»ΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ (Linux, Mac), Π½Π°Π±Ρ€Π°Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½-JDK вмСстС с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° сайтС Repl.it.

НаписаниС кода

ΠŸΠΈΡΠ°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π² любом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. А ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ запуск ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅). Но ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ с подсвСткой синтаксиса ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ запуск.

Для Windows Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Notepad++ с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ NppExec. Для Linux ΠΈ Мас ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ тСкстовыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Atom ΠΈΠ»ΠΈ Geany. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ± ΠΈΡ… настройкС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ «ПишСм ΠΊΠΎΠ΄ Π½Π° Java ΠΈ Go Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅Β».

Hello, world!

ΠŸΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ языка ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ Β«Hello, world!Β», β€” это традиция. Она Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π² 1978 Π³ΠΎΠ΄Ρƒ, с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π² свСт ΠΊΠ½ΠΈΠ³ΠΈ Β«Π―Π·Ρ‹ΠΊ программирования Π‘Β» Π‘Ρ€Π°ΠΉΠ°Π½Π° ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ ДСнниса Π ΠΈΡ‡ΠΈ.

Код начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова class. Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоят ΠΈΠ· классов β€” это Β«ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠΈΒ» прилоТСния. Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… прилоТСниях ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ дСсятки, сотни ΠΈ тысячи. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ имя класса β€” HelloWorld. ИмСна классов принято ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² стилС CamelCase (всС слова слитно, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹). Классам, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сущностям β€” ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, полям ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ β€” рСкомСндуСтся Π΄Π°Π²Π°Ρ‚ΡŒ мнСмоничСскиС, «говорящиС» ΠΈΠΌΠ΅Π½Π°.

ПослС ΠΈΠΌΠ΅Π½ΠΈ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках записываСтся Ρ‚Π΅Π»ΠΎ класса. Оно ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ поля, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы. Поля хранят Π΄Π°Π½Π½Ρ‹Π΅. Они ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Java это нСсколько иная ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ содСрТат Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄. ИмСна ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) принято ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² стилС camelCase, со строчной Π±ΡƒΠΊΠ²Ρ‹.

Π’ нашСм классС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” main(). Он особСнный, Π΅Π³ΠΎ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ стартовым. Когда Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ класс для исполнСния, ΠΎΠ½Π° ΠΈΡ‰Π΅Ρ‚ Π² Π½Ρ‘ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ main. Если Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ β€” выполняСт ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΌΠ΅Ρ‚ΠΎΠ΄. Если Π½Π΅Ρ‚ β€” Π²Ρ‹Π΄Π°Ρ‘Ρ‚ сообщСниС ΠΎΠ± ошибкС. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ main() ΠΈΠΌΠ΅Π» строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ сигнатуру: Π±Ρ‹Π» ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ (public), статичСским (static), Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния (void), с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ массива строк (String[] args). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Π΅Π³ΠΎ просто Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚.

Наш ΠΌΠ΅Ρ‚ΠΎΠ΄ main() содСрТит лишь ΠΎΠ΄Π½Ρƒ строку, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² консоль тСкст «Hello, world!».

ΠŸΠ΅Ρ€Π΅Π΄ компиляциСй сохраняСм написанный ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ». Имя Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ класса с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ рСгистра символов (Java β€” рСгистрозависимый язык). Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку (ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π») ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ сначала компилятор (javac), Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ JVM (java).

ПослС компиляции Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» HelloWorld.class, содСрТащий Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. Имя этого Ρ„Π°ΠΉΠ»Π° (Π±Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ) пСрСдаётся ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²ΠΈΠ΄ΠΈΠΌ строку Β«Hello, world!Β» β€” это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ хранят Π΄Π°Π½Π½Ρ‹Π΅ (числа, строки, логичСскиС значСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅). Они ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡ΠΊΠΈ: надписи Π½Π° Π½ΠΈΡ… β€” это имя ΠΈ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ находится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ этом Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

Π’ Java ΠΏΠ΅Ρ€Π΅Π΄ использованиСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ, ΡƒΠΊΠ°Π·Π°Π² Ρ‚ΠΈΠΏ ΠΈ имя, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Java β€” язык со строгой ΠΈ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π±Π΅Π· объявлСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС компиляции. По Ρ‚ΠΈΠΏΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ простыми (числа, символы, логичСскиС значСния) ΠΈΠ»ΠΈ ссылочными (массивы, строки, Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹). Π’ Java Π΅ΡΡ‚ΡŒ восСмь простых Ρ‚ΠΈΠΏΠΎΠ² (byte, int, short, long, float, double, boolean, char) ΠΈ бСсконСчноС количСство ссылочных.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ объявлСниС Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (int). ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ пСрСмСнная second инициируСтся ΠΏΡ€ΠΈ объявлСнии. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ first присваиваСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ присутствуСт пСрСмСнная second. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² консоль Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ значСния ΠΎΠ±Π΅ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: 35 ΠΈ 10.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условий

Π›ΡŽΠ±ΠΎΠΉ язык программирования высокого уровня позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ порядок выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² зависимости ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ условия. Π’ Java для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция if. ПослС этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Π² скобках записываСтся логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Ρ‚Π΅ΠΌ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках β€” Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ логичСского выраТСния β€” true (истина), Ρ‚ΠΎ эта Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄ выполняСтся, Ссли false (лоТь) β€” Π½Π΅Ρ‚.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° β€” строка β€œi = 10” Π² консоли, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ логичСского выраТСния (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° равСнство) Π±ΡƒΠ΄Π΅Ρ‚ true.

Π¦ΠΈΠΊΠ»Ρ‹

Π¦ΠΈΠΊΠ»Ρ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для повторСния Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄. Java позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Π²ΠΈΠ΄Π° Ρ†ΠΈΠΊΠ»ΠΎΠ²:

Запустив этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² консоли ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ чисСл ΠΎΡ‚ 0 Π΄ΠΎ 4. Π­Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ классичСского Ρ†ΠΈΠΊΠ»Π° for со счётчиком. Π’ ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ†ΠΈΠΊΠ»Π°, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой: объявлСниС ΠΈ инициализация счётчика, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия продолТСния Ρ†ΠΈΠΊΠ»Π°, дСйствиС послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках β€” Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’ нашСм случаС это ΠΊΠΎΠΌΠ°Π½Π΄Π°, выводящая Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика i Π² консоль.

Когда Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ»Ρ‹ while ΠΈ do-while β€” Ρ‚Π°ΠΌ ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Пока достаточно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… синтаксис ΠΏΡ€ΠΎΡ‰Π΅ for, Π° Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках послС while Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Ρ†ΠΈΠΊΠ»Π° for β€” Π±Π΅Π· счётчика. Π’Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π΅ элСмСнтов массива ΠΈΠ»ΠΈ списка.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΈ использованиС классов

Один ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² программирования β€” DRY: Don’t Repeat Youself (Π½Π΅ повторяйся). Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, ΡƒΠΆΠ΅ создано, ΠΎΡ‚Π»Π°ΠΆΠ΅Π½ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Java поставляСтся с Π½Π°Π±ΠΎΡ€ΠΎΠΌ packages (ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²). Они содСрТат скомпилированныС классы, сгруппированныС ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. На Π½Π΅Ρ‘ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°: java.io, java.util, java.net ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ ΠΈΠ³Ρ€Π΅ Π½Π°ΠΌ потрСбуСтся случайноС число ΠΎΡ‚ 0 Π΄ΠΎ 9. ΠŸΠΈΡΠ°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл Π½Π΅Π·Π°Ρ‡Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ java.util Π΅ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ класс Random. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² самом Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° класса.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° основании класса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π‘Π»Π΅Π²Π° ΠΎΡ‚ Π·Π½Π°ΠΊΠ° присваивания (=) объявляСм ΡΡΡ‹Π»ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) random Ρ‚ΠΈΠΏΠ° Random. Π‘ΠΏΡ€Π°Π²Π° создаём ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ new.

Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ послС ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: random.nextInt(10). Π¦ΠΈΡ„Ρ€Π° 10 ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… чисСл (ΠΎΡ‚ 0 Π΄ΠΎ 9). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ строку ΠΈΠ· 30 случайных чисСл. ЗапуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСсколько Ρ€Π°Π· ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл Π½Π΅ повторяСтся.

Π˜Π³Ρ€Π° Β«Π£Π³Π°Π΄Π°ΠΉ число»

ΠœΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Β«Π£Π³Π°Π΄Π°ΠΉ число». Π’ Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Β«Π·Π°Π³Π°Π΄Ρ‹Π²Π°Π΅Ρ‚Β» Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 9, Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ β€” Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ класс GuessTheNumber с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ main(), ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ классы ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Класс Scanner обСспСчит Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ чисСл с консоли (System.in β€” консоль).

Объявим ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: счётчик ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ count, для чтСния числа с консоли β€” guess, для хранСния Π·Π°Π³Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа β€” number.

ОпишСм основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ while. Π’ Ρ†ΠΈΠΊΠ»Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ число с консоли, сравниваСм с Π·Π°Π³Π°Π΄Π°Π½Π½Ρ‹ΠΌ. Π’ случаС нСсовпадСния Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ подсказку ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π½Π° 1.

Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while повторяСтся, ΠΏΠΎΠΊΠ° логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² скобках Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ наш Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ мСньшС 3 ΠΈ число Π½Π΅ ΠΎΡ‚Π³Π°Π΄Π°Π½ΠΎ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, которая позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ согласно ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π² скобках. Π­Ρ‚ΠΎ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Если условиС Π² скобках true, Ρ‚ΠΎ возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слСва ΠΎΡ‚ двоСточия, Ссли false β€” справа.

ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строку с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈΠ³Ρ€Ρ‹ (ΠΏΠΎΠ±Π΅Π΄Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Ρˆ) послС Ρ†ΠΈΠΊΠ»Π° β€” Ρ‚ΡƒΡ‚ снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. ВСкст Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выглядит Ρ‚Π°ΠΊ:

БохраняСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Ρ„Π°ΠΉΠ» GuessTheNumber.java, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ (javac), Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ JVM (java) β€” ΠΈ ΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΡ‚Ρ€ΠΈΡ…: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» do-while, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ сСанс ΠΈΠ³Ρ€Ρ‹ Π±Π΅Π· пСрСзапуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° do-while повторяСтся Π½Π° Ρ‚Π΅Ρ… ΠΆΠ΅ условиях, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while: логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² скобках Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ true.

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

На всякий случай ΠΏΡ€ΠΈΠ»Π°Π³Π°ΡŽ ΠΌΠΎΠΉ telegram β€” @biblelamp. Если вас заинтСрСсовала Ρ‚Π΅ΠΌΠ°, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Β«Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β» Майка ΠœΠ°ΠΊΠ“Ρ€Π°Ρ‚Π° ΠΈ Β«Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ JavaΒ» ΠšΡΡ‚ΠΈ Π‘ΡŒΠ΅Ρ€Ρ€Π° ΠΈ Π‘Π΅Ρ€Ρ‚ БСйтс. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Java Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создания Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ³Ρ€. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Π±Π»ΠΎΠ³ΠΎΠΌ!

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ· сСрии «Быстрый старт с JavaΒ»:

Если язык Java вас заинтСрСсовал β€” ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Если Π΅Ρ‰Ρ‘ Π½Π΅ совсСм ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ β€” посмотритС истории успСха Π½Π°ΡˆΠΈΡ… Java-выпускников:

созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск. Π€ΠΎΡ‚ΠΎ созданиС ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° java Π΅Π΅ компиляция Π² Π±Π°ΠΉΡ‚ ΠΊΠΎΠ΄ ΠΈ запуск

Π­Ρ‚Π° ΡΡ‚Π°Ρ‚ΡŒΡ рассчитана Π½Π° Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π•Ρ‘ Ρ†Π΅Π»ΡŒ β€” ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π°Π·Ρ‹ языка Java (классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, компиляция, Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄, JVM, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, условия, Ρ†ΠΈΠΊΠ»Ρ‹, ΠΈΠΌΠΏΠΎΡ€Ρ‚). Π­Ρ‚ΠΎΡ‚ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚:

Java Development Kit (JDK)

Π’ строку поиска Google Π²Π²ΠΎΠ΄ΠΈΠΌ запрос: β€œjdk 8 download”, пСрвая ΠΆΠ΅ строка поисковой Π²Ρ‹Π΄Π°Ρ‡ΠΈ даст Π½Π°ΠΌ ссылку Π½Π° страницу Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π½Π° сайтС oracle.com. ЛистаСм Π²Π½ΠΈΠ·, Ρ‰Ρ‘Π»ΠΊΠ°Π΅ΠΌ ΠΏΠΎ Ρ€Π°Π΄ΠΈΠΎ-ΠΊΠ½ΠΎΠΏΠΊΠ΅ β€œAccept License Agreement”, соглашаясь с Π»ΠΈΡ†Π΅Π½Π·ΠΈΠ΅ΠΉ, ΠΈ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠ°ΠΊΠ΅Ρ‚ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ β€œDownload”, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ соотвСтствуСт вашСй ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС ΠΈ Π΅Ρ‘ разрядности (32/64). Для скачивания потрСбуСтся рСгистрация Π½Π° сайтС (Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΠ½ ΠΈ e-mail). Π‘ΠΊΠ°Ρ‡ΠΈΠ²Π°Π΅ΠΌ ΠΈ устанавливаСм. На этапС Π²Ρ‹Π±ΠΎΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² ΠΈ ΠΏΠ°ΠΏΠΊΠΈ JDK рСкомСндуСтся ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Public JRE ΠΈ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ имя ΠΏΠ°ΠΏΠΊΠΈ Π΄ΠΎ β€œjdk1.8”.

Бчастливым обладатСлям Windows потрСбуСтся Ρ‚Π°ΠΊΠΆΠ΅ настройка систСмных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Как ΠΈΡ… Π½Π°ΠΉΡ‚ΠΈ: ПанСль управлСния β†’ БистСма β†’ Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ систСмы β†’ Π’ΠΊΠ»Π°Π΄ΠΊΠ° Β«Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΒ» β†’ ΠΊΠ½ΠΎΠΏΠΊΠ° Β«ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ срСды», Π²Ρ‚ΠΎΡ€ΠΎΠ΅ окошко свСрху. Π’ Π½Π΅ΠΌ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ JAVA_HOME ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ (Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ) Path (для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ Β«Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒΒ» ΠΈ Β«Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΒ». Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ JAVA_HOME содСрТит ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ JDK. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Path дополняСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ %JAVA_HOME%\bin. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ список ΠΏΡƒΡ‚Π΅ΠΉ раздСляСтся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой (;). Π˜Π½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° сайтС Oracle.

JDK содСрТит ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚, Π½ΠΎ Π½Π°ΠΌ потрСбуСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ компилятор (javac) ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java β€” JVM (java).

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ установки ΠΈ настройки ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС (Π½Π° Windows: Win + R β†’ cmd) ΠΈΠ»ΠΈ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ (Linux, Mac), Π½Π°Π±Ρ€Π°Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½-JDK вмСстС с Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° сайтС Repl.it.

НаписаниС кода

ΠŸΠΈΡΠ°Ρ‚ΡŒ исходный ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π² любом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅. А ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ запуск ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкС (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅). Но ΡƒΠ΄ΠΎΠ±Π½Π΅Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅ с подсвСткой синтаксиса ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΈ запуск.

Для Windows Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π²Ρ‹Π±ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Notepad++ с ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ NppExec. Для Linux ΠΈ Мас ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ тСкстовыС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Atom ΠΈΠ»ΠΈ Geany. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ± ΠΈΡ… настройкС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ «ПишСм ΠΊΠΎΠ΄ Π½Π° Java ΠΈ Go Π² тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅Β».

Hello, world!

ΠŸΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ языка ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, Π²Ρ‹Π²ΠΎΠ΄ΡΡ‰ΡƒΡŽ Β«Hello, world!Β», β€” это традиция. Она Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° Π² 1978 Π³ΠΎΠ΄Ρƒ, с Π²Ρ‹Ρ…ΠΎΠ΄ΠΎΠΌ Π² свСт ΠΊΠ½ΠΈΠ³ΠΈ Β«Π―Π·Ρ‹ΠΊ программирования Π‘Β» Π‘Ρ€Π°ΠΉΠ°Π½Π° ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½Π° ΠΈ ДСнниса Π ΠΈΡ‡ΠΈ.

Код начинаСтся с ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова class. Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ состоят ΠΈΠ· классов β€” это Β«ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈΠΊΠΈΒ» прилоТСния. Π’ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… прилоТСниях ΠΈΡ… ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ дСсятки, сотни ΠΈ тысячи. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ имя класса β€” HelloWorld. ИмСна классов принято ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² стилС CamelCase (всС слова слитно, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ с Π·Π°Π³Π»Π°Π²Π½ΠΎΠΉ Π±ΡƒΠΊΠ²Ρ‹). Классам, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠΌ сущностям β€” ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ, полям ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ β€” рСкомСндуСтся Π΄Π°Π²Π°Ρ‚ΡŒ мнСмоничСскиС, «говорящиС» ΠΈΠΌΠ΅Π½Π°.

ПослС ΠΈΠΌΠ΅Π½ΠΈ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках записываСтся Ρ‚Π΅Π»ΠΎ класса. Оно ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ поля, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ классы. Поля хранят Π΄Π°Π½Π½Ρ‹Π΅. Они ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² Java это нСсколько иная ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ содСрТат Π½Π°Π±ΠΎΡ€ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΊΠΎΠ΄. ИмСна ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (ΠΊΠ°ΠΊ ΠΈ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…) принято ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² стилС camelCase, со строчной Π±ΡƒΠΊΠ²Ρ‹.

Π’ нашСм классС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” main(). Он особСнный, Π΅Π³ΠΎ часто Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ стартовым. Когда Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Java ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ класс для исполнСния, ΠΎΠ½Π° ΠΈΡ‰Π΅Ρ‚ Π² Π½Ρ‘ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ main. Если Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ β€” выполняСт ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΌΠ΅Ρ‚ΠΎΠ΄. Если Π½Π΅Ρ‚ β€” Π²Ρ‹Π΄Π°Ρ‘Ρ‚ сообщСниС ΠΎΠ± ошибкС. Π’Π°ΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ main() ΠΈΠΌΠ΅Π» строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΡƒΡŽ сигнатуру: Π±Ρ‹Π» ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΌ (public), статичСским (static), Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΌ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ значСния (void), с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ Π² Π²ΠΈΠ΄Π΅ массива строк (String[] args). Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина Π΅Π³ΠΎ просто Π½Π΅ Π½Π°ΠΉΠ΄Ρ‘Ρ‚.

Наш ΠΌΠ΅Ρ‚ΠΎΠ΄ main() содСрТит лишь ΠΎΠ΄Π½Ρƒ строку, которая Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π² консоль тСкст «Hello, world!».

ΠŸΠ΅Ρ€Π΅Π΄ компиляциСй сохраняСм написанный ΠΊΠΎΠ΄ Π² Ρ„Π°ΠΉΠ». Имя Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½ΠΈ класса с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ рСгистра символов (Java β€” рСгистрозависимый язык). Π—Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку (ΠΈΠ»ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π») ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ сначала компилятор (javac), Π° ΠΏΠΎΡ‚ΠΎΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ JVM (java).

ПослС компиляции Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» HelloWorld.class, содСрТащий Π±Π°ΠΉΡ‚-ΠΊΠΎΠ΄. Имя этого Ρ„Π°ΠΉΠ»Π° (Π±Π΅Π· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ) пСрСдаётся ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²ΠΈΠ΄ΠΈΠΌ строку Β«Hello, world!Β» β€” это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ хранят Π΄Π°Π½Π½Ρ‹Π΅ (числа, строки, логичСскиС значСния ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅). Они ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° ΠΊΠΎΡ€ΠΎΠ±ΠΎΡ‡ΠΊΠΈ: надписи Π½Π° Π½ΠΈΡ… β€” это имя ΠΈ Ρ‚ΠΈΠΏ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ находится Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈ этом Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

Π’ Java ΠΏΠ΅Ρ€Π΅Π΄ использованиСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ, ΡƒΠΊΠ°Π·Π°Π² Ρ‚ΠΈΠΏ ΠΈ имя, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Java β€” язык со строгой ΠΈ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π±Π΅Π· объявлСния ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Ρ‚ ΠΊ ошибкС компиляции. По Ρ‚ΠΈΠΏΡƒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ простыми (числа, символы, логичСскиС значСния) ΠΈΠ»ΠΈ ссылочными (массивы, строки, Π»ΡŽΠ±Ρ‹Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹). Π’ Java Π΅ΡΡ‚ΡŒ восСмь простых Ρ‚ΠΈΠΏΠΎΠ² (byte, int, short, long, float, double, boolean, char) ΠΈ бСсконСчноС количСство ссылочных.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π½ΠΈΠΆΠ΅ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ объявлСниС Π΄Π²ΡƒΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° (int). ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ пСрСмСнная second инициируСтся ΠΏΡ€ΠΈ объявлСнии. Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ first присваиваСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выраТСния, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ присутствуСт пСрСмСнная second. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² консоль Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½Ρ‹ значСния ΠΎΠ±Π΅ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…: 35 ΠΈ 10.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условий

Π›ΡŽΠ±ΠΎΠΉ язык программирования высокого уровня позволяСт ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ порядок выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² зависимости ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ условия. Π’ Java для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ конструкция if. ПослС этого ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова Π² скобках записываСтся логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π·Π°Ρ‚Π΅ΠΌ Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках β€” Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄. Если Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ логичСского выраТСния β€” true (истина), Ρ‚ΠΎ эта Π³Ρ€ΡƒΠΏΠΏΠ° ΠΊΠΎΠΌΠ°Π½Π΄ выполняСтся, Ссли false (лоТь) β€” Π½Π΅Ρ‚.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° β€” строка β€œi = 10” Π² консоли, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ логичСского выраТСния (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° равСнство) Π±ΡƒΠ΄Π΅Ρ‚ true.

Π¦ΠΈΠΊΠ»Ρ‹

Π¦ΠΈΠΊΠ»Ρ‹ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для повторСния Π³Ρ€ΡƒΠΏΠΏΡ‹ ΠΊΠΎΠΌΠ°Π½Π΄. Java позволяСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° Π²ΠΈΠ΄Π° Ρ†ΠΈΠΊΠ»ΠΎΠ²:

Запустив этот ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Π² консоли ΠΊΠΎΠ»ΠΎΠ½ΠΊΡƒ чисСл ΠΎΡ‚ 0 Π΄ΠΎ 4. Π­Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ классичСского Ρ†ΠΈΠΊΠ»Π° for со счётчиком. Π’ ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках Ρ‚Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° Ρ†ΠΈΠΊΠ»Π°, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ с запятой: объявлСниС ΠΈ инициализация счётчика, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия продолТСния Ρ†ΠΈΠΊΠ»Π°, дСйствиС послС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Ρ… скобках β€” Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’ нашСм случаС это ΠΊΠΎΠΌΠ°Π½Π΄Π°, выводящая Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика i Π² консоль.

Когда Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ»Ρ‹ while ΠΈ do-while β€” Ρ‚Π°ΠΌ ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Пока достаточно ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡ… синтаксис ΠΏΡ€ΠΎΡ‰Π΅ for, Π° Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках послС while Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π½ΠΈΠΆΠ΅ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ Ρ†ΠΈΠΊΠ»Π° for β€” Π±Π΅Π· счётчика. Π’Π°ΠΊΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π΅ элСмСнтов массива ΠΈΠ»ΠΈ списка.

Π˜ΠΌΠΏΠΎΡ€Ρ‚ ΠΈ использованиС классов

Один ΠΈΠ· Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² программирования β€” DRY: Don’t Repeat Youself (Π½Π΅ повторяйся). Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎ, ΡƒΠΆΠ΅ создано, ΠΎΡ‚Π»Π°ΠΆΠ΅Π½ΠΎ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚.

Java поставляСтся с Π½Π°Π±ΠΎΡ€ΠΎΠΌ packages (ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²). Они содСрТат скомпилированныС классы, сгруппированныС ΠΏΠΎ Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. На Π½Π΅Ρ‘ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ имя ΠΏΠ°ΠΊΠ΅Ρ‚Π°: java.io, java.util, java.net ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ ΠΈΠ³Ρ€Π΅ Π½Π°ΠΌ потрСбуСтся случайноС число ΠΎΡ‚ 0 Π΄ΠΎ 9. ΠŸΠΈΡΠ°Ρ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл Π½Π΅Π·Π°Ρ‡Π΅ΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΠ°ΠΊΠ΅Ρ‚Π΅ java.util Π΅ΡΡ‚ΡŒ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ класс Random. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ класс ΠΈΠ· ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π΅Π³ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. Π‘Ρ‚Ρ€ΠΎΠΊΠΈ с Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°ΠΌΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ Π² самом Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° класса.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° основании класса, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄. Π‘Π»Π΅Π²Π° ΠΎΡ‚ Π·Π½Π°ΠΊΠ° присваивания (=) объявляСм ΡΡΡ‹Π»ΠΎΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚) random Ρ‚ΠΈΠΏΠ° Random. Π‘ΠΏΡ€Π°Π²Π° создаём ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ new.

Π’Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΡƒ послС ΠΈΠΌΠ΅Π½ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°: random.nextInt(10). Π¦ΠΈΡ„Ρ€Π° 10 ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… чисСл (ΠΎΡ‚ 0 Π΄ΠΎ 9). Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ строку ΠΈΠ· 30 случайных чисСл. ЗапуститС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ нСсколько Ρ€Π°Π· ΠΈ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ чисСл Π½Π΅ повторяСтся.

Π˜Π³Ρ€Π° Β«Π£Π³Π°Π΄Π°ΠΉ число»

ΠœΡ‹ ΡƒΠ·Π½Π°Π»ΠΈ достаточно, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ Β«Π£Π³Π°Π΄Π°ΠΉ число». Π’ Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Β«Π·Π°Π³Π°Π΄Ρ‹Π²Π°Π΅Ρ‚Β» Ρ†Π΅Π»ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 9, Π° Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠ³Π°Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ β€” Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΈ.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ класс GuessTheNumber с ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ main(), ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π½ΡƒΠΆΠ½Ρ‹Π΅ Π½Π°ΠΌ классы ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Класс Scanner обСспСчит Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ чисСл с консоли (System.in β€” консоль).

Объявим ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅ΠΌ Ρ‚Ρ€ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅: счётчик ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ count, для чтСния числа с консоли β€” guess, для хранСния Π·Π°Π³Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ числа β€” number.

ОпишСм основной ΠΈΠ³Ρ€ΠΎΠ²ΠΎΠΉ Ρ†ΠΈΠΊΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ while. Π’ Ρ†ΠΈΠΊΠ»Π΅ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌ число с консоли, сравниваСм с Π·Π°Π³Π°Π΄Π°Π½Π½Ρ‹ΠΌ. Π’ случаС нСсовпадСния Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ подсказку ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π΅ΠΌ счётчик ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π½Π° 1.

Π’Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while повторяСтся, ΠΏΠΎΠΊΠ° логичСскоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² скобках Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ true. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ наш Ρ†ΠΈΠΊΠ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒΡΡ, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ счётчика ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ мСньшС 3 ΠΈ число Π½Π΅ ΠΎΡ‚Π³Π°Π΄Π°Π½ΠΎ. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, которая позволяСт Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π΄Π²ΡƒΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ согласно ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ Π² скобках. Π­Ρ‚ΠΎ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. Если условиС Π² скобках true, Ρ‚ΠΎ возвращаСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слСва ΠΎΡ‚ двоСточия, Ссли false β€” справа.

ΠžΡΡ‚Π°Ρ‘Ρ‚ΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ строку с Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΈΠ³Ρ€Ρ‹ (ΠΏΠΎΠ±Π΅Π΄Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹Ρˆ) послС Ρ†ΠΈΠΊΠ»Π° β€” Ρ‚ΡƒΡ‚ снова ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚Π΅Ρ€Π½Π°Ρ€Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. ВСкст Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выглядит Ρ‚Π°ΠΊ:

БохраняСм ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² Ρ„Π°ΠΉΠ» GuessTheNumber.java, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ (javac), Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ JVM (java) β€” ΠΈ ΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π²Ρ‹ΠΈΠ³Ρ€Π°Ρ‚ΡŒ Ρƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΡˆΡ‚Ρ€ΠΈΡ…: ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ» do-while, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ сСанс ΠΈΠ³Ρ€Ρ‹ Π±Π΅Π· пСрСзапуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌ Π½ΠΈΠΆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° do-while повторяСтся Π½Π° Ρ‚Π΅Ρ… ΠΆΠ΅ условиях, Ρ‡Ρ‚ΠΎ ΠΈ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while: логичСскоС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² скобках Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ true.

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

На всякий случай ΠΏΡ€ΠΈΠ»Π°Π³Π°ΡŽ ΠΌΠΎΠΉ telegram β€” @biblelamp. Если вас заинтСрСсовала Ρ‚Π΅ΠΌΠ°, Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Β«Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…Β» Майка ΠœΠ°ΠΊΠ“Ρ€Π°Ρ‚Π° ΠΈ Β«Π˜Π·ΡƒΡ‡Π°Π΅ΠΌ JavaΒ» ΠšΡΡ‚ΠΈ Π‘ΡŒΠ΅Ρ€Ρ€Π° ΠΈ Π‘Π΅Ρ€Ρ‚ БСйтс. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΡΡ‚Π°Ρ‚ΡŒΡΡ… ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Java Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ создания Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΈΠ³Ρ€. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° Π±Π»ΠΎΠ³ΠΎΠΌ!

Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ· сСрии «Быстрый старт с JavaΒ»:

Если язык Java вас заинтСрСсовал β€” ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ°Π΅ΠΌ Π½Π° Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Если Π΅Ρ‰Ρ‘ Π½Π΅ совсСм ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹ β€” посмотритС истории успСха Π½Π°ΡˆΠΈΡ… Java-выпускников:

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

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

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