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

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

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

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚:


111111110656

Π’ΠΈΠΏ float Π½Π΅ смог ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всС Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠ΅ разряды, хотя ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΡ‚ long ΠΊ float ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π±Π΅Π· ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ (wrapper classes). Для Ρ‚ΠΈΠΏΠΎΠ² float ΠΈ double это Float ΠΈ Double. Π­Ρ‚ΠΈ классы содСрТат ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ значСниями. НапримСр, ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· тСкста Π² число.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, класс Math прСдоставляСт большоС количСство ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ Π΄Ρ€ΠΎΠ±Π½Ρ‹ΠΌΠΈ значСниями, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ корня, Π²ΠΎΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Π»ΡŽΠ±ΡƒΡŽ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ, тригономСтричСскиС ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. Π’Π°ΠΊΠΆΠ΅ Π² этом классС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ константы PI ΠΈ основаниС Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠ° E.

Π‘ΡƒΠ»Π΅Π² Ρ‚ΠΈΠΏ

Π‘ΡƒΠ»Π΅Π² Ρ‚ΠΈΠΏ прСдставлСн всСго ΠΎΠ΄Π½ΠΈΠΌ Ρ‚ΠΈΠΏΠΎΠΌ boolean, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ всСго Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… значСния – true ΠΈ false . Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΈΠΌΠ΅Π½Π½ΠΎ этого Ρ‚ΠΈΠΏΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ сравнСния.

Над Π±ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:


* ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

==, !=

логичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

!

&, |, ^

&&, ||

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ с условиСм ?:

ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ со строкой +


ЛогичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ && ΠΈ || ΠΎΠ±ΡΡƒΠΆΠ΄Π°Π»ΠΈΡΡŒ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ. Π’ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ с условиСм ?: ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° boolean. Π’Π°ΠΊΠΆΠ΅ допускаСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΈ Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅Π»ΠΈ Π±ΡƒΠ»Π΅Π² Ρ‚ΠΈΠΏ.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ со строкой ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²Ρƒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Π² тСкст "true" ΠΈΠ»ΠΈ "false" Π² зависимости ΠΎΡ‚ значСния.

Волько Π±ΡƒΠ»Π΅Π²Ρ‹ выраТСния Π΄ΠΎΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ для управлСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠΌ вычислСний, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² качСствС критСрия условного ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° if.

НикакоС число Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ Π±ΡƒΠ»Π΅Π²ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Если прСдполагаСтся, Ρ‡Ρ‚ΠΎ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ эквивалСнтно истинС (ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ языка Π‘), Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ x!=0. БсылочныС Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π² boolean Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ ref!=null.

БсылочныС Ρ‚ΠΈΠΏΡ‹

Π˜Ρ‚Π°ΠΊ, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ссылочного Ρ‚ΠΈΠΏΠ° ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π»ΠΈΠ±ΠΎ null, Π»ΠΈΠ±ΠΎ ссылку, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΡƒΡŽ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ памяти JVM.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ (object) – это экзСмпляр Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ класса, ΠΈΠ»ΠΈ экзСмпляр массива. ΠœΠ°ΡΡΠΈΠ²Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Π»Π΅ΠΊΡ†ΠΈΠΈ. Класс – это описаниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ структуры, ΠΈ Ссли Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ‚Π°ΠΊΠΎΠΉ класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‚ΠΎ описаниС присутствуСт Π² СдинствСнном экзСмплярС. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² этого класса ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ вовсС, Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создано сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ.

ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ всСгда ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ с использованиСм ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова new, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎ слово new ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ строго ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ (ΠΈΠ»ΠΈ вовсС Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ, Ссли происходит ошибка). ПослС ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова указываСтся имя класса, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΡ‹ собираСмся ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° всСгда происходит Ρ‡Π΅Ρ€Π΅Π· Π²Ρ‹Π·ΠΎΠ² ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· конструкторов класса (ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСсколько), поэтому Π² Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ставятся скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… пСрСчислСны значСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΡ‹Ρ… Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ конструктору. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…, ΠΊΠΎΠ³Π΄Π° создавались ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° Point, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ new Point (3,5) ΠΎΠ·Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ конструктору класса Point, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Ρ‚ΠΈΠΏΠ° int. ΠšΡΡ‚Π°Ρ‚ΠΈ, ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ объявлСниС Ρ‚Π°ΠΊΠΎΠ³ΠΎ конструктора Π² ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠΌ объявлСнии класса отсутствовало. ОбъявлСниС классов рассматриваСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… лСкциях, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Point:


