Sobes.tech
Junior

Ի՞նչ են Java-ի Wrapper դասերը (Wrapper classes):

sobes.tech AI

Պատասխան AI-ից

Java-յի Wrapper դասերը՝ դա դասեր են, որոնք օբյեկտ-կենտրոնական ներկայացում են primitív տվյալների տիպերի համար: Դրանք թույլ են տալիս օգտագործել primitív արժեքները այն կոնտեքստերում, որտեղ անհրաժեշտ են օբյեկտներ, օրինակ՝ հավաքածուներում կամ բազմապտույտ աշխատանքում:

Հիմնական Wrapper դասերը՝

  • Byte
  • Short
  • Integer
  • Long
  • Float
  • Double
  • Boolean
  • Character

Օգտագործման օրինակներ՝

primitív օգտագործում՝

// primitív տիպ
int x = 10;

Wrapper դասի օգտագործում՝

// Wrapper դաս
Integer y = new Integer(20); // Հնացած ձև
Integer z = 30; // Ավտոբոքսինգ (ինքնաբերաբար փոխարկում primitívից օբյեկտ)

Միջանցք primitívների և Wrapper օբյեկտների միջև փոխարկում՝

  • Autoboxing: ինքնաբերաբար primitívը փոխարկվում է Wrapper օբյեկտի՝
    // Autoboxing
    int primitiveInt = 100;
    Integer wrapperInt = primitiveInt;
    
  • Unboxing: ինքնաբերաբար Wrapper օբյեկտը փոխարկվում է primitív՝
    // Unboxing
    Integer wrapperInteger = new Integer(200);
    int primitiveInteger = wrapperInteger;
    

Wrapper դասերի առավելություններ՝

  • Հավաքածուներով աշխատելիս՝ Collection-ները (List, Set, Map) պահում են միայն օբյեկտներ:
  • null արժեքների հետ աշխատելիս՝ Wrapper օբյեկտները կարող են ունենալ null արժեք, ինչը primitives-ով հնարավոր չէ:
  • Օգտակար մեթոդներ՝ Wrapper դասերը ունեն մեթոդներ տողերի փոխարկման, արժեքների համեմատության և այլն։ Օրինակ՝ Integer.parseInt(String s):
  • Գեներիկների հետ աշխատելիս՝ միայն օբյեկտներով:

Անբարենպաստ կողմերը՝

  • Հիշողության սպառում՝ Wrapper օբյեկտները մեծացնում են հիշողության սպառումը primitives-ների համեմատ:
  • Աշխատողականության նվազում՝ ավտոբոքսինգը և անբոքսինգը կարող են փոքր-ինչ նվազեցնել աշխատանքային արդյունավետությունը:

Օրինակ հավաքածուում օգտագործման՝

import java.util.ArrayList;
import java.util.List;

public class WrapperExample {
    public static void main(String[] args) {
        List<Integer> numbers = new ArrayList<>();
        numbers.add(10); // Ավտոբոքսինգ
        numbers.add(new Integer(20)); // Նշանակալից ստեղծում

        int firstNum = numbers.get(0); // Անբոքսինգ
        System.out.println(firstNum);
    }
}