ආයුබෝවන් යහළුවනේ,

කලකට පස්සේ ආයිමත් මම ආවා ඔබ හමුවට. අද මම ඔයගොල්ලන්ට අරගෙන එන්නේ JAVA 8 තුලදී අපට හමුවන නවතම වෙනස්කමක් පිලිබඳවයි. එනම් JAVA 8 Date and Time API එක පිලිබඳවයි. හරි. වැඩි කථාබහක් නැතුවම අපි වැඩේට බහිමු.

JAVA 8 Date/Time API එකට අදාල සියලුම classes 'java.time' පැකේජය තුලයි අන්තර්ගත වෙන්නේ. ඉන් ප්‍රථමයෙන්ම අපි සොයා යන්නේ java.time.LocalDate class එක පිලිබඳවයි.

LocalDate මගින් time එක නොමැතිව year-month-date සහිත object එකක් ලබා දෙයි.

1:  // අද දිනය  
2:  LocalDate CD = LocalDate.now();  
3:    
4:  // 2016-02-10  
5:  LocalDate LD = LocalDate.of(2016, Month.FEBRUARY, 10);  
6:    
7:  // මාස වල අගයන් ආරම්භ වන්නේ 1 නි.  
8:  LocalDate LD = LocalDate.of(2014, 8, 1);  
9:    
10:  // 2016 වසරේ 65 වන දිනය   
11:  LocalDate LD = LocalDate.ofYearDay(2010, 65); 

මීලඟට අපි අවධානය යොමු කරන්නේ LocalTime සහ LocalDateTime යන class 2 වෙතටයි.


Java කියන්නේ object-oriented language එකක් නිසා ඕනෑම දෙයක් දිහා object එකක් විදියට බලන්න පුළුවන්.සාමාන්‍ය data type එකක් object එකක් බවට පත් කල හැක්කේ wrapper classes භාවිතයෙන්.

මෙම පාඩමෙන් සාකච්ඡා කරන්නේ wrapper classes ගැනයි. Wrapper classes භාවිත කරන්නේ ඕනෑම data type එකක් object එකක් බවට පත් කිරීමටයි.

primitive data types කියන්නේ objects නෙමෙයි; ඒවා අඩුම තරමේ class එකකට වත් අයිති නැහැ;ඒවා java භාෂාව තුල define(නිර්වචනය) කරන ලද දේවල්.සමහර අවස්ථා වලදී data types, නව objects බවට පරිවර්තනය කලයුතු වෙනවා. ඒවගේ අවස්ථා වලදී අපට wrapper classes අවශ්‍ය වෙනවා.

Wrapper classes කියන්නේ මොනවාද?

නමේ කියවෙන ආකාරයටම , wrapper class එකකින් සිද්ධවෙන්නේ data type එකකට object පෙනුමක් ඇතිවන ලෙස සිදු කරන එතීමකි.Data type එක object එකක් ලෙස අවශ්‍ය වන ඕනෑම අවස්ථාවකදී, මේ object එක භාවිත කල හැක. Wrapper classes තුල මෙම එතීමට ලක් කරන ලද data type එකේ එතීම, ලෙහීමට අවශ්‍ය methods ඇත.

මෙය අපට chocolate එකකට සමාන කල හැක. නිෂ්පාදකයා විසින් chocolate එක නිපදවීමේදී එය නරක් වීමෙන් බේරා ගැනීමට එය ඊයම් කොළයකින් ඔතයි.



නමුත් පාරිභෝගිකයා එය මිලදී ගත් පසු මෙම wrapping එක ගලවා ඉවත දමා chocolate එක ආහාරයට ගනී.






පහත උදාහරණය බලන්න.

                    int k =10;
                    Integer i =new Integer(k);

මෙහි දක්වා ඇති k නම් int data type එක Integer class එක භාවිතයෙන් i නම් object එකක් බවට පත් කර ඇත. එමනිසා මෙම දත්තය object එකක් ලෙස අවශ්‍ය වන ඕනෑම අවස්ථාවක දී අපට භාවිතයට ගැනීමට පුළුවන්.

පහතින් දැක්වෙන්නේ මෙසේ wrap කරන ලද (ඔතන ලද) object එකකට අයත් value එක unwrap කරගන්නා ආකාරයයි.

                     int k =10;
                    Integer i =new Integer(k);
                    int m = i.intValue();

intValue() යනු integer class එකේ ඇති  අදාල object එකට අයත් value එක int data එකක් ලෙස ලබාදෙන method එකයි.

wrapper class ලැයිස්තුව

java තුල ඇති primitive data type 8 ම වෙනුවෙන් wrapper classes 8ක් ද ඇත. පහත දක්වා ඇත්තේ එම ලැයිස්තුවයි.


Primitive data typeWrapper class
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

පහත දක්වා ඇත්තේ ඊට අදාල hierarchy එකයි.



මෙම සියලුම wrapper classes, java.lang පැකේජය තුල තබා ඇත්තේ එමගින් එය import කිරීමකින් තොරව භාවිතා කල හැකි වීමටයි. එසේම මෙම wrapper classes inherit වීම වැලැක්වීම සඳහා final ලෙස නම් කර ඇත.

මීළඟ පාඩමින් මෙම wrapper classes වලට අයත් methods පිළිබඳව විමසා බලමු.
අද මම කියාදෙන්න යන්නේ ඕනෑම වචනයක් reverse එකට හරවන්නේ කොහොමද කියලයි. ඒ කියන්නේ වචනය අග සිට මුලට ලියන්නේ කොහොමද කියලයි. ඒකට අපට උවමනා වෙනවා StringBuilder කියන class එක. එහි තියෙන reverse() කියන method එකෙන් මේ වැඩේ පහසුවෙන්ම කරගන්න පුළුවන්. පහතින් තියෙන්නේ ඊට අදාල code example එකක්.


public class ReveseText {
    public static void main(String[] args) {
        String direct="Reverse this text";
        StringBuilder builder=new StringBuilder(direct);
        StringBuilder reversed = builder.reverse();
        System.out.println(reversed);
    }
}

Output : txet siht esreveR
මේ තියෙන්නේ අපට අවශ්‍ය ඕනෑම වචනයක අපට අවශ්‍ය ඕනෑම තැනකින් කැබලි වලට කඩාගන්න විදියයි. ඊට පාවිච්චි කරන්නේ String class එකේ ඇති split() කියන method එකයි. මෙම method එකේ parameters ලෙස අපට වචනය කැබලි වලට කඩා ගත යුතු ස්ථානයට අදාළ text එක ලබා දිය යුතුයි.  පහත ඇත්තේ ඊට අදාල code example එකයි.

public class SplitText {

    public static void main(String[] args) {
        String text = "split this text";
        String[] split = text.split("");
        for (int i = 0; i < split.length; i++) {
            System.out.println(split[i]);
        }
    }
}

Output : s
             p
             l
             i
             t

             t
             h
             i
             s

            t
            e
            x
            t

අංක වචන වලට හරවමු

මේ තියෙන්නේ අපි type කරන ඕනෑම number එකක් text වලට convert කරන්න class එකක්. මෙහි ඇති convert() යන method එක භාවිතා කරමින් 0 සිට 999 999 999 999 ඕනෑම සංඛ්‍යාවක් වචන බවට හරවා ගන්න පුළුවන්. මෙහි ඇති convert method එකට අපට අවශ්‍ය අංකය String ආකාරයට හෝ long ආකාරයට ලබා දීමෙන් මෙම කාර්යය කරගත හැක.