class Point {

int x, y;

/**

* ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ 2 Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°,

* ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ поля ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

*/

Point (int newx, int newy) {

x=newx;

y=newy;

}

}


Если конструктор ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π» ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ new Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° созданный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚Ρƒ ссылку ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° Π² ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способом. JVM всСгда занимаСтся подсчСтом Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ссылок Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ обнаруТиваСтся, Ρ‡Ρ‚ΠΎ ссылок большС Π½Π΅Ρ‚, Ρ‚Π°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдназначаСтся для уничтоТСния сборщиком мусора (garbage collector). Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ссылку Π½Π° Ρ‚Π°ΠΊΠΎΠΉ "потСрянный" ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.


Point p=new Point(1,2);

// Π‘ΠΎΠ·Π΄Π°Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ Π½Π° Π½Π΅Π³ΠΎ ссылку

Point p1=p;

// Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΅ΡΡ‚ΡŒ 2 ссылки Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ (1,2)

p=new Point(3,4);

// ΠΎΡΡ‚Π°Π»Π°ΡΡŒ ΠΎΠ΄Π½Π° ссылка Π½Π° Ρ‚ΠΎΡ‡ΠΊΡƒ (1,2)

p1=null;


Бсылок Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-Ρ‚ΠΎΡ‡ΠΊΡƒ (1,2) большС Π½Π΅Ρ‚, доступ ΠΊ Π½Π΅ΠΌΡƒ утСрян ΠΈ ΠΎΠ½ вскорС Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ сборщиком мусора.

Π›ΡŽΠ±ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ пороТдаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова new. ЕдинствСнноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ – экзСмпляры класса String. Записывая любой строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π», ΠΌΡ‹ автоматичСски ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ этого класса. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ +, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ являСтся строка, Ρ‚Π°ΠΊΠΆΠ΅ нСявно ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π±Π΅Π· использования ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова new.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


"abc"+"def"


ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этого выраТСния Π±ΡƒΠ΄Π΅Ρ‚ создано Ρ‚Ρ€ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° класса String. Π”Π²Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‚ΡΡ строковыми Π»ΠΈΡ‚Π΅Ρ€Π°Π»Π°ΠΌΠΈ, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ.

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

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² вСрсии Java 1.1 Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π° тСхнология reflection, которая позволяСт ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ классам, ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΈ полям, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ лишь ΠΈΡ… имя Π² тСкстовом Π²ΠΈΠ΄Π΅. Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π΅Π· ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова new, ΠΎΠ΄Π½Π°ΠΊΠΎ эта тСхнология довольно спСцифична, примСняСтся Π² Ρ€Π΅Π΄ΠΊΠΈΡ… случаях, Π° ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, довольно проста ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Π² Π΄Π°Π½Π½ΠΎΠΌ курсС Π½Π΅ рассматриваСтся. ВсС ΠΆΠ΅ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅Π΅ примСнСния:


Point p = null;

try {

// Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ строкС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ лишь

// тСкстовоС имя класса Point, пороТдаСтся

// ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π΅Π· примСнСния ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ³ΠΎ слова

new p=(Point)Class.forName("Point").newInstance();

} catch (Exception e) { // ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок

System.out.println(e);

}


