Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° JavaΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 17

Автор Н.А. Вязовик

Анализ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€, анализируя ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, сразу раздСляСт Π΅Π΅ Π½Π°:


* ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ (white spaces);

* ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (comments);

* основныС лСксСмы (tokens).


ΠŸΡ€ΠΎΠ±Π΅Π»Ρ‹

ΠŸΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ всС символы, Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° лСксСмы. Π­Ρ‚ΠΎ ΠΊΠ°ΠΊ сам символ ΠΏΡ€ΠΎΠ±Π΅Π»Π° (space, \u0020, дСсятичный ΠΊΠΎΠ΄ 32), Ρ‚Π°ΠΊ ΠΈ Π·Π½Π°ΠΊΠΈ табуляции ΠΈ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° строки. Они ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для раздСлСния лСксСм, Π° Ρ‚Π°ΠΊΠΆΠ΅ для оформлСния ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ Π±Ρ‹Π»ΠΎ Π»Π΅Π³Ρ‡Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ. НапримСр, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (вычислСниС ΠΊΠΎΡ€Π½Π΅ΠΉ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ уравнСния):


double a = 1, b = 1, c = 6;

double D = b b - 4 a c;


if (D >= 0) {

double x1 = (-b + Math.sqrt (D)) / (2 a);

double x2 = (-b - Math.sqrt (D)) / (2 a);

}


ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ Π² Ρ‚Π°ΠΊΠΎΠΌ Π²ΠΈΠ΄Π΅:


double a=1,b=1,c=6;double D=bb-4*a*c;if(D>=0)

{double x1=(-b+Math.sqrt(D))/(2*a);double

x2=(-b-Math.sqrt(D))/(2*a);}


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

Для разбиСния тСкста Π½Π° строки Π² ASCII ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π΄Π²Π° символа - "Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ" ( carriage return, CR, \u000d, дСсятичный ΠΊΠΎΠ΄ 13) ΠΈ символ Π½ΠΎΠ²ΠΎΠΉ строки ( linefeed, LF, \u000a, дСсятичный ΠΊΠΎΠ΄ 10). Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ особСнностСй ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π² Java примСняСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ΠΌ строки считаСтся:


* ASCII -символ LF, символ Π½ΠΎΠ²ΠΎΠΉ строки;

* ASCII -символ CR, "Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ";

* символ CR, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ сразу ΠΆΠ΅ слСдуСт символ LF.

Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π½Π° строки Π²Π°ΠΆΠ½ΠΎ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ разбиСния Π½Π° лСксСмы (ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ, Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ строки Ρ‚Π°ΠΊΠΆΠ΅ слуТит Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ лСксСмами), для ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ со строковыми коммСнтариями (см. ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π΅ΠΌΡƒ "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ"), Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΡ‚Π»Π°Π΄ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (ΠΏΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ошибок компиляции ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ исполнСния указываСтся, Π½Π° ΠΊΠ°ΠΊΠΎΠΉ строкС исходного ΠΊΠΎΠ΄Π° ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ). Π˜Ρ‚Π°ΠΊ, ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ Π² Java ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ:


* ASCII -символ SP, space, ΠΏΡ€ΠΎΠ±Π΅Π», \u0020, дСсятичный ΠΊΠΎΠ΄ 32;

* ASCII -символ HT, horizontal tab, символ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ табуляции, \u0009, дСсятичный ΠΊΠΎΠ΄ 9;

* ASCII -символ FF, form feed, символ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° страницы (Π±Ρ‹Π» Π²Π²Π΅Π΄Π΅Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€ΠΎΠΌ), \u000c, дСсятичный ΠΊΠΎΠ΄ 12;

* Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ строки.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²Π²ΠΎΠ΄Π° пояснСний ΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’ Java ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚ Π΄Π²ΡƒΡ… Π²ΠΈΠ΄ΠΎΠ²:


* строчныС

* Π±Π»ΠΎΡ‡Π½Ρ‹Π΅

