🌍 Select Your Language

Please choose your preferred language to read the articles. (ඔබට කියවීමට පහසු භාෂාව තෝරන්න)

BREAKING NEWS
🚀 Kaweesha launched the new AI Tech Blog! 💻 Python & Java Tutorials are now live. 🎮 Game Development Guide: Building 2D Games with Godot. 🌐 Web Hosting secrets revealed - Check the latest post!

Java Programming Sinhala - Part 02: Variables, Data Types & Math (සම්පූර්ණ පාඩම)

Java Data Types and Casting Code Example Sinhala

කලින් පාඩමෙන් අපි Java පරිගණකයට දාගෙන, ලෝකෙටම ඇහෙන්න "Hello Java" කියලා Print කරගත්තා මතකනේ? හැබැයි පරිගණකයක් (Computer) වුනාම ඒකෙන් ඇත්තටම වැඩක් ගන්න නම් අපි දත්ත (Data) එක්ක සෙල්ලම් කරන්න ඕනේ. පරිගණකයක් කියන්නේ මූලිකවම දත්ත සකසන යන්ත්‍රයක්නේ (Data Processing Machine). 🧮

අද පාඩම ටිකක් දිගයි. විනාඩි 30ක් විතර අරගෙන හොඳට කියවන්න. මොකද මේක තමයි Java වල විතරක් නෙමෙයි ඕනෑම Programming Language එකක "කොඳු නාරටිය". අද අපි විශ්ව විද්‍යාලයේ Degree එකකට උගන්වන ගැඹුරු Theory සහ Software Company එකක ප්‍රායෝගිකව කෝඩ් කරන විදිය යන දෙකම එකතු කරලා, Variables, Data Types, Casting සහ Math Operations ගැන A-Z ඉගෙන ගමු. 🧠 ලෑස්තිද? එහෙනම් පටන් ගමු!


📦 1. Variables කියන්නේ මොනවද? (The Memory Boxes)

සරලවම හිතන්න, ඔයාගේ අම්මා කුස්සියේ තියෙන සීනි, පරිප්පු, තුනපහ දාන්න වෙන වෙනම ප්ලාස්ටික් පෙට්ටි (Tupperware) පාවිච්චි කරනවා නේද? ඒ හැම පෙට්ටියකම ගහලා තියෙනවා මේකේ තියෙන්නේ මොනවද කියලා ලේබල් එකක්. Programming වලදී Variable එකක් කියන්නෙත් අන්න ඒ වගේ මෙමරියේ (RAM එකේ) අපි හදාගන්න "පෙට්ටියක්".

අපිට ඒ පෙට්ටිය ඇතුලට අගයක් (Value) දාන්න පුළුවන්, ඕන නම් පස්සේ ඒක ඇතුලේ තියෙන දේ විසි කරලා වෙන අලුත් එකක් දාන්නත් පුළුවන් (ඒකයි Variable - විචල්‍ය කියන්නේ).

Variable එකක් හදන නිවැරදි හැඩරුව (Syntax):

DataType variableName = value;

උදාහරණ: int age = 25;
මෙතන int කියන්නේ පෙට්ටියේ වර්ගය (Type එක). age කියන්නේ පෙට්ටියට අපි දාපු නම. 25 කියන්නේ ඒ පෙට්ටිය ඇතුලේ අපි දාපු අගය.

⚠️ නමක් තියද්දි සැලකිලිමත් වන්න! (Naming Conventions & Rules)

ඔයාගේ බල්ලාට "බල්ලා" කියලා නම දාන්නේ නෑනේ. ඒ වගේ Variable වලට නම දාද්දි Java වල දැඩි නීති සහ සම්ප්‍රදායන් තියෙනවා.

  • camelCase පාවිච්චි කරන්න (සම්ප්‍රදාය): වචන දෙකක් හෝ කිහිපයක් එකතු වෙනවා නම්, පලවෙනි වචනේ simple වලින් ලියලා, ඊළඟට එන හැම වචනෙකම මුල් අකුර Capital කරන්න. (උදා: myAge, studentFirstName, bankAccountBalance).
  • ඉලක්කම් වලින් පටන් ගන්න බෑ (නීතියක්): 1stPlace කියලා නම පටන් ගන්න බෑ. (හැබැයි place1 කියලා ලිව්වට කමක් නෑ).
  • හිස් තැන් (Spaces) බෑ (නීතියක්): my name වැරදියි. my_name හෝ myName තමයි හරි ක්‍රමය.
  • Keywords බෑ (නීතියක්): class, public, int, static වගේ Java වලටම වෙන් වෙච්ච වචන Variable නම් විදියට ගන්න බෑ.

🔒 Constants (නියතයන්) - කවදාවත් වෙනස් කරන්න බැරි පෙට්ටි

සමහර වෙලාවට අපිට ඕන වෙනවා වැඩසටහන දුවනකම් කවදාවත් වෙනස් නොවෙන අගයන් තියාගන්න. උදාහරණයකට Pi (π) අගය (3.14159), නැත්නම් දවසේ පැය ගාණ (24). මේවා වෙනස් වුනොත් මුළු සිස්ටම් එකම අවුල් යනවා. Java වලදී මේවා හදන්නේ final කියන Keyword එක පාවිච්චි කරලා.

final double PI = 3.14159; final int HOURS_IN_DAY = 24; // PI = 5.0; // 🚨 මෙහෙම කරන්න බෑ! කරොත් Compiler Error එකක් එනවා.

(Professional Tip: Constants වල නම් ලියන්නේ ඔක්කොම CAPITAL අකුරෙන්. වචන වෙන් කරන්නේ Underscore _ එකෙන්.)


🔢 2. Data Types: දත්ත වර්ග 8ක්? (The Primitives)

Java කියන්නේ Statically Typed භාෂාවක්. ඒ කියන්නේ Python වල වගේ නිකම්ම Variable එකක් හදන්න බෑ, අනිවාර්යයෙන්ම ඒ පෙට්ටියට දාන්නේ මොන ජාතියේ දත්තද කියලා කලින්ම කියන්න ඕනේ. Java වල මූලික දත්ත ගබඩා කරන ක්‍රම (Primitive Types) 8ක් තියෙනවා.

Type (වර්ගය) Size (RAM එකේ ඉඩ) අගය පරාසය (Range) පාවිච්චි කරන්නේ මොනවටද?
byte 1 byte (8 bits) -128 සිට 127 හරිම පොඩි ඉලක්කම්. Memory එක ගොඩක් ඉතුරු කරගන්න ඕන තැන්වලට. (උදා: කෙනෙකුගේ වයස).
short 2 bytes -32,768 සිට 32,767 සාමාන්‍යයෙන් පාවිච්චි වෙන්නේ අඩුවෙන්.
int 4 bytes බිලියන -2 සිට බිලියන +2 බහුලවම පාවිච්චි වෙන්නේ මේක! සාමාන්‍ය ගණන් හැමදේටම ගන්නේ int.
long 8 bytes අති විශාල සංඛ්‍යා ලෝකේ ජනගහනය, දුර ප්‍රමාණ වගේ ලොකු ඉලක්කම්. (අගට අනිවාර්යයෙන් 'L' අකුර දාන්න ඕනේ. උදා: 15000000000L)
float 4 bytes දශම ස්ථාන 6-7 ක් දශම තියෙන ඉලක්කම් (අගට 'f' දාන්න ඕනේ. උදා: 10.5f).
double 8 bytes දශම ස්ථාන 15 ක් ගොඩක්ම පාවිච්චි වෙන දශම වර්ගය. නිවැරදිතාව (Precision) වැඩියි. (උදා: 3.14159)
boolean 1 bit true හෝ false ඔව්/නැහැ, ඇත්ත/බොරු තීරණ ගන්න. (උදා: boolean isMarried = true;)
char 2 bytes තනි අකුරක් තනි අකුරක් විතරක් දාන්න. අනිවාර්යයෙන් Single Quotes '' පාවිච්චි කරන්න ඕනේ. (උදා: char grade = 'A';)
🧠 Deep Dive: ඇයි අපි 'int' තියෙද්දි 'byte' පාවිච්චි කරන්නේ?

හිතන්න ඔයා හදනවා ලක්ෂ 10ක් ළමයි ඉන්න ඉස්කෝලෙක සිස්ටම් එකක්. හැම ළමයගෙම වයස (0-100 අතර) සේව් කරන්න ඕනේ. ඔයා int age කියලා දැම්මොත් එක ළමයෙක්ට 4 Bytes යනවා (ලක්ෂ 10ට 4MB). හැබැයි ඔයා දන්නවා වයස කවදාවත් 127 පනින්නේ නෑ කියලා. ඒ නිසා ඔයා byte age කියලා දැම්මොත් යන්නේ 1 Byte එකයි (ලක්ෂ 10ට 1MB). ඔන්න ඔය විදියටයි දක්ෂ Software Engineer කෙනෙක් Memory එක ඉතුරු කරන්නේ!

👑 3. String සහ විශේෂ සැසඳීම් (The Special Child)

