Как вывСсти hello world Π½Π° java

Как вывСсти hello world Π½Π° java

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

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

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

Как вывСсти hello world Π½Π° java

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

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

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

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

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

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

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

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

Как вывСсти hello world Π½Π° java

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

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

Как вывСсти hello world Π½Π° java

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

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

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

Как вывСсти hello world Π½Π° java

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

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

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

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

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

Как вывСсти hello world Π½Π° java

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

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

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

Java Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄ Β«Hello worldΒ»

На Ρ…Π°Π±Ρ€Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΡ€ΠΎ java Π±Π°ΠΉΡ‚ΠΊΠΎΠ΄. Π― Ρ€Π΅ΡˆΠΈΠ» Π΅Π΅ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΈ Π² ΠΌΠ΅Ρ€Ρƒ сил Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΌΡƒ. МнС каТСтся довольно Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Java. А Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‰Π΅ Β«Hello worldΒ»?
Для своСго экспСримСнта я создал Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ src, ΠΊΡƒΠ΄Π° Π² ΠΏΠ°ΠΏΠΊΡƒ hello ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Ρ„Π°ΠΉΠ» App.java:

Π‘ΠΊΠΎΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„Π°ΠΉΠ» ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:

На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ classes Ρƒ мСня появился Ρ„Π°ΠΉΠ» App.class Для Π½Π°Ρ‡Π°Π»Π° сравним Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ java ΠΈ class Ρ„Π°ΠΉΠ»ΠΎΠ².

App.java 139B
App.class 418B

Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΠΎ. МнС ΠΏΠΎΡ‡Π΅ΠΌΡƒ-Ρ‚ΠΎ казалось, Ρ‡Ρ‚ΠΎ скомпилированный Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ мСньшС. ΠŸΠΎΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ class Ρ„Π°ΠΉΠ»:

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ Π½Π΅ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½Ρ‹ΠΉ Π²ΠΈΠ΄ для Java ΠΊΠΎΠ΄Π°. ΠŸΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ описаниС Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° class Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ здСсь Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.

Π­Ρ‚ΠΎ 4 Π±Π°ΠΉΡ‚Π° для magic, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π°.

minor version β€” ΠœΠΈΠ½ΠΎΡ€Π½Π°Ρ вСрсия ΠΊΠ°ΠΊ слСдуСт ΠΈΠ· названия

major version β€” 2 Π±Π°ΠΉΡ‚Π° ΠΏΠΎΠ΄ ΠΌΠ°ΠΆΠΎΡ€Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.
Π‘ΠΎΡ‡Π΅Ρ‚Π°Π½ΠΈΠ΅ minor ΠΈ major version Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ я ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π» этот ΠΊΠΎΠ΄ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ J2SE 8.

Π­Ρ‚ΠΈ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ constant_pool_count ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ constant_pool. Π’ ΠΌΠΎΠ΅ΠΌ случаС count Ρ€Π°Π²Π΅Π½ 29, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΡƒΠ»Π°, соотвСтствСнно 28. Π”Π°Π»ΡŒΡˆΠ΅ ΠΈΠ΄ΡƒΡ‚ элСмСнты Π²ΠΈΠ΄Π°:

cp_info <
u1 tag; // 1 Π±Π°ΠΉΡ‚ Π½Π° Ρ‚Π΅Π³
u1 info[]; // массив с описаниСм
>

Рассмотрим элСмСнты Π² constant_pool.

Π­Ρ‚ΠΎΡ‚ Ρ‚Π΅Π³ соотвСтствуСт CONSTANT_Methodref, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ дальшС Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ описаниС:

CONSTANT_Methodref_info <
u1 tag;
u2 class_index;
u2 name_and_type_index;
>
соотвСтствСнно:

class_index, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 6 элСмСнт Π² constant_pool

name_and_type_index, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° 15 элСмСнт Π² constant_pool

Пока Π½Π΅ понятно, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ эта ссылка ΠΈ ΠΌΡ‹ ΠΈΠ΄Π΅ΠΌ дальшС:

Π­Ρ‚ΠΎ CONSTANT_Fieldref, Π° Π·Π½Π°Ρ‡ΠΈΡ‚ дальшС ΠΈΡ‰Π΅ΠΌ:

CONSTANT_Fieldref_info <
u1 tag;
u2 class_index;
u2 name_and_type_index;
>

И Ρ‚ΡƒΡ‚ всС ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ элСмСнт, хотя Π½Π΅ понятно Ρ‡Ρ‚ΠΎ это Π·Π° ΠΏΠΎΠ»Π΅, Π² своСм классС я Π²Ρ€ΠΎΠ΄Π΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅ объявлял.

class_index Π² 16 элСмСнтС

name_and_type_index Π² 17 элСмСнтС

tag для CONSTANT_String

ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ самоС интСрСсноС Π»Π΅ΠΆΠΈΡ‚ Π² 18 элСмСнтС:

