OCA Java imtahan mövzuları

Wrapper Classes

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

wrapper-constructors-in-java

String`i wrapper class və ya primitiv tipə çevirmək üçün parseXXX()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

wrapper-convert-string

Boolean ilə bağlı müəyyən maraqlı qaydalar var, Enthuware  testlərinin birinin izahında rastlaşacaqsınız. Baxaq:

  1. Boolean classının 2 constructoru var – Boolean(String)Boolean(boolean). Əgər String parametri null deyilsə 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əri true olan Boolean obyekti qaytarılır. Əks halda false olur.
  2. Boolean classının boolean dəyər yaratmaq üçün 2 köməkçi static metodu var – parseBoolean and valueOf.
    Boolean.parseBoolean(String ) metodu geriyə obyekt deyil, primitiv tip qaytarır. Yuxarıda qeyd etdiyimiz qayda bunun üçün də keçərlidir, yəni null deyilsə və dəyəri “true” olarsa, o zaman geriyə true qaytarır. valueOf metodu overload metoddur, həm String, həm də boolean tipində parametr qəbul edir. İşləmə qaydası parseBoolean ilə eynidir, amma ondan fərqli olaraq geriyə referans tip qaytarır, amma yeni obyekt yaratmır.
  3. == operatoru ilə 2 boolean dəyəri müqayisə etdikdə, əgər tərəflərdən biri Boolean wrapper 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]

 

*, **  “OCA: Oracle Certified Associate Java SE 8 Programmer I Study Guide: Exam 1Z0-808”, by J.Boyarsky & S.Selikoff

About the author

Mushfiq Mammadov

Leave a Comment


The reCAPTCHA verification period has expired. Please reload the page.

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.