Hər bir primitiv tipin özünə uyğun obyekt tipində Wrapper classı var.
// new Long() parametr olaraq long və String qəbul edir
Long L1 = new Long(1_000_000_000_000); // doesn't compile
Long L2 = new Long(1_000_000_000_000L);
Long L3 = new Long("5");
Long L4 = 5; // doesn't compile
Long L5 = (long) 5;
Long L6 = 5L;
// new Float() parametr olaraq float, double və String qəbul edir
Float f = 5; // doesn't compile
Float f1 = 5.2; // doesn't compile
Float f2 = 5.2f;
Float f3 = new Float(5.2);
Float f4 = new Float("5.2");
*Wrapper Constructors
String`i wrapper class və ya primitiv tipə çevirmək üçün parseXXX() və valueOf() metodlarından istifadə olunur.
int primitive = Integer.parseInt("123"); // bu metod geriyə primitive tip qaytarır
Integer wrapper = Integer.valueOf("123"); // bu metod geriyə wrapper class qaytarır
Doğru parametr göndərilmədikdə exception verir.
int bad1 = Integer.parseInt("a"); // throws NumberFormatException
Integer bad2 = Integer.valueOf("123.45"); // throws NumberFormatException
int bad3 = Integer.parseInt(null); // throws NumberFormatException
Character classından başqa hamısının parse/valueOf metodları var:
**Converting from a String
Boolean ilə bağlı müəyyən maraqlı qaydalar var, Enthuware testlərinin birinin izahında rastlaşacaqsınız. Baxaq:
Booleanclassının 2 constructoru var –Boolean(String)vəBoolean(boolean). ƏgərStringparametrinulldeyilsə və dəyəri “true” (və ya “True” yaxud “tRuE”, yəni böyük-kiçik hərf duyarlı deyil) olarsa, o zaman geriyə dəyəritrueolan Boolean obyekti qaytarılır. Əks haldafalseolur.Booleanclassının boolean dəyər yaratmaq üçün 2 köməkçi static metodu var –parseBooleanandvalueOf.
Boolean.parseBoolean(String )metodu geriyə obyekt deyil, primitiv tip qaytarır. Yuxarıda qeyd etdiyimiz qayda bunun üçün də keçərlidir, yəninulldeyilsə və dəyəri “true” olarsa, o zaman geriyətrueqaytarır.valueOfmetodu overload metoddur, həmString, həm dəbooleantipində parametr qəbul edir. İşləmə qaydasıparseBooleanilə eynidir, amma ondan fərqli olaraq geriyə referans tip qaytarır, amma yeni obyekt yaratmır.==operatoru ilə 2 boolean dəyəri müqayisə etdikdə, əgər tərəflərdən biriBooleanwrapper class olarsa, o zaman o “unboxed” vasitəsilə primitiv tipə çevirilir və sonra müqayisə aparılır. Yox əgər hər iki tərəf wrapper classdırsa, o zaman onların referansları müqayisə olunur.
System.out.println(new Boolean("true ")); // false
System.out.println(new Boolean("tRUe")); // true
new Boolean("true") == new Boolean("true") // false
new Boolean("true") == Boolean.valueOf("true") // false
new Boolean("true") == Boolean.valueOf(true) // false
new Boolean("true") == Boolean.parseBoolean("true") // true
new Boolean(null) == Boolean.parseBoolean(" true ") // true
new Boolean("true") == Boolean.parseBoolean(true) // does not compile
Boolean.valueOf("true") == Boolean.TRUE // true
new Boolean("true") == Boolean.TRUE // false
Boolean.valueOf("truE") == Boolean.parseBoolean("True") // true
Fərqli Wrapper classlara aid referansları == operatoru ilə müqayisə etmək mümkün deyil, compile xətası verəcək:
Short k = 9; Integer w = 9; System.out.println(k == w); // does not compile short s = 9; int i = 9; System.out.println(s == i); // true
Aşağıdakı nümunəyə bənzər nümunə ilə Enthuware’də rastlaşacaqsınız. Ekrana nəyin çap olacağını tapmağa çalışın. Əgər cavabınız doğru olmasa kodu incələyin, output’dan artıq sizə çox şey məlum olacaq və bir yeni şey də öyrənmiş olacaqsınız 🙂
public static void main(String[] args) {
Float f = null;
try {
f = Float.valueOf("11");
String s = f.toString();
double d = Double.valueOf(s);
int i = Integer.parseInt(s);
System.out.println(d + " " + i);
} catch (NumberFormatException e) {
System.out.println(f);
}
}
[topics lang=az]