Tag ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ссылкС Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄:
класс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ описан Π² 19 элСмСнтС

a Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΈΠΏ Π² 20 элСмСнтС:

5-Ρ‹ΠΉ элСмСнт:
Tag для CONSTANT_Class

Π½Π°Π·Π²Π°Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π² 21 элСмСнтС

6-ΠΎΠΉ элСмСнт:
CΠ½ΠΎΠ²Π° CONSTANT_Class

c Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π² 22 элСмСнтС

Как ΠΌΡ‹ ΠΏΠΎΠΌΠ½ΠΈΠΌ 1-Ρ‹ΠΉ элСмСнт constant_pool относится ΠΊ этому классу.

7-ΠΎΠΉ элСмСнт:
tag, CONSTANT_Utf8, пСрвая строчка

Она Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ:

CONSTANT_Utf8_info <
u1 tag;
u2 length;
u1 bytes[length];
>

Π’ΠΎΠ³Π΄Π° Π΄Π»ΠΈΠ½Π° нашСй строчки 6 Π±Π°ΠΉΡ‚:

Π­Ρ‚ΠΎ особоС Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Ρ‚Π°ΠΊ ΠΏΠΎΠΌΠ΅Ρ‡Π°ΡŽΡ‚ΡΡ конструкторы.

строчка Π΄Π»ΠΈΠ½Ρ‹ 3 β€” «()V»:

Π­Ρ‚ΠΎ описаниС нашСго конструктора Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» упомянут Π² сСдьмом элСмСнтС.

9-Ρ‹ΠΉ элСмСнт:
CONSTANT_Utf8

10-Ρ‹ΠΉ элСмСнт:
Π‘Ρ‚Ρ€ΠΎΠΊΠ° LineNumberTable

15-Ρ‹ΠΉ элСмСнт
Tag, соотвСтствуСт CONSTANT_NameAndType

Π° Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π°ΠΌ понадобится

CONSTANT_NameAndType_info <
u1 tag;
u2 name_index;
u2 descriptor_index;
>

ΠΈ Ρ‚ΠΎΠ³Π΄Π°:
ссылка Π½Π° 7 элСмСнт

ccΡ‹Π»ΠΊΠ° Π½Π° 8 элСмСнт

Учитывая Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт ссылался Π½Π° это, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π±Ρ‹Π» объявлСн конструктор класса Π±Π΅Π· ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². НазваниС класса, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π½Π°ΠΉΡ‚ΠΈ Π² 22 элСмСнтС.

16-Ρ‹ΠΉ элСмСнт:
Tag, для CONSTANT_Class

c Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π² 23 элСмСнтС

17-Ρ‹ΠΉ элСмСнт:
Tag, CONSTANT_NameAndType, со ссылкой Π½Π° 24 ΠΈ 25 элСмСнт constant_pool

18-Ρ‹ΠΉ элСмСнт:
Π£Ρ€Π° Β«Hello world!Β»

19-Ρ‹ΠΉ элСмСнт:
Tag, для CONSTANT_class c Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π² 25-ΠΎΠΌ элСмСнтС

20-Ρ‹ΠΉ элСмСнт:
Tag CONSTANT_NameAndType cΠΎ ссылкой Π½Π° 27 ΠΈ 28 элСмСнт

25-Ρ‹ΠΉ элСмСнт:
Β«Ljava/io/PrintStream;Β»

26-ΠΎΠΉ элСмСнт:
Β«java/io/PrintStreamΒ»

methods_count Ρƒ нас 2 ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² классС, конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ main:

Method 1 β€” Constructor

Один ΠΈΠ· самых интСрСсных Π°Ρ‚Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² с ΠΊΠΎΠ΄ΠΎΠΌ нашСго ΠΌΠ΅Ρ‚ΠΎΠ΄Π° code[code_length], Ρ€Π°Π·Π±ΠΎΡ€ инструкций ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ большая Ρ‚Π΅ΠΌΠ°:

Аттрибут закончился ΠΈ продолТаСтся описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°

Attribute 1 ΠΊΠΎΠ΄ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° main

ОписаниС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½ΠΎ ΠΈ ΠΈΠ΄Π΅Ρ‚ описаниС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² класса

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ с ΠΏΠΎ-Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹ΠΌ Ρ€Π°Π·Π±ΠΎΡ€ΠΎΠΌ class Ρ„Π°ΠΉΠ»Π°, становится понятно ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

Он автоматичСски Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎΠΆΠ΅ самоС, Ρ‡Ρ‚ΠΎ я выписал Ρ€ΡƒΠΊΠ°ΠΌΠΈ:

А Π²ΠΎΡ‚ здСсь ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π·Π±ΠΎΡ€Π° class Ρ„Π°ΠΉΠ»Π°:

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

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

Как вывСсти hello world Π½Π° java

Как вывСсти hello world Π½Π° java

Как вывСсти hello world Π½Π° 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-выпускников:

Как вывСсти hello world Π½Π° 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 Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *