Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ°ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² Java ΠΊΠ°ΠΊ Π°Π²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°/ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°. ΠΠ²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ
ΡΠΈΠΏΠΎΠ² Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠ΅ ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
ΠΡΠΎΡ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ ΠΏΡΠ΅ΡΠ»ΠΎΠ²ΡΡΡΠΉ Β«Π±Π°ΠΉΡΠΊΠΎΠ΄Β». ΠΠΎ Π²Π°ΠΆΠ½ΠΎ Π½Π°ΠΌ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΎ, ΡΡΠΎ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ. Π‘Π½Π°ΡΠ°Π»Π° Π² ΡΡΡΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ² 8080, Π° Π΄Π°Π»ΡΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Integer.valueOf. ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΡΠ° Β«ΠΌΠ°Π³ΠΈΡΒ» boxing.
Π Π²Π½ΡΡΡΠΈ ΠΌΠ°Π³ΠΈΡ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π²ΠΎΡ ΡΠ°ΠΊ:
Π’ΠΎ Π΅ΡΡΡ ΠΏΠΎ ΡΡΡΠΈ Π±ΡΠ΄Π΅Ρ Π²Π·ΡΡ Π½ΠΎΠ²ΡΠΉ
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ. ΠΡΡ Π² ΡΠ°ΠΌΠΊΠ°Ρ
Java. ΠΡΠΎΡΡΠΎ ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Β«ΡΠ°ΠΌΠΎΒ». ΠΠ»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°.
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°?
ΠΠ²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Java Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
ΡΡΠ»ΠΎΠ²ΠΈΡΡ
:
ΠΠ·ΠΌΠ΅Π½Π΅Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ "Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°", Π½ΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ NullPointerException.
ΠΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅
Π―Π·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΈ ΡΠ·ΡΠΊ Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π³ΠΎΠ²ΠΎΡΡΡ Π»ΡΠ΄ΠΈ, ΠΆΠΈΠ²ΡΡ ΠΈ ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π² Π½ΡΠΌ ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ²Π»Π΅Π½ΠΈΡ, ΡΡΠΎΠ±Ρ ΡΠ·ΡΠΊΠΎΠΌ Π±ΡΠ»ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠ΄ΠΎΠ±Π½Π΅Π΅. Π ΠΊΠ°ΠΊ ΠΌΡ Π·Π½Π°Π΅ΠΌ ΡΠ·ΡΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΡΡΠ°ΠΆΠ°ΡΡ Π½Π°ΡΠΈ ΠΌΡΡΠ»ΠΈ. Π Π²Π΅ΡΡΠΈΡΡ Π½ΠΈΠΆΠ΅ JDK 1.5 Π±ΡΠ»ΠΎ Π½Π΅ Π»Π΅Π³ΠΊΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊint, char, float, double Π² ΠΈΡ
ΠΊΠ»Π°ΡΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Integer, Character, Float, Double.
ΠΡΠ°ΠΊ, Π² Java SE 5 Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ/ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ (boxing/unboxing). Π ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΡΡΠ»Π΅ΠΉ ΠΏΠΎΡΠ²ΡΡΡΠ½ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ tutorial ΠΎΡ Oracle: Autoboxing and Unboxing.ΠΠ²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Autoboxing
ΠΠ°Π²Π°ΠΉΡΠ΅, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π°Π²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ Boxing. Π‘Π½Π°ΡΠ°Π»Π°, ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΡΠΎΠΌ compilejava.net ΠΈ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ»Π°ΡΡ:public class App {
public static void main(String[] args) {
Integer portNumber = 8080;
if (args.length != 0) {
portNumber = Integer.valueOf(args[0]);
}
System.out.println("Port number is: " + portNumber);
}
}
ΠΡΠΎΡΡΠ΅Π½ΡΠΊΠΈΠΉ ΠΊΠΎΠ΄. ΠΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ Π²Ρ
ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ°.
ΠΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, Ρ.ΠΊ. ΠΌΡ ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ° ΠΈΠ· String ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Integer ΠΏΡΡΡΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ ΡΠ΅ΡΠ΅Π· Integer.valueOf. ΠΠΎΡΡΠΎΠΌΡ, ΠΌΡ Π²ΡΠ½ΡΠΆΠ΄Π΅Π½Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π΅Π³ΠΎ Π½Π΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΌ ΡΠΈΠΏΠΎΠΌ, Π° ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΠΉ ΡΠΈΠΏ Integer.
Π ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Ρ Π½Π°Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½Π°Ρ, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β ΠΏΡΠΈΠΌΠΈΡΠΈΠ². Π ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠΎ ΠΌΡ Π²Π΅Π΄Ρ Π½Π΅ Π²Π΅ΡΠΈΠΌ Π² ΠΌΠ°Π³ΠΈΡ?
ΠΠ°Π²Π°ΠΉΡΠ΅ Π·Π°Π³Π»ΡΠ½Π΅ΠΌ Β«ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΒ», ΡΡΠΎ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ.
Π‘ΠΊΠ°ΡΠ°Π΅ΠΌ Ρ compilejava.net ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, Π½Π°ΠΆΠ°Π² Β«Download ZIPΒ». ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΈΠ·Π²Π»Π΅ΡΡΠΌ ΡΠΊΠ°ΡΠ°Π½Π½ΡΠΉ Π°ΡΡ
ΠΈΠ² Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΠ΄ΡΠΌ Π² Π½Π΅Π³ΠΎ.
Π’Π΅ΠΏΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌ: javap -c -p App.class Π³Π΄Π΅ App.class - ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ class ΡΠ°ΠΉΠ» Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
ΠΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π²ΡΠΎΠ΄Π΅ ΡΠ°ΠΊΠΎΠ³ΠΎ:

Integer ΠΈΠ»ΠΈ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ Integer ΠΈΠ· ΠΊΡΡΠ° (ΠΊΡΡ Π½ΠΈΡΡΠΎ ΠΈΠ½ΠΎΠ΅ ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· Integer) Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΡΠ»Π°.
ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Integer Π½Π΅ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠ°ΠΊ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ. ΠΡΡΡ ΡΠ΅Π»ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠΎΡΠ½ΠΎΡΡΡΠΈΡ
ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΈ ΠΈΡ
ΠΎΠ±ΡΡΡΠΎΠΊ (ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ Π² ΠΌΠΈΡΠ΅ ΠΠΠ). ΠΠ°Π½Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½ Π² ΡΠ°ΠΌΠΎΠΌ Π½ΠΈΠ·Ρ Tutorial ΠΎΡ Oracle: Β«Autoboxing and UnboxingΒ».
Π‘ΡΠΎΠΈΡ ΡΡΠ°Π·Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈΠ· ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π½Π΅ ΠΈΠΌΠ΅ΡΡ Β«ΠΎΠ±ΡΡΡΠΊΠΈΒ» Π±Π΅Π· ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊΠΈΡ
-Π»ΠΈΠ±ΠΎ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. Π’.Π΅. Arrays.asList Π½Π΅ ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΈΠ· int[] Π΄Π»Ρ Π½Π°Ρ List ΠΈΠ· IntegerβΠΎΠ².Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Unboxing
ΠΠ±ΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΊ boxing Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ unboxing ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ:public class App {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("Please, enter params");
return;
}
int value = Math.abs(Integer.valueOf(args[0]));
System.out.println("Absolute value is: " + value);
}
}
Math.abs ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ. Π§ΡΠΎ ΠΆΠ΅ Π΄Π΅Π»Π°ΡΡ? Π£ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΡΡΡΠΊΠΈ Π΅ΡΡΡ Π½Π° ΡΡΠΎΡ ΡΠ»ΡΡΠ°ΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ Integer ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ intValue.
ΠΡΠ»ΠΈ ΠΌΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π² Π±Π°ΠΉΡΠΊΠΎΠ΄, ΡΠΎ ΡΠ°ΠΊ ΠΈ Π΅ΡΡΡ:

- ΠΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ°-ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ.
- ΠΠΎΠ³Π΄Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ.
- ΠΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΈΠΏ.
- ΠΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°.
Boxing/Unboxing Π² ΡΠΈΠΊΠ»Π΅
ΠΡΠ°ΠΊ, ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ Ρ Π½Π°Ρ Π΅ΡΡΡ Π·Π°Π΄Π°ΡΠ° ΠΏΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠΈ ΠΎΡ 0 Π΄ΠΎ 1 000 000 000 Ρ ΡΠ°Π³ΠΎΠΌ 1. Π‘Π»ΡΡΠ°ΠΉ 1 ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, ΡΡΠΎ ΠΌΡ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΡΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:public class Test {
public static void main(String[] args) {
Long result = 0L;
for (int i = 0; i < 1_000_000_000; i++) {
result += i;
}
System.out.println("Result:" + result);
}
}
ΠΡΠ΄Π΅Ρ Π»ΠΈ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ? ΠΠ°, Π½ΠΎ Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΠΎΠ½ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ? Π Π°Π·Π±Π΅ΡΡΠΌΡΡ.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π±Π°ΠΉΡ-ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ (Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΊ: javap βc Test.class).
ΠΠΎΡ Π² ΡΠ°ΠΊΡΡ ΡΠΆΠ°ΡΠ°ΡΡΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΈΠ»ΡΡ Π½Π°Ρ ΡΠΈΠΊΠ» for:
10: if_icmpge 30
13: aload_1
14: invokevirtual #4 // Method java/lang/Long.longValue:()J
17: iload_2
18: i2l
19: ladd
20: invokestatic #2 // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
23: astore_1
24: iinc 2, 1
27: goto 7
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎ ΠΏΠΎΡΡΠ΄ΠΊΡ:
- 13 β ΠΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Long result Π² ΡΡΠ΅ΠΊ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ²
- 14 β Π Π°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ Long Π² ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ long
- 17 β ΠΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² ΡΡΠ΅ΠΊ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ int i
- 18 β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ Π΅Ρ ΠΊ ΡΠΈΠΏΡ long
- 19 β ΡΠ΅ΠΏΠ΅ΡΡ ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ long result ΠΈ long i
- 20 β Π·Π°ΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ Long
- 23 β ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ.
public class Test {
public static void main(String[] args) {
long result = 0;
for (int i = 0; i < 1_000_000_000; i++) {
result += i;
}
System.out.println("Result:" + result);
}
}
ΠΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΎΡΡ. ΠΠ°ΠΉΡ-ΠΊΠΎΠ΄Π° ΡΡΠ°Π»ΠΎ ΠΌΠ΅Π½ΡΡΠ΅.
7: if_icmpge 21
10: lload_1
11: iload_3
12: i2l
13: ladd
14: lstore_1
15: iinc 3, 1
18: goto 4 - 10 β ΠΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² ΡΡΠ΅ΠΊ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² Π½Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ result
- 11 β ΠΠΎΠΌΠ΅ΡΠ°Π΅ΠΌ Π² ΡΡΠ΅ΠΊ ΠΎΠΏΠ΅ΡΠ°Π½Π΄ΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ int i
- 12 β ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΠΌ int i Π² long i
- 13 β ΡΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌ long result ΠΈ long i
- 14 β ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
- Π‘Π»ΡΡΠ°ΠΉ 1 β Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ 5100 ΠΌΡ
- Π‘Π»ΡΡΠ°ΠΉ 2 β Π² ΡΡΠ΅Π΄Π½Π΅ΠΌ 535 ΠΌΡ
ΠΡΠ°Π±Π»ΠΈ (ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ ΠΠ²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ)
ΠΡΠ±ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΡΠΈ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π³ΡΠΎΠ·Π½ΡΠΌ ΠΎΡΡΠΆΠΈΠ΅ΠΌ ΠΏΡΠΎΡΠΈΠ² ΡΠ°ΠΌΠΎΠ³ΠΎ ΡΠ΅Π±Ρ. Π ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π°Π²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° boxing/unboxing Π² Java Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅. ΠΠ΅ΡΠ²ΠΎΠ΅, ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎΠ΅, ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π·==. ΠΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΡΠΌ Π΅ΡΡ ΡΠ°Π·:
public static void main(String[] args) {
Integer inCacheValue = 127;
Integer inCacheValue2 = 127;
Integer notInCache = 128; // new Integer(129)
Integer notInCache2 = 128; // new Integer(129)
System.out.println(inCacheValue == inCacheValue2); //true
System.out.println(notInCache == notInCache2); //false
}
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π±Π΅ΡΡΡΡΡ ΠΈΠ· ΠΊΡΡΠ° Integer Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (ΡΠΌ. ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ Boxing Π²ΡΡΠ΅), Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΠΎ ΡΡΡ ΡΡΠΎΠΈΡ ΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡΡΡ. ΠΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π΅ΡΡ
Π½Π΅ΠΉ Π³ΡΠ°Π½ΠΈΡΡ ΠΊΡΡΠ° (java.lang.Integer.IntegerCache.high). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠ° Π³ΡΠ°Π½ΠΈΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ ΠΈ ΠΈΠ·-Π·Π° Π΄ΡΡΠ³ΠΈΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊ. ΠΠ° ΡΡΡ ΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ Π½Π° stackoverflow: How large is the Integer cache?
ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΎΠ±ΡΠ΅ΠΊΡΡ Π½ΡΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· equals:
System.out.println(notInCache.equals(notInCache2));
ΠΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΠ²ΡΠ·Π°Π½Π½Π°Ρ Ρ ΡΡΠΈΠΌ ΠΆΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠΎΠΌ β ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡΠ±Π°Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° Π² Java ΡΠ°Π²Π½ΠΎΡΠΈΠ»ΡΠ½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°. ΠΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ Π½Π΅ Π²Ρ
ΠΎΠ΄ΠΈΡ Π² Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈΠ· ΠΊΡΡΠ° (Ρ.Π΅. Π² -128 Π΄ΠΎ 127), ΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· ΡΠΎΠ·Π΄Π°Π²Π°ΡΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ. ΠΡΠ»ΠΈ Π²Π΄ΡΡΠ³ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° (Ρ.Π΅. boxing) Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡΡ Π² ΡΠΈΠΊΠ»Π΅, ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΉ ΠΏΡΠΈΡΠΎΡΡ Π½Π΅Π½ΡΠΆΠ½ΡΡ
ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΡΠ΅ΡΡΡΡΠΎΠ² Π½Π° ΡΠ°Π±ΠΎΡΡ ΡΠ±ΠΎΡΡΠΈΠΊΠ° ΠΌΡΡΠΎΡΠ°. ΠΠΎΡΡΠΎΠΌΡ, Π½Π΅ ΡΡΠΎΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±Π΅Π·ΡΠ°ΡΡΡΠ΄Π½ΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΡΠΎΠΌΡ.
Π’ΡΠ΅ΡΡΠΈ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π±ΠΎΠ»ΡΠ½ΡΠ΅ Π³ΡΠ°Π±Π»ΠΈ Π²ΡΡΠ΅ΠΊΠ°ΡΡ ΠΈΠ· ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΠ°:
public static void check(Integer value) {
if (value <= 0) {
throw new IllegalStateException("Value is too small");
}
}
Π ΡΡΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊ ΡΠ²Π½ΠΎ ΠΏΡΡΠ°Π»ΡΡ Π½Π΅ ΠΏΡΠΎΠΉΡΠΈ ΠΌΠΈΠΌΠΎ ΠΎΡΠΈΠ±ΠΊΠΈ. ΠΠΎ ΡΡΡ Π½Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° null. ΠΡΠ»ΠΈ Π½Π° Π²Ρ
ΠΎΠ΄ ΠΏΡΠΈΠ΄ΡΡ null, ΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π½Π΅Π²Π½ΡΡΠ½ΡΠΉ NullPointerException. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΄Π»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Java ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ value.intValue ΠΈ ΡΠ²Π°Π»ΠΈΡΡΡ, Ρ.ΠΊ. value Π±ΡΠ΄Π΅Ρ null.ΠΡΠΈΠ±ΠΊΠ° NoSuchMethodError
Π ΡΡΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ Ρ ΠΏΠΎΠΊΠ°ΠΆΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΡΠ»ΡΡΠ°ΠΉ Ρ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ NoSuchMethodError, ΠΏΠΎΠ»ΡΡΠ°ΡΡΠΈΠΉ ΠΈΠ·-Π·Π° ΡΠΌΠ΅ΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π΄ΠΎ Π°Π²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ/Π°Π²ΡΠΎΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅. Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ ΠΊΠ»Π°ΡΡ(Sum), ΠΌΠΎΠ³ Π±Ρ Π±ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ Π΄ΠΎ J2SE 5. ΠΠ½ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ add, ΡΠ°ΠΊ ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠΌΠΎΠ³ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΠΈΡΠΎΠ³ΠΎΠ²ΡΡ ΡΡΠΌΠΌΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π² Π½Π΅Π³ΠΎ.import java.util.ArrayList;
public class Sum
{
private double sum = 0;
public void add(short newShort)
{
sum += newShort;
}
public void add(int newInteger)
{
sum += newInteger;
}
public void add(long newLong)
{
sum += newLong;
}
public void add(float newFloat)
{
sum += newFloat;
}
public void add(double newDouble)
{
sum += newDouble;
}
public String toString()
{
return String.valueOf(sum);
}
}
ΠΠΎ unboxing ΠΈ autoboxing, Π»ΡΠ±ΠΎΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ Sum Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ Π΄Π»Ρ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² add ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ, ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΠ΄ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, Π΄ΠΎ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² add. ΠΡΠΈΠΌΠ΅Ρ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ:private static String sumReferences(
final Long longValue, final Integer intValue, final Short shortValue)
{
final Sum sum = new Sum();
if (longValue != null)
{
sum.add(longValue.longValue());
}
if (intValue != null)
{
sum.add(intValue.intValue());
}
if (shortValue != null)
{
sum.add(shortValue.shortValue());
}
return sum.toString();
}
J2SE 5 boxing ΡΠ΅ΡΠΈΠ»ΠΎ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°. Unboxing ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
, autoboxing Π½Π°ΠΎΠ±ΠΎΡΠΎΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
ΠΏΠ΅ΡΠ΅Π΄Π°Π΅Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Π΅ΠΌΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ
. ΠΠ° section ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΈΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½Π° ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Ρ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ "Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ°", Π½ΠΎ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ NullPointerException.private static String sumReferences(
final Long longValue, final Integer intValue, final Short shortValue)
{
final Sum sum = new Sum();
if (longValue != null)
{
sum.add(longValue);
}
if (intValue != null)
{
sum.add(intValue);
}
if (shortValue != null)
{
sum.add(shortValue);
}
return sum.toString();
}
ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° null Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ Π½Π°Ρ ΠΊΠΎΠ΄ Π±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠ°Π΅ΠΌΡΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Sum, ΡΠΎ Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π½Π° ΡΡΡΠ»ΠΎΡΠ½ΡΠ΅, ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π±ΡΠ΄Π΅Ρ Π΄Π΅Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠ»Π°ΡΡ Sum. Π’ΠΎΠ³Π΄Π° ΠΈΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ.import java.util.ArrayList;
public class Sum
{
private double sum = 0;
public void add(Short newShort)
{
if (newShort != null)
{
sum += newShort;
}
}
public void add(Integer newInteger)
{
if (newInteger != null)
{
sum += newInteger;
}
}
public void add(Long newLong)
{
if (newLong != null)
{
sum += newLong;
}
}
public void add(Float newFloat)
{
if (newFloat != null)
{
sum += newFloat;
}
}
public void add(Double newDouble)
{
if (newDouble != null)
{
sum += newDouble;
}
}
public String toString()
{
return String.valueOf(sum);
}
}
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ API ΠΊΠ»Π°ΡΡΠ° Sum(ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ) ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ NoSuchMethodErrors, Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ(ΠΊΠ»Π°ΡΡ-ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΠ»ΠΈ ΠΎΠ΄Π½Π° ΠΈΠ· Π²Π΅ΡΡΠΈΠΉ Sum) ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Java. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π΅ΡΠ»ΠΈ ΠΊΠ»Π°ΡΡ-ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Ρ ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π½Π° Java 4 ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
, Π° Sum Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΡ
Π²Π΅ΡΡΠΈΡΡ
(ΠΎΠΆΠΈΠ΄Π°Ρ ΡΡΡΠ»ΠΊΠΈ, Π° Π½Π΅ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°), ΡΠΎ NoSuchMethodErrors Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ(Π³Π΄Π΅ "S" ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Add ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° short,Π° "V" ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ void)
Exception in thread "main" java.lang.NoSuchMethodError: Sum.add(S)V
at Main.main(Main.java:9)
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π½Π° java 5 ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Sum ΡΡΡΠ»ΠΎΡΠ½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, Π° Sum ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π°Π½Π½ΡΡ
, ΡΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ NoSuchMethodErrors.
Exception in thread "main" java.lang.NoSuchMethodError: Sum.add(Ljava/lang/Short;)V
at Main.main(Main.java:9)
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠΉ ΠΈ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ Π΄Π»Ρ java ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΈΠ· ΡΡΠ°ΡΡΠΈ:
- Classpaths Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ
- .class ΠΊΠ»Π°ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡΡ java ΠΈΠ·Π±Π΅ΠΆΠ°Π»ΠΈ Π±Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π²ΠΎΠ·Π½ΠΈΠΊΡΠ΅ΠΉ Π² ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅
- Classpaths Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΊΡΠ΄Π½ΡΠΌ, ΡΡΠΎΠ±Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ/ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ "ΡΡΠ°ΡΡΡ " ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΊΠ»Π°ΡΡΠ°.
- ΠΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠΈΡΡΠΈΡΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ, ΠΈ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠ΅ΡΠ΅ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π½ΡΠΆΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ.
- ΠΠ²ΡΠΎΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ Π°Π²ΡΠΎΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΡΠ°ΡΡΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½Ρ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ°Π²ΠΈΠ»Π°Ρ . Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅, ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Ρ null ΠΏΡΠΈ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π½ΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΠΌ ΡΡΡΠ»ΠΎΡΠ½ΡΠΉ ΡΠΈΠΏ Π² ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ.
- ΠΠ΄ΠΈΠ½ ΠΈΠ· ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ java Π±ΡΠ» ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ ΠΊΠ»Π°ΡΡ: ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ javap -verbose ΠΈ Π²Π·Π³Π»ΡΠ½ΡΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ Ρ major version ΠΈ ΡΠ·Π½Π°ΡΡ Π²Π΅ΡΡΠΈΡ java.
ΠΡΠ²ΠΎΠ΄
ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ boxing/unboxing ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡΠΎΠΉ Π½Π΅ Π΄ΡΠΌΠ°ΡΡ ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ· ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² Π² ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ. ΠΠΎ ΡΡΠΎ Π½Π΅ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π°Π±ΡΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ½Π°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΡΡ ΠΎΡΠΈΠ±ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠ»ΡΡΡ Π½Π΅ ΡΡΠ°Π·Ρ. ΠΠ΅ ΡΡΠΎΠΈΡ ΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π½Π° ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΠ΄ Π½Π°ΡΠΈΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ (ΠΊΠ°ΠΊ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π³ΡΠ°Π½ΠΈΡΠ° integer). ΠΠΎ ΠΈ Π½Π΅ ΡΡΠΎΠΈΡ Π·Π°Π±ΡΠ²Π°ΡΡ ΠΏΡΠΎ Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΊΠ»Π°ΡΡΠΎΠ²-ΠΎΠ±ΡΡΡΠΎΠΊ (Π²ΡΠΎΠ΄Π΅Integer). Π§Π°ΡΡΠΎ ΡΡΠΈ ΠΊΠ»Π°ΡΡΡ-ΠΎΠ±ΡΡΡΠΊΠΈ ΠΈΠΌΠ΅ΡΡ Π½Π°Π±ΠΎΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°ΡΡ ΠΆΠΈΠ·Π½Ρ Π»ΡΡΡΠ΅, Π° ΠΊΠΎΠ΄ β Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½Π΅Π΅. ΠΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ Π² Π΄ΠΎΠ³ΠΎΠ½ΠΊΡ:
public static void main(String[] args) {
int first = 1;
int second = 5;
System.out.println(Integer.max(first, second));
System.out.println(Character.toLowerCase('S'));
}
Π’Π°ΠΊ ΠΆΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΠΈΠ· Π²ΡΠ΅Π³ΠΎ - Π½Π΅Ρ ΠΌΠ°Π³ΠΈΠΈ, Π΅ΡΡΡ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ. Π Π½Π΅ Π²Π΅Π·Π΄Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΅Π³Π΄Π° ΡΠΎ, ΡΡΠΎ ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡ Π½Π΅Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ:
System.out.println("The number is " + 8);
ΠΡΠΈΠΌΠ΅Ρ Π²ΡΡΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π² ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ. Π’ΠΎ Π΅ΡΡΡ ΡΠ»ΠΎΠ²Π½ΠΎ Π²Ρ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ Β«The number is 8Β».
Π Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½ΠΈΠΆΠ΅ ΡΠΎΠΆΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ:
public static void main(String[] args) {
System.out.println("The number is " + Math.abs(-2));
}
ΠΠ°ΠΊ ΠΆΠ΅ ΡΠ°ΠΊ, ΠΊΠΎΠ³Π΄Π° Ρ Π½Π°Ρ println ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π½Π° Π²Ρ
ΠΎΠ΄ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΈ Π½ΡΠΆΠ½ΠΎ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΡΠΎΠΊΠΈ. Π‘ΡΡΠΎΠΊΠΈβ¦ Π΄Π°, ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅Ρ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ, ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΎΠ²ΠΎΠΉ. Π£ Integer Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ
ΡΡΠΎΠ²Π½Ρ package. Π’ΠΎ Π΅ΡΡΡ ΠΌΡ ΠΈΡ
Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π° Π²ΠΎΡ Π² ΡΠ°ΠΌΠΎΠΉ Java ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ. ΠΠΎΡ ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°Π· ΡΠ°ΠΊΠΎΠΉ ΡΠ»ΡΡΠ°ΠΉ. ΠΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½ ΠΌΠ΅ΡΠΎΠ΄ getChars, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ· ΡΠΈΡΠ»Π° Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ². ΠΠΏΡΡΡ ΠΆΠ΅, Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ, ΡΠΎΠ»ΡΠΊΠΎ Java ).
Π’Π°ΠΊ ΡΡΠΎ Π² Π»ΡΠ±ΠΎΠΉ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΡΠΎΠΈΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ Ρ
ΠΎΡΡ ΡΡΠΎ-ΡΠΎ Π΄Π° Π²ΡΡΠ°Π½Π΅Ρ Π½Π° ΡΠ²ΠΎΠΈ ΠΌΠ΅ΡΡΠ°.