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

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

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

Π’ Java Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ°, упомянутыС Π²Ρ‹ΡˆΠ΅, – float ΠΈ double. Π˜Ρ… Π΄Π»ΠΈΠ½Π° – 4 ΠΈ 8 Π±Π°ΠΉΡ‚ ΠΈΠ»ΠΈ 32 ΠΈ 64 Π±ΠΈΡ‚Π°, соотвСтствСнно. Π”Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ float, Ссли ΠΎΠ½ заканчиваСтся Π½Π° Π»Π°Ρ‚ΠΈΠ½ΡΠΊΡƒΡŽ Π±ΡƒΠΊΠ²Ρƒ F Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ рСгистрС. Π’ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½ рассматриваСтся ΠΊΠ°ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° double ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅ D ΠΈΠ»ΠΈ d, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Ρ‚ΠΈΠΏΠ° double (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для наглядности).


// float-Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹:

1f, 3.14F, 0f, 1e+5F

// double-Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹:

0., 3.14d, 1e-4, 31.34E45D


Π’ Java Π΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ числа 32-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° float ΠΈ 64-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° double хранятся Π² памяти Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, стандартизированном спСцификациСй IEEE 754 (ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ – IEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Standard 754-1985 (IEEE, New York)). Π’ этой спСцификации описаны Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ Π΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Π½ΠΎ ΠΈ Π΅Ρ‰Π΅ нСсколько особых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:


* ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ бСсконСчности (positive/negative infinity);

* Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ "Π½Π΅ число", Not-a-Number, сокращСнно NaN;

* ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π½ΡƒΠ»ΠΈ.


Для этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π½Π΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π»ΠΈΠ±ΠΎ произвСсти Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ дСлСния ноль Π½Π° ноль 0.0/0.0 являСтся NaN ), Π»ΠΈΠ±ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ константам Π² классах Float ΠΈ Double, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ POSITIVE_INFINITY, NEGATIVE_INFINITY ΠΈ NaN. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с этими особСнными значСниями рассматриваСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ ограничСния Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΊΠ°ΠΊ ΠΈ для цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ². МаксимальноС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Ρ€ΠΎΠ±Π½ΠΎΠ³ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°:


* для float: 3.40282347e+38f

* для double: 1.79769313486231570e+308


ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для Π΄Ρ€ΠΎΠ±Π½Ρ‹Ρ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ становится Π²Π°ΠΆΠ½Ρ‹ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ – минимальноС ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅:


* для float: 1.40239846e-45f

* для double: 4.94065645841246544e-324


ΠŸΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π»ΠΈΡ‚Π΅Ρ€Π°Π» со слишком большим Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1e40F ) ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС компиляции. Вакая Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒΡΡ Π±Π΅ΡΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΡΡ‚ΡŒΡŽ. Аналогично, ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π° со слишком ΠΌΠ°Π»Ρ‹ΠΌ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1e-350 ) Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ошибкС. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΎ Π΄ΠΎ нуля. Однако Ссли ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π½Π΅ ΠΊ Π½ΡƒΠ»ΡŽ, Ρ‚ΠΎ компилятор ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Ρ‚ Π΅Π³ΠΎ сам:


// ошибка, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΊΡ€ΡƒΠ³Π»Π΅Π½ΠΎ Π΄ΠΎ 0

0.00000000000000000000000000000000000000000001f

// ошибки Π½Π΅Ρ‚, компилятор сам округляСт Π΄ΠΎ 1

1.00000000000000000000000000000000000000000001f


Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½Ρ‹Ρ… возмоТностСй Π²Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ значСния Π½Π΅ Π² дСсятичной систСмС Π² Java Π½Π΅Ρ‚, ΠΎΠ΄Π½Π°ΠΊΠΎ классы Float ΠΈ Double ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², Π² Ρ‚ΠΎΠΌ числС ΠΈ для Ρ‚Π°ΠΊΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

ЛогичСскиС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹

ЛогичСскиС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… значСния – true ΠΈ false. Π­Ρ‚ΠΈ Π΄Π²Π° Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… слова Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ, Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π°.

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹

Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ символ ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° Unicode, Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ, ΠΈΠ»ΠΈ апострофы ( ASCII -символ single quote, \u0027 ). НапримСр:


'a' // латинская Π±ΡƒΠΊΠ²Π° Π°

' ' // ΠΏΡ€ΠΎΠ±Π΅Π»