උඩ කතා කරපු 8 ම Primitive Types. හැබැයි අපිට කෙනෙකුගේ නමක්, ලිපිනයක් වගේ අකුරු ගොඩක් (වාක්‍යයක්) සේව් කරන්න ඕන වුනාම ඒ 8න් එකක්වත් හරියන්නේ නෑ. ඒකට තමයි String එන්නේ. String කියන්නේ Primitive type එකක් නෙමෙයි, ඒක Java වල තියෙන Class එකක්. ඒ නිසා තමයි String කියලා ලියද්දි මුල් අකුර Capital (S) වෙන්නේ.

String myName = "KP Tech Gear"; String message = "Java ඉගෙනගන්න එක මාර ලේසියි!";
🚨 වැදගත්ම රහසක්: String Comparison (The == Trap)

ගොඩක් අලුත් අයට වරදින තැනක් මේක. Java වල ඉලක්කම් දෙකක් සමානද බලන්න == ලකුණ පාවිච්චි කරාට, String දෙකක් (වචන දෙකක්) සමානද බලන්න කවදාවත් == පාවිච්චි කරන්න එපා! ඒකට හේතුව == එකෙන් බලන්නේ ඒ වචන දෙකම RAM එකේ එකම තැනද (Memory Address) තියෙන්නේ කියලයි. ඒ වෙනුවට හැමතිස්සෙම .equals() පාවිච්චි කරන්න ඕනේ.

if (password == "1234") { ... } (මෙහෙම කරන්න එපා)
if (password.equals("1234")) { ... } (මෙහෙම කරන්න)

🔄 4. Type Casting (බලෙන් ජාතිය මාරු කිරීම)

සමහර වෙලාවට අපිට දශම සංඛ්‍යාවක් (double) පූර්ණ සංඛ්‍යාවක් (int) කරන්න වෙනවා. එහෙමත් නැත්නම් int එකක් double කරන්න වෙනවා. මේකට තමයි Casting කියන්නේ. මේක හරියට වතුර භාජන දෙකක් අතරේ වතුර මාරු කරනවා වගේ වැඩක්.

  • Implicit Casting (Widening / ඉබේ වෙන): මේක හරියට පොඩි වීදුරුවක තියෙන වතුර, ලොකු ජෝගුවකට දානවා වගේ. කිසිම වතුර බිඳුවක් බිම වැටෙන්නේ නෑ. (උදා: intdouble). මේක Java ඉබේම කරනවා.
  • Explicit Casting (Narrowing / බලෙන් කරන): මේක හරියට ලොකු ජෝගුවක තියෙන වතුර, පොඩි වීදුරුවකට දාන්න හදනවා වගේ. අනිවාර්යයෙන් වතුර බිම හැලෙනවා (Data Loss). ඒ නිසා Java මේක ඉබේ කරන්නේ නෑ, අපි බලෙන් කෝඩ් එකෙන් කියන්න ඕන "කමක් නෑ, හැලෙන ටික හැලෙන්න දීලා දාපන්" කියලා.
// 1. Implicit Casting (ඉබේම වෙනවා) int mySmallBox = 9; double myBigBox = mySmallBox; // දැන් මේක 9.0 වෙනවා // 2. Explicit Casting (අපි බලෙන් කරනවා) double mySalary = 45000.75; int fixedSalary = (int) mySalary; // අර .75 දශම ටික කපලා දානවා (Data Loss) System.out.println(fixedSalary); // Output එක: 45000 විතරයි!

➕➖ 5. ගණන් හදමු (Operators & Math Class)

Java වල සරල ගණිත කර්ම (+, -, *, /) වලට අමතරව තවත් විශේෂ දේවල් තියෙනවා.

  • % Modulus (මොඩියුලස්): මේකෙන් දෙන්නේ බෙදුවම එන ඉතුරුව. (උදා: 10 % 3 කියන්නේ 10 තුනෙන් බෙදුවම ඉතුරු 1 යි. මේක ඉරට්ටේද ඔත්තේ ද කියලා හොයන්න මාර වැදගත්).
  • ++ Increment (එකකින් වැඩි කිරීම): age = age + 1 කියලා ලියනවට වඩා age++ කියලා ලියන එක ලේසියි.
  • -- Decrement (එකකින් අඩු කිරීම): lives-- (ගේම් එකක පණක් අඩු වෙනවා වගේ).

📐 සංකීර්ණ ගණන් සඳහා Math Class එක

වර්ගමූලය (Square root), බලය (Power) වගේ දේවල් හොයන්න අපි කෝඩ් ලියන්න ඕනේ නෑ. Java වල දැනටමත් හදපු Math කියන ටූල් පෙට්ටියක් තියෙනවා.

