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

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

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

Для получСния ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ значСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ booleanValue().

Void

Π­Ρ‚ΠΎΡ‚ класс-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…, Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс java.io.Serializable. Он Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ конструктора. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, экзСмпляр этого класса Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½. Он Π½ΡƒΠΆΠ΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для получСния ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Class, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ void. Π­Ρ‚Π° ссылка прСдставлСна статичСской константой TYPE.

ДСлая ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ классам-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ°ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ:


* ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ класс-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΡƒ ;

* всС классы-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ сконструированы ΠΊΠ°ΠΊ с использованиСм ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚Π°ΠΊ ΠΈ с использованиСм String, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Character, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ сконструирован Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ char ;

* классы-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° equals() ;

* ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½Ρ‹ ΠΈΠ· классов-ΠΎΠ±Π΅Ρ€Ρ‚ΠΎΠΊ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° xxxxValue() (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ intValue() );

* классы-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ классами-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π°ΠΌΠΈ, Ρ‚.Π΅. ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π½Π°Π±ΠΎΡ€ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΡ€ΠΈΠΌΠΈΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ;

* классы-ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСизмСняСмыми.


Math

Класс Math состоит ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², производящих Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярныС матСматичСскиС вычислСния, ΠΈ Π΄Π²ΡƒΡ… констант, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… особоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ΅, – это число Пи ΠΈ основаниС Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠ°. Часто этот класс Π΅Ρ‰Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ классом-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ (Utility class). Π’Π°ΠΊ ΠΊΠ°ΠΊ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса статичСскиС, Π½Π΅Ρ‚ нСобходимости ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ экзСмпляр Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса, ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΎΠ½ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ конструктора. НСльзя Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ этого класса, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ объявлСн с ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ final.

Π˜Ρ‚Π°ΠΊ, константы ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:


public static final double Math.PI – Π·Π°Π΄Π°Π΅Ρ‚ число Ο€ ("ΠΏΠΈ");

public static final double Math.E – основаниС Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌΠ°.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 13.2 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса ΠΈ Π΄Π°Π½ΠΎ ΠΈΡ… ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС.

Π’Π°Π±Π»ΠΈΡ†Π° 13.2. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Math ΠΈ ΠΈΡ… ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Имя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ОписаниС

…

abs(… a)

Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (ΠΌΠΎΠ΄ΡƒΠ»ΡŒ) для Ρ‚ΠΈΠΏΠΎΠ² double, float, int, long

double

acos(double a)

арккосинус

double

asin(double a)

арксинус

double

atan(double a)

арктангСнс

double

ceil(double a)

наимСньшСС Ρ†Π΅Π»ΠΎΠ΅ число, большСС a

double

floor(double a)

Ρ†Π΅Π»ΠΎΠ΅ число, мСньшСС a

double

IEEEremainder (double a, double b)

остаток ΠΏΠΎ стандарту IEEE 754 (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассматривался Π² Π»Π΅ΠΊΡ†ΠΈΠΈ 3)

double

sin(double a)

синус (здСсь ΠΈ Π΄Π°Π»Π΅Π΅: Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π² Ρ€Π°Π΄ΠΈΠ°Π½Π°Ρ…)

double

cos(double a)

косинус

double

tan(double a)

тангСнс

double

exp(double a)

e Π² стСпСни a

double

log(double a)

Π½Π°Ρ‚ΡƒΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ Π»ΠΎΠ³Π°Ρ€ΠΈΡ„ΠΌ a

…

max(… a, … b)

большСС ΠΈΠ· Π΄Π²ΡƒΡ… чисСл (для Ρ‚ΠΈΠΏΠΎΠ² double, float, long, int )

…

min(… a, … b)

мСньшСС ΠΈΠ· Π΄Π²ΡƒΡ… чисСл (для Ρ‚ΠΈΠΏΠΎΠ² double, float, long, int )

double

pow(double a, double b)

a Π² стСпСни b

double

random()

случайноС число ΠΎΡ‚ 0.0 Π΄ΠΎ 1.0

double

rint(double a)

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ int, блиТайшСС ΠΊ a

…

round(… a)

Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ long для double ( int для float ), блиТайшСС ΠΊ a

double

sqrt(double a)

ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ числа a

double

toDegrees(double a)

ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· Ρ€Π°Π΄ΠΈΠ°Π½ΠΎΠ² Π² градусы

double

toRadians(double a)

ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ· градусов Π² Ρ€Π°Π΄ΠΈΠ°Π½Ρ‹


Π‘Ρ‚Ρ€ΠΎΠΊΠΈ

String

Π­Ρ‚ΠΎΡ‚ класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Java для прСдставлСния строк. Он ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ свойством нСизмСняСмости. ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ создан экзСмпляр этого класса, Π΅Π³ΠΎ содСрТимоС ΡƒΠΆΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ.

БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ способов ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ String. НаиболСС простой, Ссли содСрТимоС строки извСстно Π½Π° этапС компиляции, – Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ тСкст Π² ΠΊΠ°Π²Ρ‹Ρ‡ΠΊΠ°Ρ…:


String abc = "abc";

МоТно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ конструктора. НаиболСС простой ΠΈΠ· Π½ΠΈΡ… – конструктор, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Π²Ρ…ΠΎΠ΄Π΅ строковый Π»ΠΈΡ‚Π΅Ρ€Π°Π».

