මෙම wrapper classes යොදාගෙන ජාවාහි ඉතා වැදගත් කාර්යභාරයක් කරගැනීමට පුලුවන්. data types convert කිරීම මෙවායේ සුලභ යෙදීමක්. මීට අමතරව එම දත්ත ආකාරය ගැන වැඩි විස්තර මෙම wrapper classes යොදාගනිමින් අපට ලබාගන්නටද පුලුවන්.
Primitive type | Wrapper class |
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
අපි දැන් බලමු wrapper class යොදගෙන ලියන ලද සරල වැඩසටහනක්.
public class Wrapper{ public static void main(String args[]){ Integer num1=new Integer(23); Integer num2=new Integer(34); Integer tot1=new Integer(num1+num2); Integer tot2=num1+num2; System.out.println("tot1 : " + tot2); System.out.println("tot2 : " + tot1); } }ඉහත වැඩසටහන නිරීක්ෂණයෙන් ඔබට පෙනෙනවා ඇති ක්රම 2කකට අපි num1 හා num2 හි එකතුව ලබාගෙන තිබෙනවා. ජාවා 1.5 න් පසු සංස්කරණ වලදී නම් මෙම 2 ක්රම 2ම දෝශ රහිතයි නමුත් ඊට පෙර සංස්කරණයන්හි 2වන ක්රමය එනම් 6 වන පේලියේ ඇති ක්රමය දෝශ සහගතයි. Integer class type එක ඇති ඔබ්ජෙක්ට් එකකට int primitive type එකක් assign කිරීම ඇත්තටම වරදක්. නමුත් ජාවා 1.5න් පසු සංස්කරණ වලදී එලෙස assign කර ඇති අගය සුදුසු wrapper class type එකට convert කිරීමෙන් අනතුරුවයි assign කිරීම සිදුකරන්නේ. මෙය autoboxing ලෙසත් හඳුන්වනවා.
දැන් අපි බලමු මෙම wrapper classes භාවිතාකර data types convert කරන ආකාරය. මේ සඳහා ලියන ලද සරළ ජාවා වැඩසටහන බලමු.
public class Wrapper{ public static void main(String args[]){ String str1="23.44"; String str2="44.76"; float val1=Float.parseFloat(str1); float val2=Float.parseFloat(str2); System.out.println("str1 \t => " + str1); System.out.println("str2 \t => " + str2); System.out.println("String Data\t=> "+str1+str2); System.out.print("float Data\t=> "); System.out.println(val1+val2); } }line 5 හා line6 දී සිදුකර ඇත්තේ str1 හා str2 යන String data val1 හා val2 ලෙස float ඩේටා බවට පත්කිරීමයි. ඒ ආකාරයට wrapper class අටේම ඇති parseXXX methods (parseInt(),parseFloat(),parseDouble()...) දත්ත භාවිතා කර අපිට අවශ්ය data type වලට convert කරගන්න පුලුවන්.
දැන් අපි wrapper classes භාවිතා කර යම් data type එකකට දැරිය හැකි උපරිම හා අවම අගයන් ලබාගැනීමට වැඩසටහනක් ලියමු.
public class Wrapper{ public static void main(String args[]){ System.out.println("Byte wrapper"+"\t_______________"); System.out.println("Max value : "+Byte.MAX_VALUE); System.out.println("Min value : "+Byte.MIN_VALUE); System.out.println(); System.out.println("Integer wrapper"+"\t_______________"); System.out.println("Max value : "+Integer.MAX_VALUE); System.out.println("Min value : "+Integer.MIN_VALUE); System.out.println(); System.out.println("Long wrapper"+"\t_______________"); System.out.println("Max value : "+Long.MAX_VALUE); System.out.println("Min value : "+Long.MIN_VALUE); System.out.println(); System.out.println("Float wrapper"+"\t_______________"); System.out.println("Max value : "+Float.MAX_VALUE); System.out.println("Min value : "+Float.MIN_VALUE); System.out.println(); System.out.println("Double wrapper"+"\t_______________"); System.out.println("Max value : "+Double.MAX_VALUE); System.out.println("Min value : "+Double.MIN_VALUE); System.out.println(); } }ප්රථිඵලය:
Source: Java Documentation
නියමයි අයියේ...අපි වගේ ප්රෝගැමින් වල නවකයන්ට මේක මාරම වටිනව
ReplyDeleteම්ල්ලීට මේ ක්ෂේත්රයේ උපරිම දුරක් යාමට ලැබේවායි ප්රාර්ථනා කරනවා!
ReplyDeleteJava/C++ වගේ language එකක් ආරම්භයේදී ඉගෙන ගන්නවා නම් ඉන් පසුව අනිත් ලැන්ග්වේජ්(C#,PHP) ඉගෙන ගන්න එක ගොඩක් ලේසියි. ආරම්භ කරන එක VB වගේ එකකට වඩා ටිකක් අමාරු වුනත් පස්සෙ තමයි ඒකෙ වටිනා කම තේරෙන්නෙ.
ReplyDeleteමම මුලින්ම ප්රොග්රැමින් පටන්ගත්තෙ VB6 වලින් පස්සෙ තමයි තේරුනෙ Java/C++ වගේ භාෂා වලින් බොහොම ක්රමවත් රටාවකට ප්රෝග්රෑම් ලියන්න හුරු වෙනවා කියලා.
මම කියන්නෙ VB6 වගේ භාෂාවකින් පටන් ගන්න එක වැරදියි කියල නෙවෙයි. Java/C++ වගේ එකක්කින් අමාරුවෙන් හරි පටන් ගන්න එක වඩා හොඳයි කියලයි.
ඔය wrapper ක්ලාස් එක අපට බලාගන්න ක්රමයක් නැද්ද?
ReplyDeleteඅසිත, ඔයාට අවශ්ය wrapper class එකේ documentation එක බලාගන්නද නැත්නම් wrapper class එකේ implementation එක (wrapper class එකේ source code) එක බලාගන්නද?
ReplyDeleteඅසිත ඔයාට ජාවා documentation එකෙන් wrappr classes ගැන බලාගන්න ඕන නම්
ReplyDeletejava doc එකෙන් බලන්න. නිතර නිතර ජාවා doc එක පරිහරණය කරන එක ගොඩක් හොඳයි.
public class Wrapper{
ReplyDeletepublic static void main(String args[]){
String str1="k";
String str2="s";
float val1=Float.parseFloat(str1);
float val2=Float.parseFloat(str2);
System.out.println(val1+val2);
}
}
string1 widiyata charactor1 dunnama compile vunat run kalama error1 enawa.ai a?
Meka waradida?
ReplyDelete@NADEESHA ,
ReplyDeleteString str1="k";
String str2="s";
It should throws NumberFormat exception because you are trying to parse non float format values ( k , s ).
example for a parsable float number.
String numb="12.34";
public class Convert{
ReplyDeletepublic static void main(String args[]){
String st1="G";
char val1=Character.parseChar(st1);
System.out.println(val1);
}
}
char 1kata convert kirimedi error1 enawa.meka waradida?
reply to JANUARY 7, 2013 8:42 AM
ReplyDeleteThank you very much! I got the point!!!
also wises for ur success!!
@NADEESHA,
ReplyDeleteparseChar() යනුවෙන් method එකක් Character wrapper class එකේ නැහැ.
Char @ Javadoc
ඒක නිසා අදාල කෝඩ් එක කම්පයිල් කරන්න බැහැ. පහත දක්වා තියන විදියටත් පුලුවන් String එකක තියන දෙයක් char එකක් බවට පත්කරගන්න.(තවත් ආකාර තිබේ)
String st1="G";
char val1=st1.charAt(0);
aththatama godak hodai.. 2010 dapu lipiyak ... e unata godak dewal igana ganna puluwan una
ReplyDelete