int a = 10, b = 20; // වැඩි අගය සහ අඩු අගය හොයමු (Max & Min) System.out.println(Math.max(a, b)); // Output: 20 System.out.println(Math.min(a, b)); // Output: 10 // වර්ගමූලය (Square Root) System.out.println(Math.sqrt(64)); // Output: 8.0 // බලය (Power) - 2 හි 3 වෙනි බලය (2^3) System.out.println(Math.pow(2, 3)); // Output: 8.0 // සසම්භාවී අංකයක් (Random Number) // මේකෙන් දෙන්නේ 0.0 සහ 1.0 අතර දශම අගයක්. ඒක 100න් ගුණ කරොත් 0-100 අතර අගයක් ගන්න පුළුවන්. System.out.println( (int)(Math.random() * 100) );

💻 6. Mega Projects 2ක් හදමු! (Practical Time)

දැන් අපි ඉගෙන ගත්ත සේරම දේවල් පාවිච්චි කරලා ප්‍රොජෙක්ට්ස් 2ක්ම හදමු. Notepad++ එක හරි VS Code එක හරි අරන් මේවා Type කරලා Run කරලා බලන්න.

🎓 Project 1: Advanced Student Profile System

ශිෂ්‍යයෙක්ගේ දත්ත ගබඩා කරලා, ලස්සනට Print කරන වැඩසටහනක්.

public class StudentProfile { public static void main(String[] args) { // 1. Variables හදමු (විවිධ Data Types) String studentName = "Kamal Perera"; int age = 22; double gpa = 3.85; char grade = 'A'; boolean isPassed = true; // 2. Print කරමු (String Concatenation - එකතු කිරීම) System.out.println("========== STUDENT PROFILE =========="); System.out.println("Student Name : " + studentName); System.out.println("Current Age : " + age); System.out.println("Degree GPA : " + gpa); System.out.println("Final Grade : " + grade); System.out.println("Pass Status : " + isPassed); System.out.println("====================================="); // 3. ලබන අවුරුද්දේ වයස (Increment) age++; System.out.println("Next year " + studentName + " will be " + age + " years old."); } }

⚖️ Project 2: BMI Calculator (Casting & Math)

මනුස්සයෙක්ගේ බර සහ උස අරගෙන BMI (Body Mass Index) එක ගණනය කරලා, ඒක දශම නැතුව රවුම් කරලා (Casting) පෙන්නන වැඩසටහනක්.

public class BMICalculator { public static void main(String[] args) { // බර (Kg) සහ උස (Meters) වලින් double weight = 68.5; double height = 1.75; // BMI සූත්‍රය: බර / (උස * උස) double bmi = weight / Math.pow(height, 2); // සම්පූර්ණ දශම අගය Print කිරීම System.out.println("ඔබගේ නිශ්චිත BMI අගය: " + bmi); // අපිට දශම ඕන නෑ, ඒ නිසා ඒක int එකකට බලෙන් Cast කරමු! int finalBMI = (int) bmi; System.out.println("ඔබගේ රවුම් කල BMI අගය: " + finalBMI); } }

🏠 අද ගෙදර වැඩ (Homework)

අපි ඉගෙන ගත්ත දේවල් පාවිච්චි කරලා ඔයා තනියම මේ පොඩි වැඩසටහන හදන්න. බැරි වුනොත් අනිවාර්යයෙන් පහලින් කමෙන්ට් කරන්න, මම උදව් කරන්නම්!

  1. radius කියලා Variable එකක් හදලා ඒකට අගයක් දෙන්න (උදා: 7).
  2. final double PI = 3.14159; කියලා නියතයක් හදන්න.
  3. වෘත්තයේ වර්ගඵලය (Area) සොයන්න. (Area හොයන සූත්‍රය = PI * radius * radius). Math.pow එක පාවිච්චි කරන්නත් පුළුවන්.
  4. උත්තරේ දශම ගොඩක් එයි, ඒක දශම නැතුව int එකක් විදියට Cast කරලා Print කරන්න.

ඊළඟ කොටසින්: "If / Else සහ Logic Gates" පාවිච්චි කරලා පරිගණකයට තීරණ ගන්න උගන්වමු! 🤖🔥

අද ලිපිය ගැන ඔයාගේ අදහස කමෙන්ට් කරන්න අමතක කරන්න එපා. KP Tech Gear සමඟ දිගටම රැඳී සිටින්න! ජය වේවා! 👇

Author

About

Tech enthusiast, Python/Java Developer, and Gamer. Sharing knowledge about coding and modern technology.

Discussion