String s = new String("immutable");

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, эти Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ создания строк ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ синтаксисом. На самом ΠΆΠ΅ Π΄Π΅Π»Π΅ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ Π΅ΡΡ‚ΡŒ, хотя Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΎΠ½ΠΎ нСсущСствСнно. Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


public class Test {

public Test() {


}

public static void main(String[] args) {

Test t = new Test();

String s1 = "Hello world !!!";

String s2 = "Hello world !!!";

System.out.println("String`s equally = " +

(s1.equals(s2)));

System.out.println(

"Strings are the same = " + (s1==s2));

}

}


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π° консоль Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ:


String`s equally = true

Strings are the same = true

Π’Π΅ΠΏΠ΅Ρ€ΡŒ нСсколько ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌ ΠΊΠΎΠ΄:


public class Test {

public Test() {


}

public static void main(String[] args) {

Test t = new Test();

String s1 = "Hello world !!!";

String s2 = new String("Hello world !!!");

System.out.println("String`s equally = " +

(s1.equals(s2)));

System.out.println(

"Strings are the same = " + (s1==s2));

}

}


Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π½Π° консоль Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π²Π΅Π΄Π΅Π½ΠΎ:


String`s equally = true Strings are the same = false

ΠŸΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ измСнился? Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ созданиС Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° – это ΠΎΠ΄Π½Π° ΠΈΠ· самых Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΡ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ Π² Java. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ компилятор стрСмится ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΈΡ… количСство, Ссли это Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ нСпрСдсказуСмому повСдСнию ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ класс String нСизмСняСмый, ΠΈΡ… значСния всСгда Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ. Π­Ρ‚ΠΎ позволяСт компилятору завСсти ΡΠΊΡ€Ρ‹Ρ‚ΡƒΡŽ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ, которая Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° Π½Π΅Π³ΠΎ ΠΆΠ΅, Π° Π½Π΅ ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ создаСтся лишь ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ String. Для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ это нСсущСствСнная Ρ€Π°Π·Π½ΠΈΡ†Π°. Π˜ΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ дСйствия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ привязаны ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, Π° Π½Π΅ ΠΊ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ. Π­Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ equals, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ wait/notify.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ динамичСскоС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ конструктору. Π’ этом случаС компилятор ΡƒΠΆΠ΅ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ возмоТности Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΈ JVM Π²ΠΎ врСмя исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ создаст Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ с Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π§Ρ‚ΠΎ ΠΌΡ‹ ΠΈ Π²ΠΈΠ΄ΠΈΠΌ ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ выполнСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°.

Π’ Java для строк ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +. ΠŸΡ€ΠΈ использовании этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° производится конкатСнация строк. Π’ классС String Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄:


public String concat(String s);

Он Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-строку, Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ справа строкой s.

Рассмотрим Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

public class Test {

public static void main(String[] args) {

Test t = new Test();

String s = " prefix !";

System.out.println(s);

s = s.trim();

System.out.println(s);

s = s.concat(" suffix");

System.out.println(s);

}

}

prefix !

prefix !

prefix ! suffix

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒΡΡ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ строку (ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ String, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ссылаСтся пСрСмСнная s ), ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. Π’ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ это Π½Π΅ Ρ‚Π°ΠΊ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² trim (отсСчСниС ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ ΠΊΠΎΠ½Ρ†Π΅ строки) ΠΈ concat ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹-строки ΠΈ ссылка s Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-строку. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, мСняСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ссылки, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΆΠ΅ нСизмСняСмы.

Как ΡƒΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Π»ΠΎΡΡŒ, строка состоит ΠΈΠ· Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… Unicode-символов. Однако Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях трСбуСтся Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со строкой ΠΊΠ°ΠΊ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π±Π°ΠΉΡ‚ (Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄, Ρ€Π°Π±ΠΎΡ‚Π° с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.Π΄.). ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ² производится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ:


* byte[] getBytes() – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, принятой ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, зависит ΠΎΡ‚ настроСк ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы);

* byte[] getBytes(String encoding) – Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ encoding.


Для выполнСния ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (прСобразования Π±Π°ΠΉΡ‚ΠΎΠ² Π² строку) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠΎΠ½ΡΡ‚Ρ€ΡƒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-строку с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ²:


* String(byte[] bytes) – создаСт строку ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅, принятой ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ;

* String(byte[] bytes, String enc) – создаСт строку ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ² Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅.


StringBuffer

Π­Ρ‚ΠΎΡ‚ класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для создания ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ строковых Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π² String. Он Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π½Π° основС массива char[], Ρ‡Ρ‚ΠΎ позволяСт, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ String, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ послС создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Рассмотрим Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ конструкторы класса StringBuffer:


* StringBuffer() – создаСт пустой StringBuffer ;

* StringBuffer(String s) – Π±ΡƒΡ„Π΅Ρ€ заполняСтся ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ s ;

* StringBuffer(int capacity) – создаСт экзСмпляр класса StringBuffer с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ (Π΄Π»ΠΈΠ½Π° char[] ). Π—Π°Π΄Π°Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ нСльзя Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строками с большСй Π΄Π»ΠΈΠ½ΠΎΠΉ, Ρ‡Π΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Π² конструкторС. На самом Π΄Π΅Π»Π΅ этим гарантируСтся, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ со строками мСньшСй Π΄Π»ΠΈΠ½Ρ‹ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти Π½Π΅ потрСбуСтся.