ប្រភេទទិន្នន័យ
Data Types (ប្រភេទទិន្នន័យ) ក្នុង Java
🗂️ Data Type គឺជាអ្វី?
Data Type កំណត់ប្រភេទនៃទិន្នន័យដែល variable អាចរក្សាទុក និង ទំហំ memory ដែលត្រូវការ។
ឧទាហរណ៍ជីវិតពិត:
- ប្រអប់តូច: ដាក់តែលេខតូចៗ (int)
- ប្រអប់ធំ: ដាក់លេខធំៗ (long)
- ប្រអប់អក្សរ: ដាក់អក្សរ (String)
📊 ពីរប្រភេទធំៗ
ប្រភេទ | ពន្យល់ | ឧទាហរណ៍ | រក្សាទុកនៅ |
---|---|---|---|
Primitive | ទិន្នន័យមូលដ្ឋាន | int, double, boolean | Stack memory |
Reference | ទិន្នន័យស្មុគស្មាញ | String, Array, Object | Heap memory |
🔢 Primitive Types (8 ប្រភេទ)
Type | ទំហំ | ពេលប្រើ | Default | ឧទាហរណ៍ |
---|---|---|---|---|
byte | 1 byte | លេខតូចណាស់ | 0 | -128 ដល់ 127 |
short | 2 bytes | លេខតូចមធ្យម | 0 | -32,768 ដល់ 32,767 |
int | 4 bytes | លេខធម្មតា ⭐ | 0 | -2 billion ដល់ 2 billion |
long | 8 bytes | លេខធំណាស់ | 0L | ច្រើនណាស់ |
float | 4 bytes | ទសភាគ (6-7 digits) | 0.0f | 3.14f |
double | 8 bytes | ទសភាគ (15 digits) ⭐ | 0.0 | 3.141592653589793 |
boolean | 1 bit | true/false | false | true, false |
char | 2 bytes | តួអក្សរតែមួយ | ' ' | 'A', '5', '@' |
💡 ជ្រើសរើស Type យ៉ាងដូចម្តេច?
- int: លេខគត់ធម្មតា (អាយុ, ចំនួន, ពិន្ទុ)
- long: លេខគត់ធំ (លេខទូរស័ព្ទ, ប្រជាជន)
- double: លេខទសភាគ (តម្លៃ, ទម្ងន់, កម្ពស់)
- boolean: ពិត/មិនពិត (status, flags)
- char: តួអក្សរតែមួយ (ថ្នាក់, ជំរើស)
Java Code
Click "Run" to execute the Java code
🔤 Reference Data Types
📦 Reference Types គឺជាអ្វី?
Reference types រក្សាទុក address/reference ទៅកាន់ទិន្នន័យ មិនមែនទិន្នន័យផ្ទាល់ខ្លួនទេ។
🆚 Primitive vs Reference
លក្ខណៈ | Primitive | Reference |
---|---|---|
រក្សាទុក | តម្លៃផ្ទាល់ | Address/Reference |
Memory | Stack | Heap (object ក្នុង heap) |
Default value | 0, false, etc. | null |
Methods | គ្មាន | មាន methods |
ឧទាហរណ៍ | int, double, boolean | String, Array, Object |
🎯 Reference Types ញឹកញាប់:
1. String
String name = "Hello";
String greeting = new String("Hi");
Special: String មាន methods ច្រើន (length(), toUpperCase(), charAt())
2. Arrays
int[] numbers = {1, 2, 3, 4, 5};
String[] names = new String[3];
3. Classes
Scanner scanner = new Scanner(System.in);
ArrayList list = new ArrayList<>();
🧠 Memory ដំណើរការយ៉ាងដូចម្តេច?
// Primitive
int x = 10; // Stack: x = 10 (តម្លៃផ្ទាល់)
// Reference
String name = "Java";
// Stack: name = address (ឧ: 0x100)
// Heap: address 0x100 → "Java"
⚠️ null Value
Reference types អាចជា null
(គ្មានតម្លៃ)។
String name = null; // ✅ អាចធ្វើបាន
int age = null; // ❌ កំហុស - primitives មិនអាច null
Java Code
Click "Run" to execute the Java code
🔄 Type Conversion (ការប្តូរប្រភេទ)
📐 ពីរប្រភេទ Conversion
1️⃣ Implicit Conversion (Widening) - ស្វ័យប្រវត្តិ
ពី type តូច → type ធំ (គ្មានបាត់បង់ទិន្នន័យ)
byte → short → int → long → float → double
int myInt = 100;
double myDouble = myInt; // ស្វ័យប្រវត្តិ 100.0
2️⃣ Explicit Conversion (Narrowing) - Casting
ពី type ធំ → type តូច (អាចបាត់បង់ទិន្នន័យ)
double myDouble = 9.99;
int myInt = (int) myDouble; // 9 (បាត់ .99)
📊 Conversion Table
From | To | ប្រភេទ | ឧទាហរណ៍ |
---|---|---|---|
int | double | Implicit | int x = 10; double y = x; |
double | int | Explicit | double x = 9.8; int y = (int)x; |
int | String | Method | String.valueOf(123) |
String | int | Method | Integer.parseInt("123") |
🔢 String ↔ Number Conversion
// String → Number
String numStr = "123";
int num = Integer.parseInt(numStr); // 123
double price = Double.parseDouble("99.99"); // 99.99
// Number → String
int age = 25;
String ageStr = String.valueOf(age); // "25"
String ageStr2 = Integer.toString(age); // "25"
String ageStr3 = "" + age; // "25" (concatenation)
⚠️ Conversion Errors
// NumberFormatException
String text = "abc";
int num = Integer.parseInt(text); // ❌ Error!
// Data loss
double price = 99.99;
int rounded = (int) price; // 99 (បាត់ .99)
💡 Best Practices
- ប្រើ int សម្រាប់លេខគត់ធម្មតា
- ប្រើ double សម្រាប់លេខទសភាគ
- ប្រើ boolean សម្រាប់ true/false
- ប្រើ String សម្រាប់អក្សរ
- Casting: ប្រុងប្រយ័ត្ន data loss!
- Parsing: handle exceptions!
Java Code
Click "Run" to execute the Java code