Π‘Ρ‚Ρ€ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с ASCII -символов // ΠΈ длятся Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΎΠ½ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для пояснСния ΠΈΠΌΠ΅Π½Π½ΠΎ этой строки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


int y=1970;

// Π³ΠΎΠ΄ роТдСния


Π‘Π»ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ΡΡ ΠΌΠ΅ΠΆΠ΄Ρƒ ASCII -символами /* ΠΈ */ , ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ количСство строк, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


/*

Π­Ρ‚ΠΎΡ‚ Ρ†ΠΈΠΊΠ» Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с нуля

ΠΈΠ·-Π·Π° особСнностСй Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

*/

for (int i=1; i<10; i++) {

...

}


Часто Π±Π»ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΎΡ„ΠΎΡ€ΠΌΠ»ΡΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (каТдая строка начинаСтся с *):


/*

* ОписаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹

* ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π° while

*/

while (x > 0) {

...

}


Π‘Π»ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строках, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°ΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² сСрСдинС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°:


float s = 2Math.PI/*getRadius()*/;

// Π—Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π±Π»ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅Ρ‚ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Math.PI прСдоставляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ константы PI, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π² классС Math. Π’Ρ‹Π·ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getRadius() Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΈ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½, пСрСмСнная s всСгда Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 2 PI. Π—Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ строку строчный ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

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


// Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ тСкст /*…*/ станСт просто

// Ρ‡Π°ΡΡ‚ΡŒΡŽ строки s

String s = "text/*just text*/";

/*

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ строка станСт ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ошибки

ΠΏΡ€ΠΈ компиляции, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ€Π°Π·Π±ΠΈΠ»

имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getRadius()

*/

circle.get/ comment*/Radius();


А Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄ допустим:


// ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ:

circle./*comment*/getRadius();

// ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹:

int/*comment*/x=1;


Π’ послСднСй строкС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… int ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π» ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ /*, */ , // Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ особСнного значСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², ΠΊΠ°ΠΊ строчных, Ρ‚Π°ΠΊ ΠΈ Π±Π»ΠΎΡ‡Π½Ρ‹Ρ…. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅


/ Π½Π°Ρ‡Π°Π»ΠΎ коммСнтария /* // /** Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅: */


описан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Π±Π»ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ. А Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ (строки ΠΊΠΎΠ΄Π° ΠΏΡ€ΠΎΠ½ΡƒΠΌΠ΅Ρ€ΠΎΠ²Π°Π½Ρ‹ для удобства)


1. /*

2. comment

3. /*

4. more comments

5. */

6. finish

7. */


компилятор выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π‘Π»ΠΎΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ начался Π² строкС 1 с ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ символов /*. Вторая ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π°Ρ комбинация /* Π½Π° строкС 3 Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Π½Π°, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ находится ΡƒΠΆΠ΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ коммСнтария. Π‘ΠΈΠΌΠ²ΠΎΠ»Ρ‹ / Π² строкС 5 Π·Π°Π²Π΅Ρ€ΡˆΠ°Ρ‚ Π΅Π³ΠΎ, Π° строка 7 ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ – ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π±Ρ‹Π» Π½Π°Ρ‡Π°Ρ‚.

Π›ΡŽΠ±Ρ‹Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΎ врСмя компиляции, поэтому ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ, Π½Π΅ опасаясь, Ρ‡Ρ‚ΠΎ это повлияСт Π½Π° Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. ОсновноС ΠΈΡ… ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ - ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ простой для понимания, Π² Ρ‚ΠΎΠΌ числС ΠΈ для Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ придСтся Π² Π½Π΅ΠΉ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅. Π’Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ частСй ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


int x = 2;

int y = 0;

/* if (x > 0)

y = y + x*2;

else

y = -y - x*4; */

y = y y;// + 2*x;


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ if-else ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ слоТСния +2*x.

Как ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΎΡΡŒ Π²Ρ‹ΡˆΠ΅, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ символами Unicode, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π° любом языкС, ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ.