'K' // грСчСская Π±ΡƒΠΊΠ²Π° ΠΊΠ°ΠΏΠΏΠ°


Π’Π°ΠΊΠΆΠ΅ допускаСтся ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ запись для описания символа Ρ‡Π΅Ρ€Π΅Π· Π΅Π³ΠΎ ΠΊΠΎΠ΄ (см. Ρ‚Π΅ΠΌΡƒ "ΠšΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°"). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹:


'\u0041' // латинская Π±ΡƒΠΊΠ²Π° A

'\u0410' // русская Π±ΡƒΠΊΠ²Π° А

'\u0391' // грСчСская Π±ΡƒΠΊΠ²Π° A


Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ строго ΠΎΠ΄ΠΈΠ½ символ, ΠΈΠ»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΡƒΡŽΡΡ с \. Для записи ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов (Π½Π΅ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹Ρ… ΠΈ слуТСбных, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ", ', \ ) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ обозначСния:


\b \u0008 backspace BS – Π·Π°Π±ΠΎΠΉ

\t \u0009 horizontal tab HT – табуляция

\n \u000a linefeed LF – ΠΊΠΎΠ½Π΅Ρ† строки

\f \u000c form feed FF – ΠΊΠΎΠ½Π΅Ρ† страницы

\r \u000d carriage return CR – Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ

\" \u0022 double quote " – двойная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°

\' \u0027 single quote ' – одинарная ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°

\\ \u005c backslash \ – обратная косая Ρ‡Π΅Ρ€Ρ‚Π°

\ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΎΡ‚ \u0000 Π΄ΠΎ \u00ff символа Π² ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.


ΠŸΠ΅Ρ€Π²Π°Ρ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° описываСт стандартныС обозначСния ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… символов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Java-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…. Вторая ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° прСдставляСт ΠΈΡ… Π² стандартном Π²ΠΈΠ΄Π΅ Unicode -символов. Π’Ρ€Π΅Ρ‚ΡŒΡ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ° содСрТит английскиС ΠΈ русскиС описания. ИспользованиС \ Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ символами ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ ошибкС компиляции.

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²Π²ΠΎΠ΄Π° символов Ρ‡Π΅Ρ€Π΅Π· Π²ΠΎΡΡŒΠΌΠ΅Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ обСспСчиваСтся для совмСстимости с Π‘. НапримСр:


'\101' // Π­ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½ΠΎ '\u0041'


Однако Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ лишь символы ΠΎΡ‚ \u0000 Π΄ΠΎ \u00ff (Ρ‚.Π΅. с ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ‚ 0 Π΄ΠΎ 255), поэтому Unicode -ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ.

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Unicode -ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ( \uhhhh ) производится Ρ€Π°Π½ΡŒΡˆΠ΅ лСксичСского Π°Π½Π°Π»ΠΈΠ·Π°, Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ являСтся ошибкой:


'\u000a' // символ ΠΊΠΎΠ½Ρ†Π° строки


ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ сначала ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ \u000a Π² символ ΠΊΠΎΠ½Ρ†Π° строки ΠΈ ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠΈ окаТутся Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… строках ΠΊΠΎΠ΄Π°, Ρ‡Ρ‚ΠΎ являСтся ошибкой. НСобходимо ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:


'\n' // ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π° строки


Аналогично ΠΈ для символа \u000d (Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ \r.

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² составС ΠΊΠ°ΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Ρ…, Ρ‚Π°ΠΊ ΠΈ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ².

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹

Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ состоят ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° символов ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…. Π”Π»ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠ»Π΅Π²ΠΎΠΉ ΠΈΠ»ΠΈ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ большой. Π›ΡŽΠ±ΠΎΠΉ символ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ прСдставлСн ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰Π΅ΠΉΡΡ с \ (см. "Π‘ΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ ").


"" // Π»ΠΈΡ‚Π΅Ρ€Π°Π» Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹

"\"" //Π»ΠΈΡ‚Π΅Ρ€Π°Π», состоящий ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа "

"ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ тСкст" //Π»ΠΈΡ‚Π΅Ρ€Π°Π» Π΄Π»ΠΈΠ½Ρ‹ 13


Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π» нСльзя Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ Π½Π° нСсколько строк Π² ΠΊΠΎΠ΄Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если трСбуСтся тСкстовоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, состоящСС ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… строк, Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ символами \n ΠΈ/ΠΈΠ»ΠΈ \r. Если ΠΆΠ΅ тСкст просто слишком Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ строкС ΠΊΠΎΠ΄Π°, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ строк +. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²:


// Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅-константа, составлСнноС ΠΈΠ· Π΄Π²ΡƒΡ…

// Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ²

"Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ тСкст " +

"с пСрСносом"

/*

* Π‘Ρ‚Ρ€ΠΎΠΊΠΎΠ²Ρ‹ΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Π», содСрТащий тСкст

* ΠΈΠ· Π΄Π²ΡƒΡ… строк:

* Hello, world!

* Hello!

*/

"Hello, world!\r\nHello!"


На строковыС Π»ΠΈΡ‚Π΅Ρ€Π°Π»Ρ‹ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Ρ‚Π΅ ΠΆΠ΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π² ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΈ использования символов Π½ΠΎΠ²ΠΎΠΉ строки \u000a ΠΈ \u000d.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π» являСтся экзСмпляром класса String. Π­Ρ‚ΠΎ опрСдСляСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ свойства строковых Π»ΠΈΡ‚Π΅Ρ€Π°Π»ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

Null-Π»ΠΈΡ‚Π΅Ρ€Π°Π»

Null- Π»ΠΈΡ‚Π΅Ρ€Π°Π» ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ всСго ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅: null. Π­Ρ‚ΠΎ Π»ΠΈΡ‚Π΅Ρ€Π°Π» ссылочного Ρ‚ΠΈΠΏΠ°, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ эта ссылка Π½ΠΈΠΊΡƒΠ΄Π° Π½Π΅ ссылаСтся, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ отсутствуСт. РазумССтся, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊ ссылкам любого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ…. Π’ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ.

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ

Π Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΠΈ – это ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ символы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² слуТСбных цСлях языка. НазначСниС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ рассмотрСно ΠΏΠΎ Ρ…ΠΎΠ΄Ρƒ излоТСния курса. Π’ΠΎΡ‚ ΠΈΡ… ΠΏΠΎΠ»Π½Ρ‹ΠΉ список:


( ) [ ] { } ; . ,

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… опСрациях – арифмСтичСских, логичСских, Π±ΠΈΡ‚ΠΎΠ²Ρ‹Ρ…, опСрациях сравнСния ΠΈ присваивания. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ 37 лСксСм (всС состоят Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ASCII -символов) ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ языка Java:


= > < ! ? :

== <= >= != && || ++ --

+ - / & | ^ % << >> >>>

+= -= = = &= |= ^= %= <<= >>= >>>=


Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΈΠ· Π½ΠΈΡ… Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстны ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… языков программирования, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² Java всС ΠΆΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, поэтому Π² ΠΊΠΎΠ½Ρ†Π΅ Π»Π΅ΠΊΡ†ΠΈΠΈ приводятся ΠΊΡ€Π°Ρ‚ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ Π½ΠΈΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ (Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΎΠ΅ Hello, world!), Π° Π·Π°Ρ‚Π΅ΠΌ классифицируСм ΠΈ подсчитаСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ лСксСмы:


public class Demo {

/**

* Основной ΠΌΠ΅Ρ‚ΠΎΠ΄, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ начинаСтся

* Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ любой Java ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

*/

public static void main (String args[])

{

System.out.println("Hello, world!");

}

}


Π˜Ρ‚Π°ΠΊ, Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, 7 ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ², 5 ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов, 1 строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π», 13 Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ ΠΈ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°. Π­Ρ‚ΠΎΡ‚ тСкст ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ Demo.java, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚, ΠΊΠ°ΠΊ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ:


Hello, world!


Π”ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π Π°Π±ΠΎΡ‚Π° с ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ

Рассмотрим Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈ использования ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Π² Java. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄ΡƒΡ‚ описаны подробности, относящиСся ΠΊ Ρ€Π°Π±ΠΎΡ‚Π΅ самих ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ². Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ особСнности, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ использовании Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ 1/2 Ρ€Π°Π²Π½ΠΎ 0, Π° 1/2. Ρ€Π°Π²Π½ΠΎ 0.5 ).

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания ΠΈ сравнСния

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присваивания = ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ сравнСния ==.


x = 1;

// присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1

x == 1 // сравниваСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ x с

// Π΅Π΄ΠΈΠ½ΠΈΡ†Π΅ΠΉ