Java Casting
ඔන්න එහෙනම් අද අපි java casting ගැන ඉගෙන ගන්න යන්නෙ.. ඊට කලින් කවුරු හරි java වල variable ගැනයි data type ගැනයි බැලුවෙ නැත්නම් මෙතනින් ගිහිල්ලා ඒ ටික බලලම එන්නකො..
කෙලින්ම වැඩේට බහිමු. casting කියන්නෙ මොකක්ද කියලා කතා කරන්න කලින් අපිට casting ඕන වෙන්නෙ මොකටද කියලා බලලා හිටියොත් හොඳයි කියලා මට හිතෙනවා.. හැබැයි casting අවශ්ය වෙන්නෙ මොකටද කියලා දැන ගන්න කලින් java වල තියෙන data type වල capacity එක පොඩ්ඩක් බලා ගත්තොත් කට පාඩම් කරන්නෙ නැතුව casting ගැන හොඳටම තේරුම් ගන්න පුළුවන් වෙයි කියලා හිතෙන නිසා මම java වල තියෙන data types වල capacity එක මුලින් කියලා ඉන්නම්..
දැන් එහෙනම් කට්ටිය පොඩ්ඩක් මතක් කරන්න බලන්න java වල තියෙන data type 8 මොනවද කියලා......
Variable Capacity
data type 8 තමයි,
- byte
- short
- int
- long
- float
- double
- char
- boolean
හරි ගොඩක් අය දන්නවනේ byte වල capacity එක, ඒ කියන්නෙ bit ගාන 8යි කියලා.. දැන් එතන ඉඳන් බලමු. integer data type 4 දි bit ගාන 8න් පටන් අරගෙන 2න් ගුණ වෙවී තමයි යන්නෙ..
ඒ කියන්නෙ,
- byte 8 bit
- short 16 bit
- int 32 bit
- long 64 bit
ඊළඟට තියෙන floating point data type 2 දි integer data type 4න් අන්තිම දෙකේ තියෙන bit ගාන තමයි තියෙන්නෙ..
ඒ කියන්නෙ,
- float 32 bit
- double 64 bit
char වල තියෙන්නෙ short වලට සමාන capacity එකක්..
ඒ කියන්නෙ,
- char 16 bit
boolean වල තියාගන්නෙ logic එකක් (true or false) නිසා true කියන එක 1 විදියට ගත්තොත් false එක 0 විදියට ගන්න පුළුවන්. එහෙම වුනොත් 1 හරි 0 හරි තියාගන්න ඕන වෙන්නෙ එක bit එකක් නිසා boolean data type එකේ capacity එක bit 1යි.
- boolean 1 bit
variable වල bit size එකත් කියපු නිසා මට හිතෙනවා දැන් මෙහෙම එකම type එකේ data දාන්න data type ගොඩක් තියෙන්නෙ ඇයි කියලත් කියලම ඉන්න..
ඇත්තටම අපි මොකක් හරි program එකක්, software එකක් හදන්නෙ අපේ computer එකේ run වෙන්න විතරක් නෙවෙයිනේ.. ඒක නිසා ඒක use කරන user ගෙ machine එකෙත් වැඩ කරන්න ඕන. හැබැයි අපි දන්නෙ නෑ user ගෙ machine එකේ ram එක ලොකු අගයක්ද පොඩි එකක්ද කියලා. ඒක නිසා අපි කෝකටත් කියලා හදන program එකක ram usage එක අඩු වෙන්න හදන්න ඕන..
variable එකක් කියන්නෙ ram එකෙන් වෙන් කරන ඉඩ ප්රමාණයක් නිසා අපි ram එක ඉතුරු කර ගන්න නම් variable හදද්දි අවශ්ය ප්රමාණයටම විතරක් ඉඩ වෙන් කරගන්න ඕන..
උදාහරණයක් විදියට අපි 5 කියන value එක ram එකේ store කරනවා කියලා හිතමුකො.. machine එකේ data save වෙන්නෙ binary විදියට නිසා අපි මුලින්ම මේක 2 පාදයට හදා ගනිමු..
- 5 = 101 දෙක
මේකට ගිහින් තියෙන්නෙ bit 3යි නේ.. ඉතින් අපි මේ value එක int එකකට දාන්න ගියොත් නිකරුනේ අපි bit 32ක් ram එකේ වෙන් කරලා ඒකෙන් 29 ක්ම use කරන්නෙත් නැතුව තියාගෙන ඉන්නවා. ඇත්තටම මේක අපිට bit 8 කට දැම්මනම් අපරාදෙ වුනත් වෙන්නෙ bit 5ක් නිසා int එකකට නොදා byte එකකට දානකොට ram එකේ ඉඩ ඉතුරු වෙනවා..
අන්න එහෙම අවශ්ය විදියට manage කරගෙන data දාන්න තමයි එකම type එකෙන් වුනත් වෙනස් bit size වලින් data type කිහිපයක්ම java වලදි අපිට දීලා තියෙන්නෙ..
Casting
මෙහෙම හිතන්නකෝ.. int variable එකක 5 කියන value එක තියෙනවා.. එතකොට ram එකේ ඉඩ වැඩිපුර යන නිසා අපිට ඒක byte variable එකකට දාන්න ඕන නිසා අපි මෙහෙම ලිවුවොත් හරිද?
අපිට කරන්න ඕන දේ නම් මෙතනදි කරලා තියෙන්නෙ.. හැබැයි compiler මෙහෙම කරන්න ගියාම error එකක් දෙනවා. ඒකට හේතුව තමයි අපි දන්නවා වුනාට 5 කියන value එකට යන්නෙ bit 3ක් විතරක් වුනාට දැන් ඇත්තටම 5 කියන value එක තියෙන්නෙ int variable එකක නිසා ඒක තියෙන්නෙ bit 32 ක පැකට් එකක් විදියට ඉතින් එහෙම bit 32ක් bit 8කට දාන්න බැරි නිසා තමයි මෙහෙම කරන්න ගියාම compiler අපිට error එකක් දෙන්නෙත්..
දැන් අපි කොහොමහරි 5 කියන value එකට අදාළ bit ටික විතරක් වෙන් කරලා ගත්තොත් අපිට byte variable එකකට ඒක දාන්න පුළුවන් වෙනවා නේද?
අන්න එහෙම ලොකු bit ටිකකින් data එකට අදාළ පොඩි bit ප්රමාණයක් වෙන් කරගන්න ක්රියාවට තමයි casting කියලා කියන්නෙ.. ( සරලව කිව්වොත් එක data type එකක් තව data type එකකට හරවන ක්රයාවලිය casting කියලා හඳුන්වන්න පුළුවන්.. )
දැන් අපි බලමු එහෙනම් cast කරලා කොහොමද මේ int variable එකේ තියෙන value එක byte variable එකකට දාගන්නෙ කියලා..
දැන් අපි බලමු එහෙනම් cast කරලා කොහොමද මේ int variable එකේ තියෙන value එක byte variable එකකට දාගන්නෙ කියලා..
How?
මෙහෙම හිතමුකො...
අපි byte variable එකක තියෙන value එකක් int variable එකකට දාන්න ගියොත් ප්රශ්නයක් වෙනවද? ඇත්තටම bit 8ක packet එකක් ගේමක් නැතුව bit 32 කට දාන්න පුළුවන් නිසා ප්රශ්නයක් වෙන්නෙ නෑ.. හැබැයි අනිත් පැත්ත කරන්න ගියාම තමයි අපිට කලින් කතා කරපු ප්රශ්නෙ එන්නෙ..
ඒක නිසා ලොකු එකක් පොඩි එකකට දාන්න යනකොට අපිට compiler ට විශේෂයෙන්ම කියන්න වෙනවා එයාගෙන් අදාළ ටික විතරක් කඩලා ගන්න කියලා. එහෙම කියන්න නම් අපිට කරන්න තියෙන්නෙ වරහන් ඇතුලෙ cast කරන්න ඕන type එක ලියන එක විතරයි..
තේරුනේ නෑ නේද? උදාහරණයක් අරගෙනම බලමුකො..
අපිට integer variable එකේ තියෙන 5 කියන value එකට අදාළ data එක තියෙන bit 8ක් කඩලා අරගෙන byte variable එකකට දාන්න ඕන නිසා අපි byte variable එකට int variable එක assign කරන්න කලින් වරහන් ඇතුලෙ byte කියලා දාන්න යන variable එකේ data type එක දීලා compiler ට කියනවා මේ x කියන int variable එකෙන් byte වලට අදාළ bit 8 කඩලා b කියන byte variable එකට දාන්න කියලා.. එතකොට casting වෙලා ඒ value එක byte variable එකට වැටෙනවා..
මෙන්න මෙහෙම තමයි casting කරන්නෙ.. මෙතන int එකකින් byte එකකට දාන එක ගැන විතරක් කතා කළාට variable capacity මතක නම් ඕනම data type එකක casting මේ විදියටම කරන්න පුළුවන්..
Note
- මේක විශේෂම දෙයක්, හොඳට මතක තියාගන්න java වලදි INTEGER operation එකක් වුනාට පස්සෙ processor එකෙන් ඒ output එක එවන්නෙ 32 bit විදියට. එතකොට එහෙම එන result එකක් දාන්න පුළුවන් int එකකට හරි long එකකට හරි විතරයි. byte වලට හරි short වලට හරි දාන්න ඕනනම් cast කරන්න වෙනවා..
- FLOATING POINT operation එකක් වුනාට පස්සෙ processor එකෙන් result එක දෙන්නෙ 64 bit විදියට. ඒක නිසා එහෙම එන result එකක් දාන්න පුළුවන් double වලට විතරයි. අපිට float වලට දාන්න ඕනනම් (float) කියලා ලියලා cast කරන්න වෙනවා..
- එහෙමත් නැත්නම් අපි මේ දාන්න යන්නෙ float variable එකකට කියලා compiler ට කියන්න f අකුරක් value එකේ අගට දාන්න වෙනවා..
එහෙනම් casting ගැන හැමෝටම තේරුණා කියලා හිතනවා.. වෙලාවෙ ප්රශ්නෙත් එක්ක මට මේ සැරේ එක දිගටම post එක ලියන්න බැරි වුනා. වෙලාව තියෙන තියෙන විදියට ටික ටික ලිව්වෙ. ඒක නිසා මේකෙ ගලා යාමක් නෑ වගෙත් දැනෙනවා.. කොහොම වුනත් කාට හරි තේරෙන්නෙ නැත්නම් අනිවාර්යෙන්ම අහන්න.. එහෙනම් මම අදට සමුගන්නම්.. ඊළඟ දවසෙ අපි IF-Else එක්ක හමුවෙමු..
කෙනෙක් කියලා තියෙනවා මේක තේරෙන්නෙ නෑ කියලා.. එහෙම තේරෙන්නෙ නැත්නම් ඒ කොතනද කියලා කියන්න එතකොට මට ඒක වෙනස් කරන්න පුළුවන් වෙයි
ReplyDelete..
supirima wedak aiye api gdak exam me oyage vedio balala gda dagana thiyanawa thanks
Deletesupiri aiye
DeleteData type use කරන්නේ කොහොමද කියල ලොකු පැටලැවිල්ලක හිටියෙ දැන් තමා එලටම පැහැදිලි වුනේ
ReplyDeleteEla wadak bn
ReplyDeleteMachan oya float eke f akura dala karanne casting karana ekada(4,5f;) kiyala thiyenne
yep.. eka C language eke indanma ena ekak.. castingma kiyala kiyanna ba hariyatama.. bt eke wena demai wenne..
DeleteOyata godak pin brother .....oya me karana de watinakama danene java egena ganna gihin amaruwe watuna kenekta...mata den hodatama therenwa dr..
ReplyDeleteWish you all the best for learn more and teach more
ReplyDeleteela ela niyamai
ReplyDeletegodak vatinwa dr...godaaaak pin oyata
ReplyDeletegood work,,
ReplyDeleteWish you all the best
ReplyDeletethnxs bro
ReplyDeletepatta machan.....godaaak pin...
ReplyDeletethanks
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteNiyamai mchn
ReplyDeleteHodata therenawa
Best post brother. thanks lot.
ReplyDeleteethakota "Strings" kiyanne variable ekak nemeida mcn...?
ReplyDelete"String " කියන්නේ data type එකක් @දසුන්_සධරුවන් .
Deletevariable එකක් කියන්නේ අපි සාමාන්ය ගණිතයේදී x=10 කියල පාවිච්චි කරන එක ගත්තොත් එකේ x කියන්නේ variable එක. මං හිතනවා මං මේ දුන්න උත්තරය තේරෙන්න ඇති කියල . මේ මදි නම් zilw__@outlook.com මේකට mail එකක් දාන්න .
string kiynne primitive data type ekk neme,
Deletevariable kiynne vichallyak neh? ithn apita String kiyana non-primitive data type eka use karagena ram eke kotasak wen karagnna puluwan
Ex- String c="java";
mn hithnawa mekath hari athi kiyla
great work bro!!!!
ReplyDeletekeep it up!
thanks brooo
ReplyDeletegood work! thanks
ReplyDeletegood work!thank you verymuch.keep it up
ReplyDeletethnx
ReplyDeleteSUPRI AIYE ,OYAATA SUBA PATHANAWA ,DIGATAMA KARANNA
ReplyDeletereally helpful.thank you
ReplyDeleteThank you soo much.
ReplyDeletethanks a lot brother
ReplyDeleteniyamai meka..godak wedagath
ReplyDeleteගොඩක් වටිනවා අය්යේ, good luck.
ReplyDeletegodddaaaaaakk watinawaaa!!!!!
ReplyDeleteaiye suppa wedak exam gdak doda gye oyage me vedio balala
ReplyDeletesuper
ReplyDeletegodak sthuthi... <3
ReplyDeleteara f akura daan kyn eka terun giya madida manda........
ReplyDeleteeka java wala tynaw d?????
oya kynne
Deletedouble d= 4.5 kyn eka apit float walin gnn oni nn
float f = 4.5f kyn ekia
float f1 = (float) 4.5 kyn ekai dekama hari kyna eka need????
mehemai. Java wala floating point number ekak store karana default data type eka 'double'. ethakota othanadi float f = 4.5 kiyala dunnoth error ekak enawa. mokada 4.5 kiyana eka store wenne double ekak widihata nisa(default double ne). 64bit ekak 32bit ekaka store karaddi error ekak enawa kiyala dannawane. eka nisa thamai ,4.5 kiyna eka double neme float kiyala kiyannai 4.5f kiyala danne ethanadi.
Deleteai apita casting kiyana eka awashya wenne?dn oya udaaharanen gatthoth apita convert karanne nathuwa kelinma ' byte x = 5 ' kiyala denna puluwan ne?ai me wage concept ekak hadunwala thiyenne?java wla,eka wena dekata use wenwada?
ReplyDeletethq bro
ReplyDeleteSupiri wadak bro...
ReplyDeleteAne pin aiye oyata!!! Meka baluwama thama therenna gatte...nattan melo deyak therenne nathuwa pissu hadila hitye..aiye Ethakota string kiyana data type eka use karanne ai api? Ara java wala data type 8 ta eka aithi nathida?
ReplyDeleteString kiyna eka ai data type 8 ta athuath krala naththe
ReplyDeleteMchn 1st ynx krnna oni me karana wadeta.
ReplyDeleteAntimata dala tyna puc eke code eke values danne natuwa variable name eken dala example eka dunnanm tawa tikak clear kyla hitenawa, mokada mata etanin poddk confuse wenawa bn
niyamai thank you
ReplyDeleteGreat work aiye. Thank you very much...!!!
ReplyDeletetnx you very much
ReplyDeleteniyamai aiye..
ReplyDeleteSupiri wadak. Digatama karagena yann ayye
ReplyDeleteNiyamai. Supiri.
ReplyDeletegodak sthuthiii
ReplyDeleteGdrk try kara meka therum ganna dennm clear.. thankz karana support ekata oyta
ReplyDeletegodak hodat theruna thank you
ReplyDeleteMe blog ek harima watinawa ayyee...thank you.
ReplyDeleteayye thank you very much.
ReplyDeletemarama supiriyata pahadilie.
wam molakarayo youtube channel eken dakala awe. marama watinawa
Thank you very much
ReplyDeleteThanks aiyaa
ReplyDeleteanith subject waltath me wagema tikk thibbnm marma watinawa, computer organisation, requirement engineering, software process wage ...
ReplyDelete❤️
ReplyDeleteTnxmcn
ReplyDeletethank u so much
ReplyDeletethank you so much ❤️
ReplyDeletethanks sahooo
ReplyDeleteThank u❤
ReplyDeleteසුපිරි 👍🏻❤️හොදට තේරුණා. Thank you🥺❤️
ReplyDeleteftt
ReplyDeleteGood job aiye <3
ReplyDeleteGodk vtinv
ReplyDeleteWell explained thank you 💓😍
ReplyDelete