ΠšΡ€ΠΎΠΌΠ΅ этого, сущСствуСт особый Π²ΠΈΠ΄ Π±Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ коммСнтария – ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°. Он примСняСтся для автоматичСского создания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π°. Π’ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ поставку JDK, начиная с вСрсии 1.0, Π²Ρ…ΠΎΠ΄ΠΈΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° javadoc. На Π²Ρ…ΠΎΠ΄ Π΅ΠΉ подаСтся исходный ΠΊΠΎΠ΄ классов, Π° Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ получаСтся удобная докумСнтация Π² HTML-Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, которая описываСт всС классы, всС ΠΈΡ… поля ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. ΠŸΡ€ΠΈ этом Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ гипСрссылки, Ρ‡Ρ‚ΠΎ сущСствСнно ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, читая описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ наТатия ΠΌΡ‹ΡˆΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° описаниС Ρ‚ΠΈΠΏΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈΠ»ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ³ΠΎ значСния). Однако понятно, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ названия ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ пСрСчислСния Π΅Π³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² нСдостаточно для понимания Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. НСобходимы Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ пояснСния ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° записываСтся Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π±Π»ΠΎΡ‡Π½Ρ‹ΠΉ. ЕдинствСнноС Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π² Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ символов – для Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с /**. НапримСр:


/**

* ВычислСниС модуля Ρ†Π΅Π»ΠΎΠ³ΠΎ числа.

* Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚

* Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° x.

*/

int getAbs(int x) {

if (x>=0)

return x;

else

return -x;

}


ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅ всСго коммСнтария. Π’ дальнСйшСм ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ использовано ΠΊΠ°ΠΊ пояснСниС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² спискС всСх ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² класса (Π½ΠΈΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ описаны всС конструкции языка, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… примСняСтся ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ создаСтся HTML-докумСнтация, Ρ‚ΠΎ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ HTML. ДопускаСтся ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π³ΠΎΠ², Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ <b> ΠΈ

. Однако Ρ‚Π΅Π³ΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² с <h1> ΠΏΠΎ <h6> ΠΈ <hr> ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСльзя, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ javadoc для создания структуры Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π‘ΠΈΠΌΠ²ΠΎΠ» Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строки ΠΈ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π΅ΠΌΡƒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ ΠΈ Π·Π½Π°ΠΊΠΈ табуляции ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ. Π˜Ρ… ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅, Π½ΠΎ ΠΎΠ½ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, скаТСм, Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠ΄Π°.

/**

* ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ - ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅

* описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

*

* Π’Π°ΠΊ оформляСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

* <blockquote>

* <pre>

* if (condition==true) {

* x = getWidth();

* y = x.getHeight();

* }

* </pre></blockquote>

* А Ρ‚Π°ΠΊ описываСтся HTML-список:

* <ul>

* <li>МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚

* <i>курсив</i>,

* <li>ΠΈΠ»ΠΈ ΠΆΠΈΡ€Π½Ρ‹ΠΉ <b>ΠΆΠΈΡ€Π½Ρ‹ΠΉ</b>.

* </ul>

*/

public void calculate (int x, int y) {

...

}


Из этого коммСнтария Π±ΡƒΠ΄Π΅Ρ‚ сгСнСрирован HTML-ΠΊΠΎΠ΄, выглядящий ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:


ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ – ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

Π’Π°ΠΊ оформляСтся ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:

if (condition==true) {

x = getWidth();

y = x.getHeight();

}

А Ρ‚Π°ΠΊ описываСтся HTML-список:

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΊΠ»ΠΎΠ½Π½Ρ‹ΠΉ ΡˆΡ€ΠΈΡ„Ρ‚ курсив,

ΠΈΠ»ΠΈ ΠΆΠΈΡ€Π½Ρ‹ΠΉ ΠΆΠΈΡ€Π½Ρ‹ΠΉ.


НаконСц, javadoc ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚Π΅Π³ΠΈ. Они Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с символа @. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ описаниС этих Ρ‚Π΅Π³ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. НапримСр, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Π³ @see, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΡΠ»Π°Ρ‚ΡŒΡΡ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс, ΠΏΠΎΠ»Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ Internet-сайт.