ΠžΠ±ΡŠΠ΅ΠΊΡ‚ всСгда "ΠΏΠΎΠΌΠ½ΠΈΡ‚", ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ класса ΠΎΠ½ Π±Ρ‹Π» ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½. Π‘ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΊΠ°ΠΊ ΡƒΠΆΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π»ΠΎΡΡŒ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ссылку Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅ΠΌ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Π‘Π½Π°Ρ‡Π°Π»Π° опишСм Π΄Π²Π° класса, Parent ΠΈ Π΅Π³ΠΎ наслСдник Child:


// ОбъявляСм класс Parent

class Parent {


}

// ОбъявляСм класс Child ΠΈ наслСдуСм

// Π΅Π³ΠΎ ΠΎΡ‚ класса Parent

class Child extends Parent {


}


Пока Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ поля ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. Π”Π°Π»Π΅Π΅ объявим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΈ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°:


Parent p = new Child();


Π’Π΅ΠΏΠ΅Ρ€ΡŒ пСрСмСнная Ρ‚ΠΈΠΏΠ° Parent ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ класса Child.

Над ссылочными значСниями ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:


* ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ полям ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

* ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

* ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сравнСния == ΠΈ != (Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π±ΡƒΠ»Π΅Π²ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅)

* ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ привСдСния Ρ‚ΠΈΠΏΠΎΠ²

* ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ с условиСм ?:

* ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½ΠΊΠ°Ρ‚Π΅Π½Π°Ρ†ΠΈΠΈ со строкой +


ΠžΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ полям ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ основной ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ Π½Π°Π΄ ссылочными Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ. ΠžΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΠ΅Ρ‚ΡΡ ΠΎΠ½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ символа . (Ρ‚ΠΎΡ‡ΠΊΠ°). ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π΅Π΅ примСнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠ³ΠΎ класса ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ΅Π» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π‘Π»Π΅Π²Π° указываСтся ссылка Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Π° справа – имя Ρ‚ΠΈΠΏΠ°, Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ провСряСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. НапримСр:


Parent p = new Child();

// провСряСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ p Ρ‚ΠΈΠΏΠ° Parent

// Π½Π° ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ с Ρ‚ΠΈΠΏΠΎΠΌ Child

print(p instanceof Child);


Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ true. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof опираСтся Π½Π΅ Π½Π° Ρ‚ΠΈΠΏ ссылки, Π° Π½Π° свойства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ½Π° ссылаСтся. Но этот ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ истинноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Ρ‚ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π» ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. Π”ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ ΡƒΠΆΠ΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½Ρ‹ΠΌ классам Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½:


// ОбъявляСм Π½ΠΎΠ²Ρ‹ΠΉ класс ΠΈ наслСдуСм

// Π΅Π³ΠΎ ΠΎΡ‚ класса Child

class ChildOfChild extends Child { }


Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π·Π°Π²Π΅Π΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°:


Parent p = new ChildOfChild();

print(p instanceof Child);


Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ строкС ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ пСрСмСнная Ρ‚ΠΈΠΏΠ° Parent, которая инициализируСтся ссылкой Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΎΡ‚ ChildOfChild. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строкС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ссылки Ρ‚ΠΈΠΏΠ° Parent с классом Child, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ задСйствованный ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½ Π½ΠΈ ΠΎΡ‚ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ, Π½ΠΈ ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ класса. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π΅Ρ€Π½Π΅Ρ‚ true, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ класс, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π΅Π½, наслСдуСтся ΠΎΡ‚ Child.

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ класс:


class Child2 extends Parent {


}


И снова объявим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Ρ‚ΠΈΠΏΠ° Parent:


Parent p=new Child();

print(p instanceof Child);

print(p instanceof Child2);

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ p ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ Parent, Π° Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Ρ‚ΠΈΠΏΠ° Child ΠΈΠ»ΠΈ Child2. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ instanceof ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ Π² ситуации: