Professional Documents
Culture Documents
Preview 6
Program ဆiuတ+ဘ+လ- 6
Java ဆiuတ+ဘ+လ- 7
Object Oriented Programming 7
Strong Type Programming 8
Java ဟ+ဘယ#လiu eပ2eပ3က#လ+ခ-6သလ- 8
Inheritance 108
Inheritance ဆiuတ+ဘ+လ- 108
Inheritance လuပ#လiuရတ+eတ&ကဘ+eတ&လ- 110
Usage of Inheritance 114
Composition 115
Using Composition 116
Abstraction 117
ဘ+eFကင#6 Abstraction ကiu အသuB$Cပuရတ+လ- 117
Abstraction Cဖစ#eအ+င#ဘယ#လiueရ$မလ- 119
Abstraction ကiu သuB$တ-6အတ&က# ဘ+Cဖစ#မလ- 124
Polymorphism 125
Object တစ#ခuကiu Reference အမGiu$မGiu$ကeန Reference လuပ#eနAiuင#Cခင#$ 125
Override eFက+င#6 Object ပuBစBအမGiu$မGiu$eရ$သ+$Aiuင#Cခင#$ 126
မHန#ကန#eသ+ Override Rules မG+$ 130
Override AHင#6 Overload 132
Polymorphism ရ-I အကGiu$မG+$ 135
Enum 152
Before Enum 152
After Enum 153
What can we do with Enum? 154
Generics 169
Before Generics 169
After Generics 173
Writing Generics 177
Using Generics Type Objects 186
How Generics Work! 192
Generics မH+ လuပ#လiuမရeသ+ အရ+မG+$ 199
Preview
Programming တစ#ခuကiu eလ6လ+မယ#ဆiuရင# အရင#ဆuB$FကuBeတ&JရမH+က ဘယ#ကeန ဘယ#လiu စKပ?$ eလ6လ+သင#6
တယ#ဆiuတ+ကiu eဝခ&-ရခက#တ-6အပiuင#$ပ-Cဖစ#ပ3တယ#။ အထO$သCဖင#6 Java ကiu eလ6လ+ရင# ဒ?Cပဿန+ကiu ပiuKပ?$ FကuBeတ&J
ရမH+ပ3။ ဘ+လiuလ-ဆiueတ+6 Java န-9 eရ$သ+$လiuရတ-6အပiuင#$eတ& အမG+$Pက?$Qiတ-6အတ&က# စ+အuပ#eတ&လ- အမG+$Pက?$Qi
သလiu၊ Framework eတ&လ- အမG+$Pက?$ပ-။ အ-6ဒ?eတ+6 ဘ+Kပ?$ရင# ဘယ#လiueလ6လ+ရမယ#ဆiuတ+ အမတန# အခက#
eတ&Jမည#6အရ+eတ& Cဖစ#ပ3တယ#။
Program ဆiuတ+ဘ+လ-
Java ဆiuတ+ဘ+လ-
Java န-9 ဘ+eတ& eရ$လiuရလ-
Java ကiu eရ$ဖiuဘ+eတ&လiuအပ#လ-
ဒ?စ+အuပ#န-9 ဘ+eတ&eလ6လ+Aiuင#မH+လ-
Program ဆiuတ+ဘ+လ-
IT န-9ပတ#သက#တ-6 အရ+eတ&ကiu eလ6လ+ဖO$သOeတ& အတ&က#ကeတ+6 မထO$ဆန#$eပမ-6 ဒ?eလ+ကထ-က လOeတ&
မဟuတ#ရင#eတ+6 မသieသ$တ+Cဖစ#Aiuင#ပ3တယ#။ Program ဆiuတ+က အစ?အစT#ပ3။ ဒ3eပမ-6 ဒ?eနရ+မH+ eCပ+eနတ+
က Computer Program တစ#ခuကiueCပ+တ+ပ3။ Computer ကiu ဘ+eတ&လuပ#ရမယ#လiu ခiuင#$eစAiuင#တ-6 အမiန#9eပ$
ခGက#eတ&ကiu စuစည#$eရ$သ+$ထ+$တ-6 အစ?အစT#တစ#မGiu$ Cဖစ#ပ3မယ#။
တဖန# Search Box ထ-ကeန Q+ eဖ&ခGင#တ-6 Keyword ကiu Uiuက#Kပ?$ Enter Key ကiu Uiuက#လiuက#ရင# သက#ဆiuင#ရ+
Search Engine ကiu သuB$Kပ?$ Q+eဖ&eတ&JQiခGက#eတ&ကiu Bowser eပ2မH+ လ+Cပeပ$မH+ Cဖစ#ပ3တယ#။ ဒ3လ- Internet
ထ-မH+ Qiတ-6 Web Resources eတ&ကiu Q+eဖ&Kပ?$ Browser eပ2မH+ လ+Kပ?$ CပသAiuင#eအ+င# အမiန#9eပ$စ+eတ&ကiu
eရ$သ+$ ထ+$လiuCဖစ#ပ3တယ#။
အeCခခBအ+$Cဖင#6eတ+6 User န-9 Interact လuပ#ဖiu Input / Output Device eတ&Qiမယ#။ Kပ?$ရင# အတ&င#$ပiuင#$မH+ အလuပ#
လuပ#ဖiuအတ&က# CPU တiu RAM တiuQiမယ#၊ အခGက#အလက#eတ&ကiu သiမ#$ထ+$Aiuင#ဖiu HDD eတ&ပ3QiFကပ3မယ#။
Program တစ#ခuဟ+ အလuပ#လuပ#eနKပ? ဆiuရင# အ-6ဒ? အမiန#9eတ&ဟ+ RAM အeပ2ကiu eရ+က#Qiလ+Kပ?$ User Input
eတ&အeပ2မH+ မOတည#Kပ?$ ဘယ#လiuလuပ#ရမယ#ဆiuတ+ကiu CPU ကeနတဆင#6 သက#ဆiuင#ရ+ Device eတ&ကiu Handle
လuပ#Kပ?$ ခiuင#$eစeပ$မH+ Cဖစ#ပ3တယ#။
CPU eတ&ဟ+ Machine Language eတ&Cဖစ#တ-6 Binary Code eတ&ကiuသ+ န+$လည#တ+Cဖစ#ပ3တယ#။ အ-6ဒ?
အတ&က# CPU eတ&ကiu ခiuင#$eစမယ#ဆiuရင#eတ+6 Machine Language eတ&န-9 ခiuင#$eစရမH+ Cဖစ#ပ3တယ#။ အ-6ဒ?လiu
လOက န+$လည#ရခက#ခ-တ-6 eရ$သ+$ထ+$တ-6 Programming Language eတ&ကiu Low Level Language eတ&လiu
eခ2ပ3တယ#။
အ-6ဒ?လiu Programming Language eတ&ကiueတ+6 High Level Language eတ&လiueခ2Fကပ3တယ#။ Java ဟ+လ-
လOကန+$လည#လ&ယ#တ-6 eရ$သ+$ပuBeတ&န-9 eရ$သ+$Aiuင#တ-6 High Level Programming Language တစ#မGiu$Cဖစ#ပ3
တယ#။
Java ဆiuတ+ဘ+လ-
Java ဆiuတ+ လOကန+$လည#ရလ&ယ#တ-6 eရ$သ+$ပuBန-9 eရ$သ+$ထ+$တ-6 High Level Programming Language
အမGiu$အစ+$တစ#ခuCဖစ#ပ3တယ#။ eန+က#Kပ?$ Object Oriented Programming (OOP) ကiu အeCခခBထ+$တ-6
Programming Language တစ#ခuလ- Cဖစ#ပ3တယ#။ Kပ?$eတ+6 Strong Type Programming Language လiuလ-
eCပ+eလ6Qiပ3တယ#။ Kပ?$eတ+6 Java Programming ဆiuတ+ ဘယ#လiu eပ2eပ3က#လ+ခ-6ရသလ- ဆiuတ+ကiu eဖ2Cပသ&+$
ပ3မယ#။
ပuBမHန#အ+$Cဖင#6eတ+ Program တစ#ခuမH+ Data eတ&န-9 Function eတ&ပ3ဝင#တယ#လiu မHတ#Aiuင#မH+ Cဖစ#တယ#။ ဒ3eပမ-6
OOP မH+eတ+6 Data eတ& Function eတ&လiu မCမင#ပ- Object eတ&လiu သတ#မHတ#Kပ?$ အသuB$Cပuပ3တယ#။ Kပ?$eတ+6 အ-6
ဒ? Object eတ&အခGင#$ခGင#$ Communicate လuပ#Cခင#$အ+$Cဖင#6 မiမiလiuအပ#တ-6 Application ကiu Cဖစ#eအ+င# eရ$သ+$
သ&+$တ+ပ- Cဖစ#ပ3တယ#။
Strong Type န-9 Dynamic Type ဘယ#ဟ+ ပiueက+င#$လ-လiu အCငင#$ပ&+$စရ+Qiပ3တယ#။ ဘယ#အရ+မဆiu eက+င#$
တ+eတ&လ-Qiသလiu မeက+င#$တ-6အခGက#eတ&လ- QieနKမ-ပ3ပ-။ Dynamic Type eတ&ဟ+ Type eတ&ကiu သတ#မHတ#စရ+
မလiuတ-6အတ&က# eရ$သ+ရလ&ယ#ကOတတ#တ-6 အခGက#Qiပ3တယ#။ ဒ3eပမ-6 Type မH+$Kပ?$ သuB$မiရင# Runtime ကGမH သiရ
eလ6Qiတ-6အတ&က# Release လuပ#Kပ?$မH မH+$မHန#$သiAiuင#တ-6 အ+$နည#$ခGက#Qiပ3တယ#။
Strong Type eတ&ဟ+ eရ$သ+$ရခက#ခ-တယ#ဆiueပမ-6 Compile Time မH+ကထ-က Type မH+$eနတ+ကiu သiAiuင#တ-6
အတ&က# Runtime အခGiန#ကGမH Type မH+$တယ#ဆiuတ+ Cဖစ#စရ+မQiပ3ဘO$။ အ-6ဒ?လiu Type ကiu အeသအခG+ သတ#မHတ#
Kပ?$ အသuB$Cပuရတ-6အတ&က# အလuပ#လuပ#eနခGiန#မH+ Memory ကiu ဘယ#eလ+က# သuB$ရမယ#ဆiuတ+ကiu အတiအကG
တ&က#ခGက#eပ$Aiuင#တ-6အတ&က# Performance မH+ ပiueက+င#$မ&န#eစAiuင#ပ3တယ#။
ဒ3eပမ-6 အ-6ဒ?လiueရ$သ+$ရင#$ C++ ဟ+ Electric Power ကiu အမတန#လiuအပ#တ-6အတ&က# OOP ကiu အeCခခBတ-6
eန+က#ထပ# Language အသစ#တစ#ခu eရ$သ+$ခ-6FကCခင#$Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 Java ရ-I eရ$သ+$ပuBအeတ+#မG+$
မG+$ဟ+ Cညည န-9 ဆင#တOeနFကတ+Cဖစ#ပ3တယ#။ Java ကiu စတင#eရ$သ+$စT#က OAK လiueခ2ဆiuခ-6Fကeပမ-6 OAK
ဆiuတ-6 Product ဟ+ အCခ+$တeနရ+မH+ အသuB$Cပueနတ+Qiတ-6အတ&က# Java လiueCပ+င#$Kပ?$ eခ2ဆiuခ-6Fကတ+Cဖစ#ပ3
တယ#။
1991 ခuAHစ#ကထ-က OAK ဆiuတ-6အမည#န-9 စတင#ခ-6တ-6 Java ဟ+ 1996 ခuAHစ#မH+ တရ+$ဝင# Release လuပ#လ+Aiuင#ခ-6
ပ3တယ#။ လက#Qi 2017 ခu 2 လပiuင#$အခGiန#မH+eတ+6 Java Version ဟ+ 1.8 Cဖစ#Kပ?$ ဒ?AHစ#ထ-မH+ပ- 1.9 ကiu Release
လuပ#မယ#လiu eFက+#Cင+ထ+$ပ3တယ#။
Java EE ကiu eလ6လ+Kပ?$ Web Application eတ& Cooperation eတ&မH+ သuB$မည#6 Enterprise Application eတ&
ကiu eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။ Java EE ကiu eလ6လ+မယ#ဆiuရင# အရင#ဆuB$ Java SE ကiu eလ6လ+ထ+$မH Cဖစ#ပ3
မယ#။
Android မeပ2ခင# eခတ#စ+$ခ-6တ-6 Java Phone ရ-I Application eတ&ကiu eရ$သ+$မယ#ဆiuရင#လ- Java ME ကiu
အသuB$CပuရမH+ Cဖစ#ပ3တယ#။
တဖန# Android ဟ+လ- Android Platform eပ2မH+ အလuပ#လuပ#တ+ဆiueပမ-6 eရ$သ+$ထ+$တ-6 Language eနရ+မH+
Java ကiu အသuB$Cပuထ+$တ+ Cဖစ#တ-6အတ&က# Android Application eတ&ကiu eရ$သ+$မယ#ဆiuရင#လ- Java SE ကiu ပiuင#
ပiuင#Aiuင#Aiuင#သiQiထ+$ဖiuလiuအပ#ပ3တယ#။
ဒ3eFက+င#6 Java SE ကiu eလ6လ+ထ+$ရင# Desktop Application မGiu$ကiu eရ$သ+$Aiuင#မH+Cဖစ#Kပ?$ Web Application
eတ& Enterprise Application eတ&၊ Embedded Application eတ&န-9 Android Application တiuကiu ဆက#လက#
eလ6လ+Aiuင#eစရန# အeထ+က#အကOCပuမH+ Cဖစ#ပ3တယ#။
Java ကiueရ$ဖiuဘ+eတ&လiuအပ#လ-
Java ကiueရ$ဖiuဘ+eတ&လiuအပ#သလ- ဆiuတ-6အခGက#ကiu မသ&+$eသ$ခင# Java Program ကiu ဘယ#လiueရ$Kပ?$ ဘယ#လiu
အလuပ#လuပ#eစတ+လ- ဆiuတ+ကiu အရင#eလ6လ+သ&+$ပ3မယ#။
eရ$သ+$ထ+$တ-6 Source File eတ&ကiu Java Compiler ကiu အသuB$CပuKပ?$ Compile လuပ#ရပ3မယ#။ Compile လuပ#Kပ?$
တ-6အခ3မH+ class file eတ&ကiuရQiပ3မယ#။ class file eတ&ဟ+ java byte code eတ&န-9eရ$သ+$ထ+$တ+Cဖစ#Kပ?$ လO
ကeတ+6 ဖတ#Kပ?$ န+$လည#မH+ မဟuတ#eတ+6ပ3ဘO$။
ရQiလ+တ-6 Class File eတ&ကiu Java Virtual Machine (JVM) eတ&eပ2မH+ အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။ Java
Class File eတ&ဟ+ OS eပ2မH+ တiuက#Uiuက# အလuပ#လuပ#တ+မဟuတ#ပ-၊ JVM eတ&eပ2မH+ အလuပ#လuပ#Kပ?$ JVM က
တဆင#6 OS ကiu ခiuင#$eစမH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 JVM သ+Qiမယ#ဆiuရင# Java Class File eတ&ဟ+ ဘယ# OS
eပ2မH+ မဆiuအလuပ#လuပ#မH+ Cဖစ#ပ3တယ#။
ဒ?အခGက#eFက+င#6 Java ဟ+ “Write Once Run Anywhere” ဆiuKပ?$ Programming eလ+ကမH+ eအ+င#Cမင#လ+ခ-6ရ
Cခင#$လ-Cဖစ#ပ3တယ#။
JRE eက+ JDK ပ3 Oracle ရ-I တရ+$ဝင# Web Site ကeန Download လuပ#လiuရAiuင#ပ3တယ#။
ဒ?စ+အuပ#န-9 ဘ+eတ&ကiueလ6လ+Aiuင#မလ-
Easy Java ဟ+ Java ကiu စတင#eလ6လ+သOeတ&ကiu အလ&ယ#တကOeလ6လ+Aiuင#eအ+င# ရည#ရ&ယ#Kပ?$ eရ$သ+$ထ+$တ-6
စ+အuပ#တစ#အuပ#Cဖစ#ပ3တယ#။ ပ3ဝင#မည#6 အeFက+င#$အရ+eတ&ကeတ+6 eအ+က#ပ3 အတiuင#$ Cဖစ#ပ3တယ#။
Language Fundamentals
အ-6ဒ?အတ&က# Java ကiu eရ$သ+$ရ+မH+ မQiမCဖစ#လiuအပ#တ-6 Language eရ$သ+$ပuBစည#$မGT#$eတ&ကiu စuစည#$ eဖ2Cပ
သ&+$ပ3မယ#။ Class ဆiuတ+ဘ+လ-။ Object ဆiuတ+ဘ+လ-။ Kပ?$eတ+6 Class တစ#ခuကiu ဘယ#လiueရ$ရသလ-။ Kပ?$
Environment Preparation
Java Programming eရ$သ+$ဖiuအတ&က# လiuအပ#တ-6 ပတ#ဝန#$ကGင# Cပင#ဆင#မ[eတ&ကiu eဖ2Cပသ&+$ပ3မယ#။ က\န#eတ+#
တiu ဒ?စ+အuပ#မH+eတ+6 Eclipse IDE ကiu အသuB$CပuKပ?$ ပတ#ဝန#$ကGင#ကiu ဘယ#လiuCပင#ဆင#မယ#။ Kပ?$eတ+6 IDE ရ-I
အသuB$ဝင#eတ+6 Short Cut eတ&ရ-I အသuB$CပuပuBeတ&၊ Template eတ&ကiu ကiuယ#တiuင#eရ$သ+$ အသuB$CပuပuBeတ&ကiu eဖ2Cပ
သ&+$ပ3မယ#။
References
ဒ?စ+အuပ#လiu eရ$သ+$ရ+မH+ အသuB$Cပuခ-6တ-6 References စ+အuပ#eတ&ကeတ+6 eအ+က#ပ3အတiuင#$Cဖစ#ပ3တယ#။
Language Fundamentals
ပတ#ဝန#$ကGင# Cပင#ဆင#မ[အeFက+င#$ကiu eလ6လ+Kပ?$တ-6eန+က#မH+ ဆက#လက#Kပ?$ Java Programming ကiu ဘယ#လiu
eရ$သ+$ရတယ#ဆiuတ-6 အပiuင#$ကiu eလ6လ+သ&+$Fကပ3မယ#။ Java န-9 Programming ကiu eရ$သ+$တ-6 eနရ+မH+
eရ$သ+$Aiuင#တ-6 Class eတ&၊ Method eတ& Variable eတ& Kပ?$eတ+6 Enum eတ& Generics eတ&Qiပ3တယ#။ တဖန#
Programming Logic ကiu eရ$သ+$ဖiuအတ&က# လiuအပ#တ-6 Operators eတ& Kပ?$eတ+6 Statement လ- Qiပ3တယ#။ ဒ3
eတ&ကiu ဒ?အခန#$မH+ eလ6လ+သ&+$Aiuင#ပ3တယ#။
What is A Class
Anatomy of a Class
Visibility and Accessibility
Java Data Types
Using Arrays
Operators
Statements
What is Class
Class ဆiuတ+ Programming Unit တစ#ခuCဖစ#ပ3တယ#။ လiuအပ#တ-6 Function eတ&ကiu eရ$သ+$လiuတ-6အခ3မH+လ-
Class ကiu eရ$Kပ?$ အ-6ဒ? Class ထ-မH+ Function eတ&ကiueရ$သ+$ရပ3မယ#။ Java Programming မH+ Function
eတ&ကiu Method လiueခ2eလ6Qiပ3တယ#။
တဖန# Class eတ&ဟ+ Object တစ#ခuမH+ပ3တ-6 State eတ&န-9 Behavior eတ&ကiu သတ#မHတ#eပ$Aiuင#ပ3တယ#။ Object
ထ-မH+ ပ3သင#6တ-6 State eတ&ကiu Variable eတ&န-9 သတ#မHတ#Kပ?$ Behavior eတ&ကiueတ+6 Method eတ&န-9 eရ$သ+$
eဖ2CပရမH+ Cဖစ#ပ3တယ#။
Anatomy of a Class
Java Programming ကiu စKပ?$eရ$သ+$eတ+6မယ#ဆiuရင# Class ကeန စKပ?$ eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ က\န#eတ+#
တiu ဒ?eနရ+မH+ Java Class တစ#ခuကiu ဘယ#လiu eရ$သ+$ရမယ#ဆiuတ+ကiu eလ6လ+သ&+$မH+ Cဖစ#ပ3တယ#။ အရင#ဆuB$
Class တစ#ခuကiu မမH+$eအ+င# ဘယ#လiueရ$သ+$ရမလ- ဆiuတ+ကiu eလ6လ+သ&+$Kပ?$၊ Class ထ-မH+ ဘ+eတ& eရ$လiuရ
တယ#၊ Kပ?$eတ+6 ဘယ#လiu အသuB$Cပuရတယ#ဆiueတ+ကiu eလ6လ+သ&+$ပ3မယ#။
Minimum Requirements
Class တစ#ခuကiu မမH+$eအ+င#eရ$တယ#ဆiuတ+က Compile လuပ#လiuက#တ-6အခ3မH+ Error မCဖစ#eအ+င# eရ$Aiuင#တ+ကiu
ဆiuလiuတ+ Cဖစ#ပ3တယ#။
class keyword
class keyword ဟ+ Class တစ#ခuCဖစ#eFက+င#$ကiu သတ#မHတ#eပ$eနတ-6 keyword Cဖစ#ပ3တယ#။ Class တစ#ခuကiu
eရ$သ+$ရ+မH+ မCဖစ#မeနပ3ဝင#ရမည#6 အရ+တစ#ခuCဖစ#ပ3တယ#။ Java ဘ+သ+ရပ#ဟ+ Case Sensitive Cဖစ#တ-6
အတ&က# Lower Case eတ&Cဖစ#တ-6 class လiuသ+eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ Class လiueရ$သ+$မယ#ဆiuရင#
keyword အeနန-9 အသiအမHတ#CပuမH+ မဟuတ#ပ3ဘO$။ Kပ?$eတ+6 CLASS လiuလ- eရ$သ+$လiuမရပ3ဘO$။
Identifier
HelloJava ကeတ+6 Class Name Cဖစ#Kပ?$ Identifier လiueခ2ပ3တယ#။ Class ကiu ဘယ#လiueခ2eဝ2မလ- ဆiuတ+ကiu
သတ#မHတ#eပ$တ+ပ3။ အCခခBအ+$Cဖင#6eတ+6 Class Name eတ&ကiu Noun eတ&ကiu အသuB$CပuKပ?$ eရ$သ+$eလ6Qiပ3
တယ#။ Upper Case န-9 စKပ?$eရ$သ+$eပ$ရပ3မယ#။ Noun eတ&ကiu ၂ ခuတ&-Kပ?$ eရ$သ+$မယ#ဆiuရင#eတ+6 (Hello န-9
Java) ဒuတiယ Noun ရ-I အစစ+လuB$ကiu Upper Case န-9 eရ$သ+$သင#6ပ3တယ#။ Camel Case eရ$သ+$ပuBလiu eခ2
eလ6Qiပ3တယ#။
Class Name ကiu Lower Case ကiu သuB$လiuမရဘO$လ+$။ Camel Case န-9 မeရ$လiuမရဘO$လ+$ဆiueတ+6 မeရ$ရင#လ-
ရပ3တယ#။ Compiler Error တက#မH+ မဟuတ#ပ3ဘO$။ ဒ3eပမ-6 စနစ#ကGတ-6 eရ$သ+$ပuBeတ+6 မဟuတ#ပ3ဘO$။ Team
Development လuပ#တ-6 အခ3eတ&မH+ ဆiuရင# သတ#မHတ#ထ+$တ-6 စည#$ကမ#$eတ&ကiu လiuက#န+Kပ?$eရ$သ+$တ+ဟ+
eက+င#$တ-6 အကGင#6Cဖစ#ပ3တယ#။
Class Name Identifier eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ Java ရ-I Keyword eတ&ကiu အသuB$Cပuလiuမရပ3ဘO$။
Unicode Charactor eတ&၊ Currency Code eတ&၊ Number eတ&န-9 Under Score ကiu အသuB$CပuKပ?$ eရ$သ+$Aiuင#ပ3
တယ#။ ဒ3eပမ-6 Number eတ&န-9 စKပ?$ eရ$သ+$လiuမရပ3ဘO$။
Class Body
အတ&န#9က&င#$ အဖ&င#6န-9 အပiတ#ကeတ+6 Class Body Cဖစ#ပ3တယ#။ class တစ#ခuကiu eရ$သ+$တ-6 အခ3မH+ Class Body
ကiu မCဖစ#မeနeရ$သ+$ရပ3မယ#။ Class Body အတ&င#$မH+eတ+6 Class ထ-မH+ ပ3eစခGင#တ-6 အရ+eတ&ကiu eရ$သ+$ရ
မH+ Cဖစ#ပ3တယ#။
Class Declaration
အထက#eဖ2Cပပ3အတiuင#$ keyword, Class name Identifier န-9 Class Body တiuသ+ပ3မယ#ဆiuရင# Java Compiler
ကeန မHန#ကန#တ-6 Class တစ#ခuအCဖစ# အသiအမHတ#CပuမH+ Cဖစ#ပ3တယ#။ ဒ?eဖ2CပပuBကeတ+6 Class တစ#ခuအတ&က# အ
န-ဆuB$လiuအပ#ခGက#eတ& Cဖစ#Fကပ3တယ#။ ဒ3eပမ-6 Class တစ#ခuမH+ eရ$သ+$မယ#ဆiuရင# အCခ+$eရ$သ+$Aiuင#တ+eတ&Qiပ3
eသ$တယ#၊ ဆက#လက#Kပ?$ eလ6လ+သ&+$Fကပ3မယ#။
Modifiers
အထက#ပ3ပuBတ&င#ပ3ဝင#eသ+ public န-9 final တiuဟ+ Modifier eတ&Cဖစ#Fကပ3တယ#။ Modifier ဆiuတ+ဟ+ Default
အရည#အeသ&$eတ&ကiu CပuCပင#လiuတ-6အခ3 (Modify) အသuB$CပuAiuင#eသ+ အရ+မG+$Cဖစ#ပ3တယ#။ Modifier eတ&ကiu
Access Modifier န-9 Non Access Modifier ဆiuKပ?$ ၂ မGiu$ခ&-Cခ+$Aiuင#ပ3တယ#။ နမOန+ထ-တ&င#ပ3ဝင#eသ+ public ဆiu
တ+ဟ+ Access Modifier တစ#ခuCဖစ#Kပ?$ Student Class ကiu မည#သည#6 eနရ+မHမဆiu အသuB$CပuAiuင#eFက+င#$
သတ#မHတ#eပ$eနပ3တယ#။
✴ Access Modifier န-9 ပတ#သက#Kပ?$ Modifier အခန#$AHင#6 OOP ရ-I Encapsulation အခန#$တiuမH+ အeသ$စiတ#
eဖ2Cပသ&+$ပ3မယ#။
final ဆiuတ+ကလ- Non Access Modifier တစ#ခuCဖစ#ပ3တယ#။ final လiueရ$သ+$လiuက#တ+န-9 Student Class ဟ+
final class Cဖစ#သ&+$Kပ?$ Student Class ကiu အCခ+$ Class eတ&ကလ+Kပ?$ Extends လuပ#လiuရeတ+6မH+ မဟuတ#ပ3
ဘO$။
အထက#ပ3ပuBမH+ Student extends Person လiueရ$သ+$ထ+$တ-6အတ&က# Student ဟ+ Person Class ကiu Extends လuပ#ထ+$
တယ#လiu eဖ2Cပထ+$ပ3တယ#။ ဒ36eFက+င#6 Student is A Person Cဖစ#သ&+$ပ3မယ#။
Implements Interface
Class တစ#ခuဟ+ Interface eတ&ကiu Implement လuပ#Aiuင#Kပ?$ implements keyword eန+က#မH+ Implement လuပ#လiuတ-6
Interface eတ&ကiu eက+#မ+ ခBKပ?$eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။ Interface Implementation eတ&ကiu အKမ-တမ#$ Class
Extension eတ&ရ-Ieန+က#မH+ eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ Class တစ#ခuဟ+ Class တစ#ခuထ-ကiuသ+ Exends လuပ#ပiuင#ခ&င#6Qieပမ-6
Interface eတ&ကiueတ+6 တစ#ခuထက#မက Implements လuပ#ပiuင#ခ&င#6Qiပ3တယ#။
Class Members
Class Body အတ&င#$မH+ eရ$သ+$လiuရတ-6အရ+eတ&ကeတ+6 Class Members eတ&Cဖစ#ပ3တယ#။ ဒ3Cဖင#6 Class
Body ထ-မH+ ဘ+eတ&eရ$လiuရလ-။
1. Variables
2. Methods
3. Constructors
4. Nested Classes and Interfaces
5. Nested Enums
Variables
Variable ဟ+ဘ+လ-လiueCပ+ရမယ#ဆiuရင# က\န#eတ+#တiu အလယ#တန#$eလ+က#မH+ သင#ခ-6ဘO$တ-6 မသiကiန#$ တစ#ခuန-9
တOပ3တယ#။ မသiတ-6 ကiန#$တစ#ခuကiu x လiueပ$Kပ?$ x eနရ+ကiu 10 လiueပ$လiuက#ရင# x ကiu 10 လiuထ+$Kပ?$ တ&က#ခ-6Fကတ+
ကiu မHတ#မiပ3ဦ$မယ#။ Java ရ-I variable ဟ+လ- ဒ?သeဘ+ပ3ပ-။ ဒ3eပမ-6 Java မH+က Variable ကiu အသuB$CပuခGင#ရင#
သuB$ပ3မယ#ဆiuKပ?$ eဖ2Cပeပ$ရပ3တယ#။ အ-6ဒ3ကiu Variable Declaration လiu eခ2ပ3တယ#။ Variable တစ#ခuကiu
Declare လuပ#တ-6 eနရ+မH+ Variable Type ရယ# Variable Name ကiu eဖ+#Cပeပ$ဖiuလiuအပ#ပ3တယ#။
eန+က#Kပ?$ Java Class eတ&ထ-မH+ Variable eတ&ကiu Pကiuက#တ-6 eနရ+မH+ Declare လuပ#Kပ?$ အသuB$CပuAiuင#ပ3တယ#။
က\န#eတ+#တiu Variable eတ&ကiu eလ6လ+တ-6eနရ+မH+ eအ+က#ပ3အခGက#eတ&ကiu သiထ+$ဖiuလiuအပ#ပ3တယ#။
int တiu char တiuလiu Primitive Data Type eတ&ကiuလ- Type အCဖစ# အသuB$CပuAiuင#သလiu String တiuလiu Java API က
Cပင#ဆင#ထ+$တ-6 Class eတ&ကiuလ- Type အCဖစ#အသuB$CပuAiuင#ပ3တယ#။ ဒ36အCပင# User က eရ$သ+$ထ+$တ-6 Class
eတ&ကiuလ- Type အCဖစ# အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Global Variables
Class Body eအ+က#တည#6တည#6မH+ eရ$ထ+$တ-6 Variable eတ&ဟ+ Global Variable eတ&Cဖစ#Fကပ3တယ#။ အ-6ဒ?
Variable eတ&ကiu Class အတ&င#$Pကiuက#တ-6eနရ+မH+ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ ဒ?eနရ+မH+ အ-6ဒ? Variable eတ&ကiu
အသuB$CပuAiuင#တ-6 အခGiန# အတiuင#$အတ+ဆiuတ+ကiuလ- သiဖiuလiuအပ#ပ3တယ#။ ဒ3ကiueတ+6 eန+က#မH+ ဆက#Kပ?$ Qင#$Cပသ&+$
ပ3မယ#။
class Student {
String name;
အထက#ပ3အတiuင#$ Student Class ရ-I Class Body eအ+က#မH+ String name လiueရ$ထ+$တ+ဟ+ String Type
Variable Cဖစ#တ-6 name ဆiuတ-6 Variable တစ#ခuကiu eရ$သ+$လiuက#တ+ပ3ပ-။ Class Body eအ+က#မH+ eရ$သ+$ထ+$
တ+ Cဖစ#တ-6 အတ&က# ဒ3ဟ+ Global Variable Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 name variable ကiu showName method ထ-ကeနလ- အသuB$CပueနAiuင#တ+ Cဖစ#ပ3တယ#။ Global
Variable eတ&ကiuဆiuရင# Class တစ#ခuလuB$ကeန အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Global Variable eတ&မH+ Value ကiu သတ#မHတ#မထ+$ဘO$ဆiuရင# Compiler ကeန Default တန#ဖiu$ကiu သတ#မHတ#
eပ$မH+ Cဖစ#ပ3တယ#။ Number eတ&ရ-I Default တန#ဖiu$ဟ+ 0 Cဖစ#Kပ?$၊ boolean eတ&ရ-I Default တန#ဖiu$ဟ+ false
Cဖစ#ပ3တယ#။ Object eတ&ရ-I Default တန#ဖiu$ကeတ+6 null Cဖစ#ပ3တယ#။
Instance Variable
Instance Variable eတ&ဆiuတ+ကeတ+6 Object eတ&မH+ အသuB$CပuခGင#တ-6 Variable eတ&Cဖစ#ပ3တယ#။ Class တစ#ခu
ကiu eရ$သ+$ရတ-6 အဓiက ရည#ရ&ယ#ခGက#ဟ+ Object eဆ+က#ဖiuဆiuတ+ Cဖစ#တ-6 အတ&က# Default အတiuင#$ဆiuရင#
Global Variable eတ&ဟ+ Instance Variable eတ& Cဖစ#Fကပ3တယ#။
Global Variable Cဖစ#Kပ?$ value ကiu ဘ+မH မeရ$ထ+$တ-6 အတ&က# Default တန#ဖiu$ဟ+ null Cဖစ#eနမယ#ဆiuတ+ကiu
သieနAiuင#ပ3တယ#။ Kပ?$eတ+6 Instance Variable တစ#ခuCဖစ#တယ#ဆiuတ+ကiuလ- သiAiuင#ပ3တယ#။ e^မH+လ-eCပ+ခ-6Kပ?$
Cဖစ#ပ3တယ#။ Instance Variable eတ&ဟ+ Class ထ-မH+ ထ+$Kပ?$သuB$တ-6 Variable eတ&မဟuတ#ပ- အ-6ဒ? Class ကeန
Object ကiu တည#eဆ+က#တ-6အခ3မH+ အ-6ဒ? Object eတ&မH+ ပiuင#ဆiuင#သင#6တ-6 State eတ&ကiu သiမ#$eပ$ထ+$ဖiuအတ&က#
သuB$Cပuပ3တယ#။
ဒ36eFက+င#6 Instance Variable eတ&ဟ+ Object တစ#ခuခGင#$ဆ?န-9 သက#ဆiuင#တ-6 Variable eတ& Cဖစ#Fကပ3တယ#။
Class တစ#ခuကeန Object ဘယ#AHစ#ခueဆ+က#Aiuင#လ-ဆiuရင# အPကiမ#Pကiမ#တည#eဆ+က#Aiuင#ပ3တယ#။ Kပ?$eတ+6 အ-6ဒ?
Object တစ#ခuခGင#$စ?ဟ+လ- သ?$Cခ+$စ?ရပ#တည#eနတ+Cဖစ#ပ3တယ#။
class StudentTest {
Student s1 = new Student() လiueရ$ထ+$တ+ဟ+ အရင#ဆuB$ Stack Memory eပ2မH+ s1 ဆiuတ-6 အမည#န-9
Student Type Variable တစ#ခuကiu သ&+$eဆ+က#ပ3တယ#။ Kပ?$မH new Student() လiueရ$တ-6 ကuဒ#ကiu Evaluate လuပ#
Kပ?$ Heap Memory eပ2မH+ Student Object ကiu သ&+$eဆ+က#ပ3တယ#။ ဒ?လiu Object eဆ+က#တ-6အခ3မH+ Student
Class ထ-မH+Qiတ-6 instance variable eတ&ကiu Copy ကO$သ&+$Kပ?$ ယOသ&+$ပ3တယ#။ ဒ36eFက+င#6 Student Object ထ-
မH+ name ဆiuတ-6 Instance Variable လ- ပ3သ&+$ပ3တယ#။
Kပ?$မH s1 eနရ+ကiu တည#eဆ+က#ထ+$တ-6 Object ရ-I Memory Address ကiu အစ+$ထiu$ပ3တယ#။ ဒ?လiuပ- s2 Variable
ကiuလ- တည#eဆ+က#သ&+$တ+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 s1 ရ-I name န-9 s2 ရ-I name eတ&ဟ+ သ?$Cခ+$စ? Cဖစ#eနမH+
Cဖစ#ပ3တယ#။ s1.name = “Aung Aung” လiu eရ$လiuက#တယ#ဆiuရင# s1 ရ-I name သ+ Aung Aung Cဖစ#သ&+$မH+ Cဖစ#
Kပ?$ s2 ရ-I name န-9 သက#ဆiuင#Cခင#$ QiမH+ မဟuတ#ပ3ဘO$။ အလ+$တO s2.name = “Thidar” လiueရ$လiuက#ရင#လ- s2 ရ-I
name သ+ တန#ဖiu$eCပ+င#$သ&+$တ+ Cဖစ#Kပ?$ s1 ရ-I name န-9 ပတ#သက#မ[QiမH+ မဟuတ#ပ3ဘO$။
Instance Variable eတ&ဟ+ Object eတ&အတ&က# eရ$ထ+$တ-6 Variable eတ& Cဖစ#တ-6 အတ&က# Instance
Variable eတ&ကiu Object Variable eတ&လiuလ- eခ2eလ6Qiပ3တယ#။ ဒ36eFက+င#6 Instance Variable eတ&ကiu Access
လuပ#ခGင#တ-6 အခ3မH+ Owner Cဖစ#တ-6 Object က တဆင#6 objectName.variableName လiu eရ$သ+$ရတ+ Cဖစ#ပ3
တယ#။
Static Variable
Java ဘ+သ+ရပ#မH+ Class eတ&ကiu eရ$သ+$တ+ဟ+ Object eဆ+က#ဖiu Pက?$ပ- မဟuတ#ပ3ဘO$။ Java မH+ Class မပ3
ပ- ကuဒ#eတ&ကiu eရ$သ+$လiu မရAiuင#ပ3ဘO$။ ဒ36eFက+င#6 Utility Function eတ&ကiu eရ$သ+$မယ#ဆiuရင#eတ+င#မH Class
ထ-မH+ပ- eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ အ-6ဒ?လiu Class ထ-မH+ပ-ထ+$Kပ?$ အသuB$CပuခGင#တ-6 Method eတ&ကiueတ+6 Static
Method လiueခ2ပ3တယ#။ တဖန# အ-6ဒ? Method eတ&အFက+$မH+ ဘuBအeနန-9 ထ+$Kပ?$ သiမ#ထ+$ခGင#တ-6 တန#ဖiu$eတ&
အတ&က# Variable eတ&လiuအပ#လ+ပ3တယ#။ Object မH+ သuB$ဖiu မဟuတ#ပ- Class ထ-မH+ပ- ထ+$Kပ?$ အသuB$CပuခGင#တ-6
Variable eတ&ကiueတ+6 Static Variable eတ&လiu eခ2Fကပ3တယ#။
က- ဒ?eနရ+ကစKပ?$ Static Variable eတ&ကiu ဘယ#လiueရ$ရမယ#၊ Kပ?$eတ+6 Static Variable eတ&ရ-I ထO$Cခ+$ခGက#eတ&
န-9 Static Variable eတ&ကiu ဘယ#လiu အသuB$Cပuရမယ# ဆiuတ+ကiu eလ6လ+သ&+$Fကရeအ+င#။
Global Variable eတ&ကiu ဒ?အတiuင#$ eရ$ထ+$ရင# Instance Variable eတ&Cဖစ#ပ3တယ#။ တနည#$ eCပ+ရမယ#ဆ?uရင#
Global Variable eတ&ဟ+ Default အတiuင#$ဆiuလiuကeတ+6 Object eတ&မH+ သuB$မည#6 Instance Variable eတ& Cဖစ#
eနမH+ပ3ပ-။ Static Variable အCဖစ# အသuB$Cပuလiuတ-6အခ3မH+ static ဆiuတ-6 Non Access Modifier ကiu Variable
Type ရ-I e^မH+ eရ$သ+$Kပ?$ Static Variable Cဖစ#eFက+င#$ eဖ2CပAiuင#မH+ Cဖစ#ပ3တယ#။
class Student {
void show() {
System.out.println(“Count : “ + count);
System.out.println(“Name : “ + name);
}
အထက#ပ3 Student Class ထ-မH+ Global Variable ၂ ခuQiပ3တယ#။ count န-9 name ပ3။ count ဟ+ int type Cဖစ#
Kပ?$ static လiueရ$ထ+$တ-6 အတ&က# static variable Cဖစ#ပ3တယ#။ Kပ?$eတ+6 name ကeတ+6 Type အCပင# ဘ+မH မ
eရ$ထ+$တ-6 အတ&က# Instance Variable Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 Object eဆ+က#တ-6 အခ3မH+ Static Variable eတ&ကiu Copy ကO$Kပ?$ ယOမသ&+$ပ3ဘO$။ Class ထ-မH+ပ- ခGန#
ထ+$ခ-6ပ3တယ#။ Utility Function eတ&အFက+$မH+ အသuB$Cပuဖiu ထ+$တ-6 Variable eတ&Cဖစ#တ-6 အတ&က# Static
Variable eတ&ဟ+ Class ထ-မH+ပ- QieနမH+ Cဖစ#ပ3တယ#။ Kပ?$eတ+6 Class eတ&ဟ+ JVM eပ2မH+ တစ#ခuထ-သ+Qiတ-6
class Student {
void show() {
System.out.println(“Count : “ + count);
System.out.println(“Name : “ + name);
}
void countUp() {
count ++;
}
အတ&က# Static Variable eတ&ဟ+လ- JVM မH+ တစ#ခuထ-သ+Qiတ-6 Variable eတ&အeနန-9 ရပ#တည#မH+ Cဖစ#ပ3တယ#။
ဒ?eနရ+မH+ Static Variable eတ&ရ-I ထO$Cခ+$ခGက#ကiu သieအ+င# eအ+က#ပ3 Code eတ&န-9 စမ#$Fကည#6Fကရeအ+င#။
အထက#ပ3 ကuဒ#ထ-မH+ countUp ဆiuတ-6 Method ထ-မH+ count ++ ဆiuKပ?$ static variable ကiu တစ#တiu$ထ+$ပ3တယ#။
Kပ?$eတ+6 main method ထ-ကiu Fကည#6Fကရeအ+င#။ အရင#ဆuB$. s1 ဆiuတ-6 Object တစ#ခuကiu eဆ+က#တယ#။ s1 ရ-I
countUp method ကiu invoke လuပ#ပ3တယ#။ ဒ3ဆiuရင# ဘ+Cဖစ#သ&+$လ- ဆiuတ+ကiu Fကည#6Fကရeအ+င#။ count ဆiuတ-6
variable ကiu တစ#တiu$ပ3မယ#။ ဒ36eFက+င#6 count ရ-I တန#ဖiu$ဟ+ 1 Cဖစ#သ&+$မယ#။
Kပ?$eတ+6 ဆက#Kပ?$ s1.show() ကiu eခ2ပ3တယ#။ ဒ?eနရ+မH+ s1 ရ-I count န-9 name ကiu Console eပ2မH+ Cပeပ$ပ3
မယ#။ သတiထ+$ဖiuလiuတ+က count ဟ+ Static Variable Cဖစ#Kပ?$eတ+6 name ဟ+ Instance Variable Cဖစ#eနတ+
ကiuပ3ပ-။ ဆက#Kပ?$ s1 ဆiuတ-6 န+မည#န-9 Object တစ#ခuကiu eဆ+က#Cပန#ပ3တယ#။ Kပ?$eတ+6 countUp() method ကiu eခ2
Cပန#တယ#။ Kပ?$မH s2 ရ-I name ကiu Thidar လiu အစ+$ထiu$Kပ?$ s2 ရ-I show() Method ကiu eခ2Cပန#တယ#။
S1 ရ-I show() Method ကiu eခ2တuန#$က အeCဖဘယ#လiuCပKပ?$ s2 ရ-I show() Method eခ2eတ+6 အeCဖဘယ#လiu
ထ&က#မယ#ဆiuတ+ကiu သတiထ+$မieစခGင#ပ3တယ#။
အထက#ပ3 အတiuင#$ အeCဖထ&က#ပ3မယ#။ s1.show() ကiu eခ2ခ-6တuန#$က count ရ-I တန#ဖiu$ဟ+ 1 Cဖစ#ပ3တယ#။ show()
method ကiu မeခ2ခင# countUp() Method ကiu eခ2ခ-6တယ#။ ဒ36eFက+င#6 count ဟ+ 1 Cဖစ#သ&+$ပ3တယ#။
ဒuတiယ အPကiမ# s2.countUp() ကiu eခ2Cပန#တယ#။ count ကiu တစ#Cပန#တiu$ပ3တယ#။ တကယ#လiuသ+ count ဟ+
Object eတ&eဆ+က#တiuင#$ Copy ကO$သ&+$ရင# အ-6ဒ?eနရ+မH+လ- count ကiu s2 က ပiuင#မH+ Cဖစ#တ-6 အတ&က# တန#ဖiu$ဟ+
၁ ပ-Cဖစ#မH+ပ3။ ဒ3eပမ-6 count ဟ+ Static Variable Cဖစ#တယ#။ ဒ36eFက+င#6 s2 ဟ+ JVM တစစ#ခuလuB$မH+ တစ#ခuထ-သ+
Qiပ3တယ#။ s1 က သiတ-6 count eက+ s2 ကသiတ-6 count ပ3 တစ#eနရ+ထ-မH+ Qiတ-6 count ကiu Cမင#eနတ+ Cဖစ#
တယ#။ ဒ36eFက+င#6 s1 ရ-I count ကiu တစ#တiu$လiuက#eတ+6 count ရ-I တန#ဖiu$ဟ+ 1 Cဖစ#လ+Kပ?$၊ eန+က#တစ#Pကiမ# s2
ကeန count ကiu တစ#Cပန#တiu$eတ+6 တန#ဖiu$ဟ+ 2 Cဖစ#သ&+$တ+ Cဖစ#ပ3တယ#။
ဒ?eနရ+မH+ Static Variable eတ&ဟ+ JVM eပ2မH+ တစ#ခuထ-သ+ QiမH+ Cဖစ#တ-6 အတ&က# ဘယ# Object ကပ- သuB$သuB$
တစ#ခuထ-ကiu သuB$eနတယ#ဆiuတ+ကiu သieစခGင#ပ3တယ#။
ဒ36eFက+င# Desktop Application eတ&မH+ Login User ရ-I Information eတ&ကiu Application တစ#ခuလuB$မH+ ဘuBအeန
န-9 Share လuပ#Kပ?$ အသuB$Cပuလiuတ-6 အခ3မGiu$မH+ Static Variable eတ&ကiu အသuB$CပuFကတ+ကiu eတ&Jရပ3မယ#။ Kပ?$eတ+6
Application တစ#ခuလuB$မH+ Object တစ#ခuထ-သ+ Qieစလiuတ-6 Singleton Design Patterns မGiu$မH+လ- Static
Variable eတ&ကiu အသuB$Cပuတ+ကiu eတ&Jရပ3တယ#။
OOP ကiu သင#Fက+$Kပ?$တ-6 အခ3မH+ Design Patterns eတ&အeFက+င#$ကiu Class Design eတ&န-9 လက#eတ&J
Cပဿန+eတ&ကiu ဘယ#လiu eCဖQင#$တယ#ဆiuတ+ကiu eဖ2Cပသ&+$ပ3မယ#။ အ-6ဒ? အခန#$eရ+က#ရင# Singleton Pattern
အeFက+င#$ကiu အeFက+င#$ကiu ဆက#Kပ?$ eဖ2Cပသ&+$ပ3မယ#။
Local Variables
Code Block တစ#ခuခuအတ&င#$မH+ စ+Kပ?$ Declare လuပ#ထ+$တ-6 Variable eတ&ဟ+ Local Variable eတ& Cဖစ#Fကပ3
တယ#။ Code Block လiueCပ+တ-6eနရ+မH+ အတ&န#9က&င#6 { Cဖစ#6စKပ?$ အတ&န#9က&င#$ အပiတ#န-9 } ဆuB$တ-6 Code eတ&ကiu
ဆiuလiuတ+ပ3။ Instance Block eတ&၊ Static Block eတ&၊ Method Body eတ&၊ if / else statement Block eတ&၊
For န-9 While Block eတ&ဟ+ Code Block eတ&Cဖစ#Fကပ3တယ#။
တဖန# Method Arguments eတ&န-9 for loop ထ-မH+ eရ$ထ+$တ-6 Variable eတ&ကလ- Local Variable eတ& Cဖစ#Fက
ပ3တယ#။ Local Variable eတ&ဟ+ သOတiuကiu စKပ?$eရ$ထ+$တ-6 eနရ+ကeန စKပ?$ သOတiuကiu eရ$ထ+$တ-6 Block ဆuB$တ-6
အထi အသuB$Cပuလiuရပ3တယ#။ Local Variable eတ&ဟ+ Global Variable eတ&န-9 မတOပ- Default တန#ဖiu$ကiu
Compiler က ထည#6မeပ$Aiuင#ပ3ဘO$။ ဒ36eFက+င#6 Local Variable eတ&ကiu အသuB$Cပueတ+6မယ#ဆiuရင# တန#ဖiu$ တစ#ခuခu
ကiu Assign လuပ#Kပ?$မH+ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ တကယ#လiu တန#ဖiu$ကiu အစ+$မထiu$ပ- အ-6ဒ? Local Variable တစ#
ခuကiu Access လuပ#ရင# Compile Time မH+ Error တက#မH+ Cဖစ#ပ3တယ#။
class LocalVariablesInBlocks {
{
// Instance Block
int data = 10;
}
static {
// static block
int data = 11;
}
}
Class Body အတ&င#$မH+ { န-9စKပ?$ } န-9 ဆuB$ထ+$တ+ဟ+ Instance Block eတ&Cဖစ#ပ3တယ#။ Instance Block eတ&
ဟ+ Class ကeန Object ကiuထည#eဆ+က#တ-6အခ3မH+ Constructor ကiu အလuပ#မလuပ#ခင# တစ#Pကiမ# အလuပ#လuပ#eစ
ပ3တယ#။ အထက#ပ3အတiuင#$ Instance Block ထ-မH+ int data = 10 လiueရ$ထ+$တ-6 အတ&က# data ဟ+ Local
Variable တစ#ခuCဖစ#Kပ?$ } eနရ+အထi အ-ဒ? data ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
တဖန# static { } လiueရ$ထ+$တ+ကeတ+6 static block Cဖစ#ပ3တယ#။ JVM eပ2ကiu အ-6ဒ? Class ကiu Load လuပ#Kပ?$
တ+န-9 static block ထ-မH+Qiတ-6 ကuဒ#eတ&ကiu အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။
class LocalVariablesInMethod {
void someMethod() {
// declare in method
int data = 10;
}
အထက#ပ3 နမOန+ထ-မH+ someMethod() ထ-မH+ int data = 10 ဆiuKပ?$eရ$ထ+$ပ3တယ#။ Type ကiu တ&-eရ$Kပ?ဆiuတ+န-9
ဒ3ဟ+ Variable တစ#ခuကiu လ+Kပ?$ Declare လuပ#တယ#ဆiuတ+ကiu သeဘ+ပ3က#ဖiuလiuပ3တယ#။ Method Body ထ-မH+
စKပ?$ Declare လuပ#ထ+$တ-6 အတ&က# ဒ3ဟ+ Local Variable Cဖစ#ပ3တယ#။ အ-6ဒ? Variable ကiu Declare လuပ#တ-6
eနရ+ရ-I eန+က#ကeနစKပ?$ Method ဆuB$တ-6 အထi အသuB$CပuAiuင#ပ3တယ#။
eန+က# Method တစ#ခuကeတ+6 takeArgument(int data) လiueရ$ထ+$ပ3တယ#။ Method Argument အeနန-9 int
data ကiu eရ$သ+$ထ+$ပ3တယ#။ ဒ?eနရ+မH+လ- Type န-9 အတOeရ$ထ+$တ+ Cဖစ#တ-6 အတ&က# Local Variable Cဖစ#ပ3
တယ#။ အ-6ဒ? Variable ကiu takeArgument method အတ&င#$မH+ပ- အသuB$Cပuလiu ရမH+ Cဖစ#ပ3တယ#။ ဒ?eနရ+မH+
someMethod ထ-က int data န-9 takeArgument ထ-က int data eတ&ဟ+ Type န-9 Name ဟ+ တOeနeပမ-6
အသuB$CပuAiuင#တ-6 eနရ+ (Scope) ဟ+ မတOပ3ဘO$။ ဒ3eFက+င#6 သ?$Cခ+$ Variable eတ& Cဖစ#Fကပ3တယ#။
Decision Statement eတ&န-9 Looping Statement eတ&ထ-မH+ eရ$သ+$ထ+$တ-6 Variable eတ&ဟ+လ- Local
Variable eတ& Cဖစ#Fကပ3တယ#။ အထက#ပ3 နမOန+ထ-မH+ Local Variable ၂ ခu ပ3ဝင#ပ3တယ#။ int i = 0 လiu eရ$ထ+$
တ-6 အတ&က# ဒ3ဟ+လ- Local Variable Cဖစ#ပ3တယ#။ Kပ?$eတ+6 String str လiu eရ$ထ+$တ+လ- Local Variable Cဖစ#
ပ3တယ#။
Local Variable eတ&ဟ+ သOတiuကiu စeရ$ထ+$တ-6 eနရ+ကeနစKပ?$ သOတiuQieနတ-6 Block ဆuB$တ-6 အထi အသuB$CပuAiuင#
မH+Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 for(int i = 0; i < 10; i ++) ဆiuKပ?$ i ကiu Cပန#Kပ?$ အသuB$CပueနAiuင#တ+ Cဖစ#ပ3တယ#။
Variable Hidings
က\န#eတ+#တiu Variable eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ တစ#ခuသတiထ+$ဖiuလiuတ+က Scope တစ#ခuအတ&င#$မH+
န+မည#တO Variable eတ&ကiu eရ$သ+$လiu မရAiuင#ပ3ဘO$။ Scope မတOရင#eတ+6 န+မည#တO Variable eတ&ကiueရ$သ+$
Aiuင#ပ3တယ#။
Local Variable eတ&အခGင#$ခGင#$ Scope မတOတ+က Cပဿန+မQieပမ-6 Global Scope ထ-က Variable န-9 Local
Scope ထ-က Variable eတ&မH+ န+မည#တOခ-6ရင# Local Scope ထ-မH+eတ+6 Local Scope ထ-က Variable ကiuပ-
အသuB$Cပuသ&+$မH+ Cဖစ#ပ3တယ#။ ဒ?လiu Local Scope ထ-က Variable က Global Scope ထ-က Variable ကiu သ&+$Kပ?$
ဖuန#$က&ယ#သလiu Cဖစ#သ&+$တ+ကiu Variable Hiding လiueခ2ပ3တယ#။
Global Variable eတ&မH+ Instance Variable န-9 Static Variable ဆiuKပ?$ Qiပ3တယ#။ အ-6ဒ?အတ&က# Variable
Hiding Cဖစ#Aiuင#တ-6 ပuBစBeတ&ကiu Fကည#6Fကည#6ရeအ+င#။
String name;
static int count;
အထက#ပ3နမOန+ကiu Fကည#6ရင# Global Scope ထ-မH+ Instance Variable name ဆiuတ+QiKပ?$ Static Variable
count ဆiuတ+Qiပ3တယ#။ Kပ?$eတ+6 setValues method ထ-မH+လ- Argument အeနန-9 name န-9 count ကiu ယOထ+$
ပ3တယ#။ ဒ?လiu eရ$လiuက#တ+န-9 Global Scope ထ-က Variable eတ&န-9 Local Scope ထ-က Variable eတ&ဟ+
န+မည#တOသ&+$ပ3Kပ?။
ဒ36eFက+င#6 အ-6ဒ? Scope ထ-မH+ name လiu Access လuပ#ရင# Local Scope ထ-က Variable eတ&ကiuပ- အသuB$Cပueတ+6
မH+ Cဖစ#ပ3တယ#။ အ-6ဒ?လiuပ- count လiueရ$လiuက#ရင#လ- Local Scope ထ-က Variable ကiuပ- အသuB$Cပueတ+6မH+ပ3။
ဒ36eFက+င#6 ဒ?eနရ+မH+ name = name ဆiuရင# Local Variable name ကiu Local Variable name န-9 အစ+$eနeတ+6
မH+ Cဖစ#ပ3တယ#။
ဒ3eပမ-6 ဒ? Method က Argument အeနန-9 ယOထ+$တ-6 တန#ဖiu$eတ&န-9 Global Scope ထ-က Variable eတ&ကiu
သတ#မHတ#eပ$eနတ+ Cဖစ#ပ3တယ#။ အ-6ဒ?လiueနရ+မGiu$မH+ Global Scope ထ-က Variable ကiu အသuB$Cပuလiuပ3က
Owner.variable လiu eရ$eပ$ရမH+ Cဖစ#ပ3တယ#။
Global Variable name ဟ+ Instance Variable Cဖစ#တ-6အတ&က# သbရ-I Owner Cဖစ#တ-6 this ကiu e^မH+ eရ$eပ$ရ
မH+ Cဖစ#Kပ?$ this.name = name လiueရ$eပ$ရမH+ Cဖစ#ပ3တယ#။ တဖန# count ဟ+ Static Variable Cဖစ#Kပ?$ Owner
ဟ+ Class Cဖစ#တ-6 အတ&က# VariableHiding.count = count လiu eရ$eပ$ရမH+ Cဖစ#ပ3တယ#။
Variable Hiding မCဖစ#တ-6 eနရ+eတ&မH+ ဆiuရင#eတ+6 Class တစ#ခuထ-က Variable eတ&ကiu Owner ထည#6Kပ?$ မeရ$
လ- ရeနမH+ Cဖစ#Kပ?$၊ Variable Hiding Cဖစ#မHသ+ Owner ကiu ထည#6Kပ?$ eရ$eပ$ရမH+ Cဖစ#ပ3တယ#။
Methods
Java ဘ+သ+ရပ#မH+ Utility Function eတ&၊ Object eတ&ရ-I Behavior eတ&ကiu eဖ2Cပဖiuအတ&က# Method eတ&ကiu
အသuB$Cပuပ3တယ#။ Variable eတ&တuန#$ကလiuပ- Method eတ&မH+လ- Class eတ&မH+ သuB$မH+လ+$ Object eတ&မH+ သuB$
မH+လ+$ဆiuKပ?$ Static Method န-9 Instance Method eတ&ဆiuKပ?$ ခ&-Cခ+$ထ+$ပ3တယ#။
1. Return Type
2. Method Name
3. Argument List
Method eတ&ကiu eရ$သ+$တ-6eနရ+မH+ Class Body အထ-မH+eရ$သ+$ရပ3တယ#။ Java ဘ+သ+ရပ#မH+ Class eတ&
ရ-I အCပင#မH+ Method eတ&ကiu eရ$သ+$လiu မရပ3ဘO$။ ဒ36အCပင# အCခ+$eသ+ Code Block eတ&ထ-မH+လ- Method
eတ&ကiu eရ$သ+$လiu မရAiuင#ပ3ဘO$။
eရ$သ+$မယ#ဆiuရင# [1. Return Type] [2. Method Name] [3. Argument List] [4. Method Body] ဆiuKပ?$
eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ အန-ဆuB$ အထက#ပ3အခGက#eတ&ပ3တယ#ဆiuရင# Method အeနန-9 Compiler ကeန
အသiအမHတ#CပuမH+ Cဖစ#ပ3တယ#။ ဒ?eနရ+မH+ Method Name ကeတ+6 Method ရ-I န+မည#Cဖစ#Kပ?$ Method Body
ကeတ+6 လuပ#eဆ+င#ခGက#eတ&ကiu eရ$သ+$ရမH+ Cဖစ#တ-6 အတ&က# အeထ&အထO$ မeဖ2Cပeတ+6ပ- Return Type န-9
Argument List အeFက+င#$ကiuပ- eဖ+#Cပသ&+$ပ3မယ#။
Return Type
Method eတ&ကiu eရ$သ+$တ-6 အခ3မH+ အ-6ဒ? Method ကiu Invoke လuပ#တ-6အခ3မH+ ဘ+ကiu Cပန#eပ$ရမလ- ဆiuတ-6
Return Type ကiu သတ#မHတ#eပ$ဖiuလiuအပ#ပ3တယ#။ တကယ#လiu Method တစ#ခuကiu Invoke လuပ#Kပ?$တ-6 အခ3မH+ int
type ကiu Cပန#Kပ?$ လiuခGင#တယ#ဆiuရင# Return Type eနရ+မH+ int လiueရ$ရKပ?$ String ကiu လiuခGင#တယ#ဆiuရင# String
လiueရ$ရပ3မယ#။
Kပ?$eတ+6 Method ထ-က eန+က#ဆuB$ Statement ရ-I eန+က#မH+ return ဆiuKပ?$ သတ#မHတ#ထ+$တ-6 Type ရ-I တန#ဖiu$ကiu
Return လuပ#eပ$ရမH+ Cဖစ#ပ3တယ#။ အ-6ဒ? Statement ကiu Return Statement လiu eခ2ပ3တယ#။ Method ထ-က
Return Statement ရ-I eန+က#မH+ ဘ+ကuဒ#မH eရ$သ+$လiu မရAiuင#ပ3ဘO$။
ဆက#လက#Kပ?$ ဘယ#လiu Method eတ&က Return လuပ#ဖiuလiuKပ?$ ဘယ#လiu Method eတ&က Return လuပ#စရ+မလiuဘO$
လ- ဆiuတ+ကiu ဆက#လက#Kပ?$ စT#$စ+$သ&+$Fကရeအ+င#။ Utility Function ပ-eCပ+eCပ+ Object ရ-I Behavior လiuပ-
eCပ+eCပ+ Method eတ&ဆiuတ+ လuပ#eဆ+င#မ[eတ&ကiu eဆ+င#ရ&က#eပ$Aiuင#တ-6 အစiတ#အပiuင#$eတ& Cဖစ#ပ3တယ#။
က\န#eတ+#တiu Student Object ကiu အသuB$CပuAiuင#ဖiu Student Class ကiu eရ$သ+$eနတယ# ဆiuFကပ3စiu။ အ-6ဒ? Class
ထ-မH+ Instance Variable အeနန-9 String Type name ဆiuတ-6 Variable Qiပ3တယ#။
ဒ?eနရ+မH+ Student Object ကeန name ကiu Cပန#eပ$Aiuင#တ-6 Behavior န-9 Student Object ကiu မiတ#ဆက#စ+ကiu
Console eပ2မH+ Print လuပ#Aiuင#တ-6 Behavior eတ&ကiu ထည#6eပ$ဖiuလiuလ+တ-6 အခ3ကiu စT#$စ+$Fကည#6ပ3။ က\န#eတ+#တiu
Method eတ&ကiu eရ$ဖiu လiuအပ#လ+ပ3Kပ?။
အထက#ပ3 အတiuင#$ Student Object ရ-I name ကiu Cပန#eပ$စရ+လiuတ-6 getName() Method မH+eတ+6 Return
Type eနရ+မH+ name ရ-I Type Cဖစ#တ-6 String ကiu eရ$သ+$ထ+$ရပ3တယ#။ eန+က#Kပ?$ Console eပ2မH+ Greeting
ကiu Print လuပ#UuBသ+လiuတ-6 printGreeting() Method မH+eတ+6 Return Cပန#စရ+မလiuတ-6 အတ&က# void လiu eရ$သ+$
eပ$ဖiuလiuအပ#ပ3တယ#။ တစ#Cခ+$ Language eတ&မH+လiu Return Cပန#စရ+မလiuတ-6 အတ&က# ဘ+မH မeရ$ပ-ထ+$လiu မရ
ပ3ဘO$။ မCပန#ဘO$ဆiuရင#လ- void ဆiuKပ?$ eရ$eပ$ရမH+ Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 Method eတ&ကiu eရ$သ+$တ-6 အခ3မH+ အ-6ဒ? Method ကiu သuB$Kပ?$တ-6 အခ3မH+ တစ#ခuခuကiu Cပန#ရခGင#တ+လ+$
ဆiuတ+ကiu အရင#ဆuB$ စT#$စ+$ရပ3မယ#။ Cပန#လiuခGင#တယ#ဆiuရင#လ- ဘယ# Type မGiu$ကiu လiuခGင#တ+လ-ဆiuတ+ကiu ဆuB$Cဖတ#
ရပ3မယ#။ Kပ?$မH လiuခGင#တ-6 Type ကiu Return Type အeနန-9 သတ#မHတ#eပ$ရပ3မယ#။ Return Cပန#မလiuခGင#eတ+6ဘO$ဆiu
ရင#eတ+6 void ကiu Return Type အeနန-9 eရ$သ+$eပ$ရမH+ပ3။
Return Statement ကiu eရ$သ+$တ-6eနရ+မH+လ- သတ#မHတ#ထ+$တ-6 Return Type န-9 ထပ#တOဒ3မHမဟuတ# Sub Type
eတ&ဆiuရင# Return Value အeနန-9 အသuB$CပuAiuင#ပ3တယ#။ ဆiuFကပ3စiu Student Class ဟ+ Person Class ရ-I Sub
Class ဆiuရင# Person Type ကiu Return Cပန#လiuတ-6 Method ထ-မH+ Student Type ကiu Return Value အeနန-9
အသuB$CပuAiuင#ပ3တယ#။ အ-6ဒ?လiu Sub Type ကiu Return Cပန#Aiuင#တ+က Covariant Return လiueခ2Kပ?$ Java SE 5
ကeန စတင# အသuB$Cပuလ+Aiuင#တ+ Cဖစ#ပ3တယ#။
Argument List
Method တစ#ခuရ-I Argument ဆiuတ+ဟ+ အ-6ဒ? Method ထ-ကeန အသuB$Cပuဖiu အတ&က#လiuအပ#တ-6 eဒတ+eတ&ကiu
ရယOAiuင#ဖiu အတ&က# eရ$သ+$ရတ-6 Variable eတ& Cဖစ#Fကပ3တယ#။ ဆiuFကပ3စiu၊ က\န#eတ+#တiu int ၂ ခuကiu eပ3င#$Kပ?$
ရလဒ#ကiu Cပန#eပ$Aiuင#တ-6 Method တစ#ခuကiu eရ$eနတ-6 အခ3မH+ int variable ၂ ခuကiu Method ထ-ကeန မသiAiuင#ရင#
eရ$လiu ရမH+ မဟuတ#ပ3ဘO$။ အ-6ဒ? int AHစ#ခuကiu Method Argument အeနန-9 eရ$သ+$Kပ?$ Method ထ-ကeန အသuB$Cပu
Aiuင#မH+ Cဖစ#ပ3တယ#။
double makeDouble(double d) {
return d * 2;
}
Compiler န-9 Runtime ကeန Method ကiu Identified လuပ#eနတ-6 အစiတ# အပiuင#$eတ&ကiu Method Signature လiu
eခ2ပ3တယ#။ Method Signature မH+ Method Name န-9 Argument List တiu ပ3ဝင#Fကပ3တယ#။ Java ဘ+သ+ရပ#
မH+က Method Name တOeပမ-6 Method Signature မတOရင# Method တစ#ခuစ?လiu သတ#မHတ#ပ3တယ#။
အထက#ပ3 နမOန+ထ-မH+ Method AHစ#ခuလuB$ န+မည#တOeပမ-6 Argument eတ&မတOပ3ဘO$ ဒ36eFက+င#6 Java Compiler
က Method တစ#ခuစ?လiu Cမင#ပ3တယ#။ ဒ3ကeတ+6 Method Argument Type မတOတ-6အတ&က# Method Signature
မတOဘO$လiu သတ#မHတ#သ&+$တ+ပ3။
JRE ထ-မH+ပ3တ-6 Java Standard API eတ&မH+လ- Method Overloading ကiu အမG+$အCပ+$ အသuB$Cပueရ$သ+$ထ+$
တ+ကiu eတ&Jရပ3တယ#။
Type of Methods
Instance Method
Instance Method eတ&ဟ+ Object eတ&ရ-I Behavior အeနန-9 အသuB$Cပuလiuတ-6 အခ3မH+ eရ$သ+$ရတ-6 Method
eတ& Cဖစ#ပ3တယ#။ Class တစ#ခuကiu eရ$သ+$ရတ-6 အဓiက ရည#ရ&ယ#ခGက#ဟ+ Object eဆ+က#ဖiu Cဖစ#တ-6 အတ&က#
Variable eတ&တuန#$ကလiuပ- Class တစ#ခuအတ&င#$မH+ Default အတiuင#$eရ$သ+$ထ+$တ-6 Method eတ&ဟ+
Instance Method eတ& Cဖစ#Fကပ3တယ#။
Instance Method eတ&ဟ+ Object eတ&န-9 သက#ဆiuင#တ-6 Method eတ& Cဖစ#တ-6 အတ&က# အသuB$Cပuလiuတ-6 အခ3မH+
Object eတ&ကတဆင#6 အသuB$CပuရမH+ Cဖစ#ပ3တယ#။ ထiuအCပင# Object eတ&ရ-I ကiuယ#ပiuင# State eတ&Cဖစ#တ-6 Instance
Variable eတ&ကiuလ- Instance Method ထ-ကeန Access လuပ#Kပ?$ အသuB$CပuAiuင#ပ3တယ#။ တဖန# Class တစ#ခu
အတ&င#$မH+Qiတ-6 Instance Method အခGင#$ခGင#$လ- အသuB$CပuAiuင#ပ3တယ#။
ဒ?eနရ+မH+eတ+6 Instance Method eတ&ကiu ဘယ#လiu eရ$ရမယ#ဆiuတ+န-9 Instance eတ&ကiu ဘယ#လiu eခ2သuB$ရမယ#
(Invoke) ဆiuတ+ကiuပ- eလ6လ+သ&+$Fကပ3မယ#။ Instance Method eတ&ဟ+ Object eတ&န-9 ဆiuင#တ-6 Method eတ&
Cဖစ#တ-6 အတ&က# အCခ+$ Class ထ-ကeခ2တ-6အခ3၊ ဒ3မHမဟuတ# Main Method လiu Static Method ထ-ကeန eခ2ခGင#
တ-6 အခ3eတ&မH+ Object eဆ+က#Kပ?$ Object ကeနပ- eခ2လiuရမH+ Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 အထက#ပ3 နမOန+ထ-မH+ Instance Method eတ&ကiu Main Method ထ-ကeန Invoke လuပ#ခGင#တ-6
အတ&က# demo ဆiuတ-6 Object ကiu အရင#တည#eဆ+က#Kပ?$က+မH demo.showMessage(“Java”) ဆiuKပ?$ Invoke
လuပ#eနတ+Cဖစ#ပ3တယ#။ demo.showMessages(array) လiu eရ$ထ+$တ+လ- Instance Method Cဖစ#တ-6 အတ&က#
Object ကeန Invoke လuပ#eနရတ+Cဖစ#ပ3တယ#။
ဒ3eပမ-6 Class တစ#ခuထ-မH+Qiတ-6 Instance Method အခGင#$ခGင#$ Invoke လuပ#လiuတ-6အခ3မH+eတ+6 Object တစ#ခuထ-
မH+ သuB$မည#6 Method အခGင#$ခGင#$ Cဖစ#တ-6အတ&က# Object eဆ+က#စရ+မလiuအပ#ပ- အသuB$Cပuလiuရeနတ+Cဖစ#တယ#။
showMessages() Method ထ-မH+ showMessage(name) လiueခ2တ-6အခ3မH+ Object eဆ+က#စရ+မလiuတ+ကiu
eတ&Jရပ3မယ#။
ဒ36အCပင# e^မH+eဖ2Cပခ-6သလiu Instance Method ထ-ကeန အCခ+$eသ+ Instance Method eတ&ကiuလ- အသuB$CပuAiuင#
ပ3တယ#။
Static Method
Class ထ-မH+ ထ+$Kပ?$ Utility Function eတ&အeနန-9 အသuB$CပuခGင#တ-6 Method eတ&ကiu Static Method အeနန-9
eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ Method eတ&ကiu Default အတiuင#$eရ$သ+$ထ+$မယ#ဆiuရင# Instance Method eတ&
Cဖစ#ကuန#ပ3တယ#။ Static Method အCဖစ# အသuB$Cပuလiuပ3က static ဆiuတ-6 Non Access Modifier ကiu Return Type
ရ-I e^မH+ eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။
ဆက#လက#Kပ?$ Static Method eတ&ကiu ဘယ#လiueရ$မလ-၊ Static Method eတ&ကiu ဘယ#လiu Invoke လuပ#မလ- ဆiu
တ+န-9 Static Method eတ&က အသuB$CပuAiuင#တ+eတ&က ဘ+eတ&လ- ဆiuတ+ကiu eလ6လ+သ&+$Fကပ3မယ#။
အထက#ပ3 ကuဒ#နမOန+ထ-မH+ eရ$သ+$ထ+$တ-6 show() Method AHစ#ခuလuB$မH+ static ဆiuတ-6 Modifier ကiu eရ$သ+$
ထ+$တ-6 အတ&က# Method AHစ#ခuလuB$ Static Method eတ& Cဖစ#Fကပ3တယ#။ အeပ2က show() Method ထ-မH+eတ+6
FORMAT ဆiuတ-6 Static Variable ကiu အသuB$Cပuထ+$ပ3တယ#။ Static Method eတ&ဟ+ Class တစ#ခuထ-မH+ Qiတ-6
Static Member eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။
ဒuတiယ show() Method ထ-မH+eတ+6 for loop ထ-မH+ Static Method eန+က#တစ#ခuကiu eခ2သuB$eနပ3တယ#။ Class
တစ#ခuထ-မH+Qiတ-6 Member အခGင#$ခGင#$ဆiuပ3က Owner ကiu eရ$သ+$စရ+မလiuပ- တiuက#Uiuက# eရ$သ+$ အသuB$CပuAiuင#ပ3
တယ#။ ဆက#လက#Kပ?$ အCခ+$ Class တစ#ခuကeန Static ကiu အသuB$CပuပuBကiu eလ6လ+Fကရeအ+င#။
StaticMethodTest Class ထ-ကeန StaticMethodDemo Class ရ-I Static Method ကiu အသuB$Cပuမယ#ဆiuရင#
eတ+6 Owner Cဖစ#တ-6 Class ကeန တဆင#6 eခ2ယOအသuB$CပuရမH+ Cဖစ#ပ3တယ#။
Constructor
Constructor ဆiuတ+ Class ကeန Object ကiu တည#eဆ+က#တ-6အခ3မH+ အသuB$Cပuတ-6 Special Method တစ#မGiu$
Cဖစ#ပ3တယ#။ Constructor eတ&ကiu Object တစ#ခuကiu တည#eဆ+က#တ-6 eနရ+မH+ တစ#Pကiမ#သ+ အသuB$CပuKပ?$ Object
Cဖစ#သ&+$Kပ?$ရင#eတ+6 Constructor eတ&ကiu အသuB$မCပueတ+6ပ3ဘO$။ Constructor eတ&ကiu Instance Variable eတ&
ကiu Initialize လuပ#တ-6အခ3မH+ အသuB$Cပuဖiu Cပင#ဆင#ထ+$တ+ Cဖစ#ပ3တယ#။
Constructor ရ-I န+မည#ဟ+ Class န+မည#န-9 ထပ#တOတOည?ရပ3မယ#။ Kပ?$eတ+6 Constructor မH+ Return Type eရ$
လiuမရပ3ဘO$။ Class တစ#ခuအတ&က# Constructor ကiu eရ$သ+$တ-6 အခ3မH+ Argument List မတOတ-6 Construcotr
eတ&ကiu Overload လuပ#Kပ?$ eရ$သ+$Aiuင#ပ3တယ#။
Default Constructor
eအ+က#eဖ2Cပပ3ကuဒ#ထ-မH+လiu new Student() ဆiuKပ?$eရ$သ+$လiuက#တ+ဟ+ Student Class ရ-I Constructor ကiu
လHမ#$eခ2Kပ?$ Object ကiu တည#eဆ+က#လiuက#တ+ပ- Cဖစ#ပ3တယ#။
ဒ3eပမ-6 eသeသCခ+Cခ+Fကည#6မယ#ဆiuရင# Student Class ထ-မH+ Student() ဆiuတ-6 Constructor ကiu eရ$မထ+$ပ3
ဘO$။ ဒ3eပမ-6 new Student() ဆiuKပ?$ eရ$လiuရeနပ3တယ#။ ဒ3ဟ+ Student Class ကiu Compile လuပ#တ-6အခ3မH+
Java Compiler ကeန Constructor မပ3တ-6 Class eတ&ဆiuရင# Default Constructor တစ#ခuကiu ထည#6eပ$eနလiuပ-
Cဖစ#ပ3တယ#။
public Student() {
super();
}
Default Constructor eတ&ဟ+ public Cဖစ#Kပ?$ Argument မပ3ပ3ဘO$။ Kပ?$eတ+6 အတ&င#$ပiuင#$မH+ super() ဆiuတ-6 ကuဒ#
တစ#eFက+င#$ကiu eရ$သ+$ထ+$မH+ Cဖစ#ပ3တယ#။ တကယ#လiuသ+ မiမiတiueရ$သ+$ထ+$တ-6 Class အတ&င#$မH+
Constructor တစ#ခuခuကiu eရ$သ+$ထ+$Kပ?ဆiuရင#eတ+6 Compiler ကeန Default Constructor ကiu ထည#6eပ$eတ+6
မH+ မဟuတ#ပ3ဘO$။
Constructor ကiuဘ"လiueရ9ရတ"လ/
Constructor eတ&ဟ+ Class ကeန Object ကiu တည#eဆ+က#တ-6အခ3မH+ မCဖစ#မeနeခ2ဆiuရမည#6 Special
Method eတ&Cဖစ#Kပ?$eတ+6 Instance Varable eတ&န-9 Instance Method eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။ ဒ36eFက+င#6
Object eတ&ရ-I Initial State eတ&ကiu သတ#မHတ#လiuတ-6အခ3မH+ ကiuယ#တiuင# Constructor ကiu eရ$သ+$ဖiuစT#$စ+$ရပ3
eတ+6မယ#။
public Student() {
this.name = “Aung Aung”;
}
}
eဆ+က#သမZ Object တiuင#$ရ-I name ဟ+ Aung Aung Cဖစ#သ&+$မယ#လiu eCပ+စရ+Qieပမ-6၊ အထက#ပ3 နမOန+ထ-မH+လiu
Student ရ-I name ကiu Initialize လuပ#လiuတ-6အခ3မGiu$မH+ Conatructor ကiu အသuB$CပuAiuင#ပ3တယ#။ Object မeဆ+က#မH?
Instance Variable eတ&ကiu Initialize လuပ#ဖiuအတ&က# Instance Block eတ&ကiuလ- အသuB$CပuAiuင#ပ3တယ#။
{
this.name = “Aung Aung”;
}
}
Constructor Overloading
Class တစ#ခuအတ&င#$မH+ Argument List မတOတ-6 Constructor eတ&ကiu eရ$သ+$Cခင#$ကiu Constructor
Overloading လiueခ2ပ3တယ#။ Constructor ဆiuတ+က Class ကeန Object ကiu တည#eဆ+က#တ-6 အခ3မH+
အသuB$CပuKပ?$ Instance Variable eတ&ကiu Initialize လuပ#လiuတ-6 အခ3မH+ အသuB$Cပueလ6Qiပ3တယ#။
Object eတ&ကiu တန#ဖiu$အမGiu$မGiu$eပ$Kပ?$ Object eဆ+က#လiuတ-6 အခ3မH+ Constructor Overloading ကiu အသuB$Cပu
Aiuင#ပ3တယ#။ Student Object မH+ name န-9 age ကiu instance variale အeနန-9 ပiuင#ဆiuင#တယ# ဆiuFကပ3စiu။ Student
Object ကiu ဘ+ Argument မH မeပ$ပ-တည#eဆ+က#လiuတ-6 အခ3လ-Qiမယ#။ Kပ?$eတ+6 name Pက?$ပ- eပ$Kပ?$eဆ+က#
ခGင#တ-6အခ3လ- Qiမယ#၊ age Pက?$ပ- eပ$Kပ?$eဆ+က#ခGင#တ-6 အခ3လ-Qiမယ#။ name eက+ age ပ3eပ$Kပ?$ eဆ+က#ခGင#တ-6
အခ3လ-Qiပ3တယ#။ ဒ?လiu အခ3မGiu$မH+ Constructor Overloading ကiu အသuB$CပuKပ?$ Constructor eတ&ကiu Cပင#ထ+$Aiuင#
ပ3တယ#။
public Student() {}
တကယ#လiu ဘ+ Argument မH မeပ$ပ- Object eဆ+က#ခGင#ရင# Student s = new Student() လiu eရ$သ+$Aiuင#ပ3
တယ#။ Kပ?$eတ+6 Name ကiu eပ$Kပ?$ Object ကiu တည#eဆ+က#လiuလGင# Student s = new Student(“Aung Aung”)
လiu eရ$သ+$Aiuင#ပ3တယ#။
Class eတ&အခGင#$ခGင#$ရ-I Visibility န-9 Accessibility ကiu Package eတ&န-9 Access Modifier တiuကiu အသuB$CပuKပ?$
သတ#မHတ# eရ$သ+$Aiuင#ပ3တယ#။
Packages
Package ဆiuတ+က Java Programming ဘ+သ+ရပ#မH+ အသuB$Cပueနတ-6 Name Space န-9 Visibility ကiu
သတ#မHတ#eပ$Aiuင#တ-6 နည#$လမ#$တစ#မGiu$Cဖစ#ပ3တယ#။ အလ&ယ#eCပ+ရမယ#ဆiuရင# Packaege ဆiuတ+ဟ+ Computer
ထ-က Folder တစ#ခuန-9 ဆင#တOပ3တယ#။ Folder တစ#ခuထ-မH+ န+မည#တO File AHစ#ခuကiu တည#eဆ+က#လiu မရAiuင#သလiu
Java မH+လ- တစ#eနရ+ထ-မH+ Class AHစ#ခuကiu တည#eဆ+က#လiu မရAiuင#ပ3ဘO$။
တကယ#လiu Package သ+မQiခ-6ရင# Java Class eတ&ကiu န+မည#eပ$တ-6 eနရ+မH+ အeတ+#eလ$ခက#ခ-သ&+$မH+ Cဖစ#ပ3
တယ#။ ဒ?လiueနရ+မGiu$မH+ Package eတ&ကiu အသuB$CပuKပ?$ Class eတ&ကiu ခ&-Cခ+$သတ#မHတ#eပ$Aiuင#ပ3တယ#။ Folder မ
တOရင#eတ+6 န+မည#တO File eတ&ကiu eရ$သ+လiuရသလiuပ- Package မတOရင#eတ+6 န+မည#တO Java Class eတ&ကiu
eရ$သ+$လiuရလ+Aiuင#ပ3တယ#။
ဒ36အCပင# Java Package eတ&ဟ+ Class eတ& အခGင#$ခGင#$ရ-I Visibility ကiuလ- သတ#မHတ#eပ$Aiuင#ပ3တယ#။
Visibility of Classes
Program eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ Class eတ&ကiu တစ#ခuထက#မက အသuB$CပuKပ?$ eရ$သ+$eလ6Qiပ3တယ#။
Object တစ#ခuရ-I Member အeနန-9 အCခ+$ Object eတ&ကiu အသuB$CပueနAiuင#ပ3တယ#။ တနည#$ဆiuရမယ# ဆiuရင# Class
တစ#ခuကiu တစ#Cခ+$ Class eတ&ထ-မH+ Variable eတ&ရ-I Type အeနန-9အသuB$CပueနAiuင#ပ3တယ#။ ဒ?လiu အသuB$Cပuတ-6
eနရ+မH+ အသuB$Cပueနတ-6 Class ကiu လက#Qi အသuB$Cပueနတ-6 Class ကeန Cမင#eနမHသ+ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
အထက#ပ3 Diagram ထ-မH+ com.jdc Package eအ+က#မH+ entity န-9 service Package တiuQiပ3တယ#။ တဖန#
entity Package ထ-မH+ Student, Course န-9 Registration Class တiuQiFကKပ?$ service Package ထ-မH+
RegistrationService Class တiuQiFကပ3တယ#။
Package eတ&ဟ+ Class eတ&ရ-I Visibility ကiu သတ#မHတ#eပ$Aiuင#တ+ Cဖစ#တ-6 အတ&က# Package မတOeတ+6တ+န-9
Class eတ&ရ-I Visibility ကလ- က&-Cပ+$သ&+$မH+ Cဖစ#ပ3တယ#။ Package တစ#ခuအတ&င#$မH+Qiမယ#ဆiuရင# Class eတ&
ဟ+ အခGင#$ခGင#$Cမင#နရမH+ Cဖစ#တ-6အတ&က# Registration ထ-ကeန Student န-9 Course တiuကiu Cမင#eနရမH+ Cဖစ#ပ3
တယ#။
Learning Java 36 မင#$လ&င#
Java Developer Class
package com.jdc.entity;
Registration, Student န-9 Course eတ&ဟ+ Package တစ#ခuအတ&င#$မH+Qiတ-6 အတ&က# Student န-9 Course တiuကiu
Registration ထ-မH+ ဒ?အတiuင#$ပ- eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
package com.jdc.service;
package com.jdc.service;
Qualified Name ကiu eရ$သ+$တ-6 eနရ+မH+ Package Name န-9 Class Name တiuကiu တ&-Kပ?$ eရ$သ+$ရမH+ Cဖစ#ပ3
တယ#။ Qualified Name ကiueရ$တ-6eနရ+မH+ Type ကiu eရ$တ-6 eနရ+တiuင#$ Package Name eတ&ပ3 eရ$eနရမH+
Cဖစ#တ-6 အတ&က# ကuဒ#eတ&မG+$လ+eလeလ Package Name eတ&မG+$လ+Kပ?$ ကuဒ#eတ&ကiu ဖတ#ရတ+ လ&ယ#ကOမH+
မဟuတ#eတ+6ပ3ဘO$။
တစ#Cခ+$ Package ထ-မH+ Qiတ-6 Class eတ&ကiu Packate တစ#ခuထ-မH+ Qiသက-6သiu အသuB$Cပuလiuပ3က Import
Statement eတ&ကiu eရ$သ+$ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Import Statements
Import Statement eတ&ကiu Package Statement ရ-I eအ+က# Class Declaration ရ-I အeပ2မH+ eရ$သ+$ရမH+
Cဖစ#ပ3တယ#။ Import Statement eတ&ကiu Class ရ-I eအ+က#မH+တiu Class ထ-မH+တiu eရ$လiu မရပ3ဘO$။ Import လuပ#
လiuတ-6 Class ကiu Qualified န-9 eရ$သ+$ရမH+ Cဖစ#Kပ?$၊ Import လuပ#Kပ?$တ+န-9 Package Name eရ$စရ+မလiueတ+6ပ-
Class Name န-9 Type eတ&ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ Import Statement eတ&ကiu eရ$သ+$တ-6 eနရ+မH+
import [Qualified Name] လiu eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။
package com.jdc.service;
import com.jdc.entity.Registration;
အထက#ပ3အတiuင#$ Registration Class ကiu Import လuပ#ထ+$ပ3က Package Name ကiu မeရ$ပ- Registration
Class ကiu Package တစ#ခuထ-မH+Qiတ-6 အတiuင#$ eရ$သ+$လiuရမH+ Cဖစ#တယ#။ အCခ+$eနရ+မH+ Type အCဖစ#သuB$မယ#ဆiu
ရင#လ- eရ$စရ+လiueတ+6ပ3ဘO$။တဖန# Package တစ#ခuထ-က Class eတ&ကiu Import လuပ#ခGင#တယ#ဆiuရင# Wild
Card (*) ကiu အသuB$CပuKပ?$လ- Import လuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။
package com.jdc.service;
import com.jdc.entity.*;
အထက#ပ3အတiuင#$ com.jdc.entity.* လiu Wild Card ကiu အသuB$CပuKပ?$ Import လuပ#ထ+$မယ#ဆiuရင# com.jdc.entity
Package eအ+က#က Class eတ&အ+$လuB$ကiu Import လuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 တစ#ခuသတiထ+$ဖiu လiuတ+က
Wild Card Import ဟ+ Current Package eအ+က#မH+Qiတ-6 Class eတ&ကiuသ+ Import လuပ#Aiuင#တ+Cဖစ#Kပ?$ Sub
Package eအ+က#က Class eတ&ကiueတ+6 Import လuပ#Aiuင#မH+ မဟuတ#ပ3ဘO$။
Java Language ကiu eရ$သ+$တ-6eနရ+မH+ အသuB$မG+$တ-6 Class eတ& Interface eတ& Enum eတ&ကiu java.lang
Package eအ+က#မH+ eရ$သ+$ထ+$Fကပ3တယ#။ Kပ?$eတ+6 java.lang Package eအ+က#က Class eတ&ကiu Import
လuပ#စရ+မလiuပ- eရ$သ+$Aiuင#eအ+င# eခင#$ခGက# အeနန-9 ထ+$eပ$ထ+$ပ3တယ#။ ဒ36eFက+င#6 String တiu System တiuကiu
eရ$သ+$တ-6 eနရ+မH+ Import လuပ#စရ+မလiuပ- eရ$သ+$Aiuင#တ+ Cဖစ#ပ3တယ#။
Primitive Type ရ-I Wrapper Class eတ&၊ String န-9 StringBuffer, StringBuilder Class eတ&၊ အသuB$မG+$တ-6
Exception Class eတ&ကiu java.lang Package eအ+က#မH+ထ+$Qiတ-6 အတ&က# အ-6ဒ? Class eတ&ကiu အသuB$Cပuမယ#
ဆiuရင# Import လuပ#စရ+မလiuအပ#ပ3ဘO$။
Static Import
Java SE 5 အeရ+က#မH+ Static Variable eတ&န-9 Static Method eတ&ကiuလ- Static Import Statement ကiu
အသuB$CပuKပ?$ Import လuပ#လiuရလ+ပ3တယ#။ import static [QualifiedName of Class].[member] ဆiuKပ?$ eရ$သ+$
ရမH+ Cဖစ#ပ3တယ#။ Static Import Statement eတ&မH+လ- Wild Card ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
System.out.println(MAX_VALUE);
}
}
Static Member eတ&ကiu Import လuပ#ထ+$Cခင#$အ+$Cဖင#6 တစ#Cခ+$ Class ထ-မH+Qiတ-6 Static Variable eတ&န-9 Static
Method eတ&ကiu မiမi Class ထ-က Member eတ&လiu Owner Cဖစ#တ-6 Class Name ကiu eရ$စရ+မလiuပ- eရ$သ+$Aiuင#
မH+ Cဖစ#ပ3တယ#။ အထက#ပ3 နမOန+ထ-မH+လiu Integer.MAX_VALUE န-9 Wild Card န-9 Import လuပ#ထ+$တ-6
Double.MAX_VALUE တiuQiခ-6မယ#ဆiuရင# အတiအကG Import လuပ#ထ+$တ-6 Integer.MAX_VALUE ကiu အသuB$Cပu
သ&+$မH+ ပ3တယ#။ double maxDouble = MAX_VALUE လiu double variable မH+ အစ+$ထiu$မယ#ဆiuရင#eတ+6
Wild Card ထ-က Double.MAX_VALUE ကiu အသuB$CပuမH+ Cဖစ#ပ3တယ#။
Access Modifiers
Class eတ&န-9 Class Members eတ&ရ-I Access လuပ#Aiuင#ခ&င#6ကiu သတ#မHတ#eပ$eနတ+ကeတ+6 Access Modifier
eတ&ပ- Cဖစ#Fကပ3တယ#။ Class eတ&န-9 Member eတ&မH+ Access Modifier eတ&ကiu မeရ$သ+$ထ+$ရင# အ-6ဒ? Class
တည#Qieနတ-6 Package ထ-မH+သ+ အသuB$CပuလiuရမH+ Cဖစ#ပ3တယ#။
တကယ#လiu တစ#Cခ+$ Package eတ&ကပ3 အသuB$CပueစခGင#တ-6အခ3 ဒ3မHမဟuတ# Package တစ#ခuထ-မH+ Qiတ-6 Class
eတ& အခGင#$ခGင#$ Access လuပ#ပiuင#ခ&င#6ကiu သတ#မHတ#လiuတ-6 အခ3မGiu$မH+ Access Modifier eတ&ကiu သuB$Kပ?$ သတ#မHတ#
eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
Modifiers Descriptions
default Access Modifier အ+$ eရ$သ+$ထ+$Cခင#$မQiပ3က Package အတ&င#$Qi Class
မG+$မH ဆက#သ&ယ#Aiuင#မည#
Class eတ&န-9 Class Member eတ&Cဖစ#Fကတ-6 Variable eတ&၊ Method eတ&၊ Constructor eတ&န-9 အCခ+$ Nested
Member eတ&မH+ Access Modifier ကiu eရ$သ+$Kပ?$ အသuB$Cပuပiuင#ခ&င#6ကiu သတ#မHတ#eပ$Aiuင#ပ3တယ#။ ဘ+eFက+င#6
Access လuပ#ပiuင#ခ&င#6ကiu လiuအပ#ရတ+လ- ဘယ#လiueရ$သ+$သင#6သလ-န-9 ပတ#သက#Kပ?$eတ+6 OOP ရ-I Encapsulation
အeFက+င#$eCပ+တ-6 အခ3မH+လ- ထပ#မBeဖ2Cပသ&+$မH+ Cဖစ#ပ3တယ#။
Default Access
Class eတ&န-9 Class Members eတ&မH+ Access Modifier eတ&ကiu eရ$သ+$ထ+$Cခင#$ မQiပ3က Default Access
ကiu ရQiမH+ Cဖစ#ပ3တယ#။ Package တစ#ခuအတ&င#$မH+ Qiတ-6 အCခ+$ Class eတ&ကeန ဆက#သ&ယ# အသuB$CပuAiuင#မH+ Cဖစ#
ပ3တယ#။ ဒ3eပမ-6 အCခ+$ Package eတ&ရ-I Class eတ&ကeနeတ+6 Cမင#ရမH+ မဟuတ#တ-6 အတ&က# အသuB$Cပuခ&င#6 QiမH+
မဟuတ#ပ3ဘO$။
package com.jdc.common;
class StringConverter {
အထက#ပ3အတiuင#$ StringConverter Class မH+ Access Modifier ကiu eရ$မထ+$ပ3က Default Access Cဖစ#eန
Kပ?$ com.jdc.common Package အတ&င#$မH+Qiတ-6 အCခ+$ Class eတ&ကသ+ အသuB$CပuAiuင#မH+ Qiပ3တယ#။ ဒ?လiu
Public Access
Class eတ&န-9 Class Members eတ&မH+ Public Access Modifier ကiu အသuB$CပuKပ?$eရ$သ+$ထ+$ရင#eတ+6 အ-6ဒ3
Class eတ& Member eတ&ဟ+ Public Access ကiu ရQiမH+ Cဖစ#ပ3တယ#။ Public Access ဆiuတ+ကeတ+6 မည#သ
ည#6 Class က မဆiu Access လuပ#ပiuင#ခ&င#6ရQiတ+ကiu ဆiuလiuတ+ပ3။
package com.jdc.common;
အထက#ပ3အတiuင#$ StringConverter Class န-9 getUnicode() Method မH+ public Access Modifier ကiu public
Access Modifier ကiu eရ$သ+$ထ+$တ-6 အတ&က# အCခ+$ Package eတ&ကeနလ- Access လuပ#Kပ?$ အသuB$CပuAiuင#မH+
Cဖစ#ပ3တယ#။
တကယ#လiu getUnicode() Method ကiu public လuပ#ထ+$Kပ?$ StringConverter Class ကiu Default Access
အတiuင#$ထ+$မယ#ဆiuရင#eတ+6 Class ကiu မCမင#ရတ-6 အတ&က# Method ကiu အသuB$CပuAiuင#မH+ မဟuတ#ပ3ဘO$။ Class
ထ-က Member eတ&ကiu အသuB$CပuAiuင#ဖiuအတ&က# Class ကiuလ- အသuB$CပuAiuင#မHရမH+ Cဖစ#ပ3တယ#။
package com.jdc.repository;
import com.jdc.common.StringConverter;
// Other Codes
}
}
Protected Access
Class တစ#ခuရ-I Member eတ&ကiu Package တစ#ခuထ-မH+ Qiတ-6 Class eတ&န-9 Sub Classs eတ&ကသ+ အသuB$Cပueစ
ခGင#တယ#ဆiuရင# Proteced Access Modifier ကiu အသuB$CပuAiuင#ပ3တယ#။
package com.jdc;
အထက#ပ3အတiuင#$ Shape Class ထ-မH+ width န-9 height ကiu protected Access Modifier န-9 eရ$သ+$ထ+$တ-6
အတ&က# တစ#Cခ+$ Package ထ-မH+Qiတ-6 Sub Class eတ&ကပ3 width န-9 height ကiu အသuB$Cပuလ+Aiuင#မH+ Cဖစ#ပ3
တယ#။
package com.jdc;
အထက#ပ3နမOန+ထ-မH+လiu ShapeTest န-9 Shape တiuဟ+ com.jdc ဆiuတ-6 Package ထ-မH+ အတOQiတ-6 အတ&က#
shape object ကeန Protected Member eတ& Cဖစ#Fကတ-6 shape.width န-9 shape.height တiuကiu အသuB$Cပuလiuရ
eနတ+ Cဖစ#ပ3တယ#။
package com.jdc.other;
import com.jdc.Shape;
OtherShape Class ဟ+ Shape Class န-9 Package မတOပ3ဘO$။ ဒ3eပမ-6 OtherShape ဟ+ Shape Class ကiu
Extends လuပ#ထ+$ပ3တယ#။ ဒ36eFက+င#6 OtherShape Object Cဖစ#တ-6 other ကeန height ကiueက+ with ကiuပ3
Access လuပ#Aiuင#Kပ?$ getArea() Method ကiuလ- အသuB$CပuAiuင#တ+ Cဖစ#ပ3တယ#။
Protected Modifier eတ&ဟ+ Package အတ&င#$မH+လ- အသuB$CပuAiuင#သလiu Package အCပင#မH+Qiတ-6 Sub Class
eတ&ကeနတဆင#6လ- အသuB$CပuAiuင#eအ+င# eဆ+င#ရ&က#eပ$Aiuင#ပ3တယ#။ ဒ36eFက+င#6 Protected Access Modifier eတ&
ကiu Package ++ Access Modifier လiuလ- eခ2ဆiuAiuင#တ+ Cဖစ#ပ3တယ#။
Private Access
လက#Qi Class တစ#ခuထ-ကသ+ အသuB$CပuAiuင#တ-6 Member eတ&ကiu eရ$သ+$လiuတ-6 အခ3မGiu$မH+ Private Access
Modifier ကiu အသuB$Cပueရ$သ+$Aiuင#ပ3တယ#။ Class Member eတ&မH+ private လiueရ$လiuက#တ+န-9 အ-6ဒ? Member
eတ&ဟ+ လက#Qi Class ထ-ကသ+ အသuB$CပuAiuင#eတ+6မH+ Cဖစ#ပ3တယ#။
package com.jdc;
Java မH+eCပ+တ-6 Primitive Data Type eတ&ဆiuတ+က OS ကeန Cပင#eပ$ထ+$တ-6 Data Type eတ& Cဖစ#ပ3တယ#။
ဒ?လiu ကနဦ$ Data Type eတ&ကiu Primitive Data Type eတ&လiu eခ2တ+ Cဖစ#ပ3တယ#။
အeCခခBအ+$Cဖင#6 Primitive Data အမGiu$အစ+$ ၃ မGiu$Qiပ3တယ#။ True န-9 False ကiuပ- eဖ2CပAiuင#တ-6 Boolean ဓ
အမGiu$အစ+$၊ စ+လuB$eတ&ကiu ကiuယ#စ+$Cပuတ-6 Character အမGiu$အစ+$eတ& န-9 Number eတ&ပ- Cဖစ#ပ3တယ#။ Number
eတ&ကiuမHထပ#Kပ?$ အCပည#6ကiန#$ Integer eတ&န-9 ဒဿမကiန#$ Floating Number eတ&ဆiuKပ?$ ခ&-Cခ+$Aiuင#ပ3တယ#။
Integer eတ&အထ-မH+မH အသuB$Cပueနတ-6 Memory အလiuက# byte, short, int, long ဆiuKပ?$ခ&-Cခ+$Kပ?$၊ ဒသမကiန#$eတ&
ကiuလ- float န-9 double ဆiuKပ?$ ခ&-Cခ+$ပ3တယ#။
ဒ36eFက+င#6 Java မH+ အသuB$Cပueနတ-6 Primitive Data Type အ+$လuB$eပ3င# ၈ မGiu$Qiတယ#လiu eCပ+Aiuင#မH+ Cဖစ#ပ3တယ#။
Number eတ&ထ-မH+ Integer အeနန-9 byte, short, int, long တiuကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ က&+Cခ+$တ+
ကeတ+6 Memory eပ2မH+ အသuB$CပuAiuင#တ-6 Size ပ3ပ-။ အထက#ပ3ဇယ+$မH+ eဖ2Cပထ+$တ-6အတiuင#$ byte eတ&ဆiuရင# 8
bit + or - Integer eတ&ကiu အသuB$CပuAiuင#မH+ Cဖစ#Kပ?$ long type ဆiuရင# + or - 64 bit Integer eတ&ကiu အသuB$CပuAiuင#မH+
Cဖစ#ပ3တယ#။
Floating Number eတ&ဆiuရင#eတ+6 float န-9 double type eတ&ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ float ကeတ+6 32
bit + or - Floating Number eတ&ကiu အသuB$CပuAiuင#မH+ Cဖစ#Kပ?$ double ဆiuရင#eတ+6 64 bit + or - Floating
Number eတ&ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Character eတ&ကiu ကiuယ#စ+$Cပuတ-6 char type eတ&မH+eတ+6 16 bit Unicode Character eတ&ကiu အသuB$CပuAiuင#ပ3
တယ#။ တဖန# True န-9 False သ+ပiuင#တ-6 boolean type eတ&မH+eတ+6 true န-9 false ကiuသ+ အသuB$CပuAiuင#ပ3မယ#။
Literals
Java Source File eတ&ထ-မH+ Source Code eတ&၊ Comment eတ&န-9 Variable eတ&ရ-I Value eတ&ကiu eရ$သ+$
Aiuင#ပ3တယ#။ Variable eတ&ကiu Initialize လuပ#တ-6အခ3 ဒ3မHမဟuတ# Variable တစ#ခuရ-I တန#ဖiu$လiu အစ+$ထiu$တ-6 အခ3
မGiu$မH+ Source Code eတ&ထ-မH+ Value eတ&ကiu တiuက#Uiuက#eရ$သ+$eလ6Qiပ3တယ#။ Source Code eတ&ထ-မH+
တiuက#Uiuက#eရ$သ+$ထ+$တ-6 Value eတ&ကiu Literals eတ&လiueခ2ပ3တယ#။ Primitive Type eတ&မH+ ကiuယ#ပiuင#
Literals eတ&ကiu ပiuင#ဆiuင#Fကပ3တယ#။
package com.jdc;
Boolean Literals
Boolean Type Variable eတ&မH+ အသuB$CပuAiuင#တ-6 literals eတ&ကeတ+6 true န-9 false သ+Qiပ3တယ#။
package com.jdc;
Character Literals
package com.jdc;
Numbers Literals
Integer eတ&Cဖစ#Fကတ-6 အCပည#6ကiန#$eတ&မH+ ဆiuရင# Decimal, Hexadecimal, Octal န-9 Binary ပuBစBန-9 တန#ဖiu$eတ&
ကiu eရ$သ+$လiuရAiuင#ပ3တယ#။ Decimal ဆiuတ+က ဆယ#ဆတiu$ပuBစBန-9 eရ$သ+$နည#$ပ3။ က\န#eတ+#တiu အCပင#မH+
အသuB$Cပueနတ-6 ပuBစBCဖစ#Kပ?$ အသuB$မG+$တ-6 ပuBစBCဖစ#ပ3တယ#။
Binary ပuBစBကeတ+6 0 eတ& 1 eတ&န-9 Integer ကiu eဖ2Cပတ-6 ပuBစBCဖစ#ပ3တယ#။ 1 ဟ+ 1 Cဖစ#Kပ?$ 10 ဆiuတ+က 2 Cဖစ#ပ3
မယ#။ တဖန# 11 ဆiuတ+ကeတ+6 3 ကiu eဖ2Cပတ+ Cဖစ#ပ3မယ#။ Literal eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ e^မH+ Prefix
အeနန-9 0B ဒ3မHမဟuတ# 0b ကiu eရ$သ+$eပ$ရပ3မယ#။
package com.jdc;
Floating Number eတ&အeနန-9 float န-9 double တiuပ-Qiပ3တယ#။ အ-6ဒ3eတ&ကiueတ+6 ဒသမကiန#$eရ$သလiuပ- eရ$သ+$
Aiuင#ပ3တယ#။
Suffix of Numbers
Integer Number eတ&အတ&က# byte, short, int, long ဆiuKပ?$Qiပ3တယ#။ Kပ?$eတ+6 Floating Number eတ&အတ&က#
float န-9 double Qiပ3တယ#။ Literal န-9 ဒ?အတiuင#$eရ$မယ#ဆiuရင# အ-6ဒ? Type eတ&ကiu ခ&-Kပ?$ eဖ2မCပAiuင#ပ- Default Type
ကiu အသuB$Cပuသ&+$ပ3မယ#။
Integer Literal eတ&န-9 eရ$ထ+$မယ#ဆiuရင# Default အတiuင#$ဆiuပ3က int ကiu အသuB$Cပuသ&+$ပ3မယ#။ Kပ?$eတ+6
Floating Number eတ&ဆiuရင#လ- default အတiuင#$ဆiuပ3က double type ကiu အသuB$Cပuသ&+$မH+ Cဖစ#ပ3တယ#။
Variable တစ#ခuမH+ Assign လuပ#တ-6 eနရ+မH+ မသiသ+eပမ-6 Method eတ&ကiu Invoke လuပ#တ-6 အခ3မH+ Parameter
eတ&eနရ+မH+ Literals eတ&ကiueရ$သ+$တ-6 eနရ+မH+ သတiCပuသင#6ပ3တယ#။
eအ+က#ပ3 ကuဒ#နမOန+ထ-မH+လiu take() method ကiu Argument Type မတOeအ+င# Method ၄ မGiu$eရ$သ+$ထ+$ပ3
တယ#။ Argument Type eတ&ကeတ+6 အသ?$သ?$ byte, short, int, long တiuCဖစ#Fကပ3တယ#။ Method Name တO
eပမ-6 Argument Type မတOတ-6 အတ&က# သOတiueတ&ဟ+ Method တစ#ခuစ?လiu Java Compiler ကeက+ Java
Runtime ကပ3 မHတ#ယOeနFကပ3တယ#။
တကယ#လiu Main Method ထ-ကလiu take(10) လiueရ$လiuက#ရင# ဘယ# Method ကiu အလuပ#လuပ#သ&+$မH+လ-။ ဒ?eနရ+
မH+eတ+6 Integer Literal eတ&ရ-I Default Type ဟ+ int Cဖစ#တ-6 အတ&က# int type ကiu Argument အeနန-9 ယOတ-6
Method ကiu အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။
တကယ#လiu long type အeနန-9 အသuB$CပuခGင#တယ#ဆiuရင#eတ+6 Literals ရ-I eန+က#မH+ l ဒ3မHမဟuတ# L ကiu Suffix
အeနန-9 eရ$သ+$eပ$ရပ3မယ#။ take(10L) လiueရ$လiuက#ရင# long Type Cဖစ#တယ#ဆiuတ+ကiu သတ#မHတ#eပ$Aiuင#တ-6
အတ&က# take(long l) Method ကiu အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။
အလ+$တOပ- suffix ကiu အသuB$CပuAiuင#တ+က float န-9 double Cဖစ#ပ3တယ#။ float type အတ&က# suffix အeနန-9 f ဒ3မH
မဟuတ# F ကiu အသuB$CပuAiuင#Kပ?$ double type အတ&က# d န-9 D ကiu အသuB$CပuAiuင#ပ3တယ#။
ဒ3Cဖင#6ရင# byte, short, int မH+eတ+6 suffix မQiFကပ3ဘO$။ ဒ3Cဖင#6 byte ဒ3မHမဟuတ# short ကiu သuB$တ-6 Method ကiu
Invoke လuပ#ခGင#ရင# ဘယ#လiuလuပ#မလ-။ int ကiu အသuB$လiuတ-6 Type ကiu eCပ+င#$ဖiuလiuအပ#ပ3တယ#။ ဒ3ကiu Type
Casting လiueခ2ပ3တယ#။
Primitive Casting
Size eသ$တ-6 Type ကeန Size Pက?$တ-6 Type ကiu eCပ+င#$ခGင#ရင# Java Compiler က အလiuအeလG+က#eCပ+င#$eပ$
Aiuင#တယ#။ အ-6ဒ3ကiu Implesit Casting လiueခ2ပ3တယ#။ ဥပမ+အ+$Cဖင#6 byte variable တစ#ခuကiu int variable ဆ?ကiu
အစ+$ထiu$တယ# ဆiuFကပ3စiu။ အ-6ဒ3ဆiuရင# ဘ+မHအeထ&အထO$eCပ+င#$စရ+မလiuပ- eရ$သ+$Aiuင#ပ3တယ#။ ဒ3eပမ-6 int
variable ကeန byte Variable ကiu Assign လuပ#မယ#ဆiuရင#eတ+6 (byte) ဆiuKပ?$ cast လuပ#eပ$ဖiuလiuအပ#ပ3တယ#။
byte b = 10;
int i = b;
b = (byte) i;
float f = 10.1;
double d = f;
f = (float)d;
}
}
အလ+$တOပ- float variable ကiu double variable eနရ+မH+ Assign လuပ#မယ#ဆiuရင# double က float ထက#ပiuKပ?$
Pက?$တ-6 အတ&က# အeထ&အထO$eCပ+င#$Kပ?$eရ$စရ+မလiuအပ#ပ3ဘO$။ ဒ3eပမ-6 float variable eနရ+ကiu double variable
ကiu Assign လuပ#မယ#ဆiuရင#eတ+6 (float) ဆiuKပ?$ Type Cast လuပ#eပ$မHရပ3မယ#။
အထက#ပ3 နမOန+ထ-မH+ take(10) လiueရ$ရင# take(int i) ကiu eခ2သ&+$ပ3မယ#။ ဒ36eFက+င#6 take(byte b) method ကiu
Invoke လuပ#eစခGင#ရင#eတ+6 take((byte)10) ဆiuKပ?$ Type Cast လuပ#Kပ?$မH take() Method ကiu Invoke လuပ#eပ$ဖiu
လiuအပ#ပ3တယ#။
eရ$လiuမရတ-6 ပuBစBeတ&Cဖစ#ပ3တယ#။
eရ$လiuရတ-6 ပuBစBCဖစ#ပ3တယ#။
က\န#eတ+#တiu နမOန+ထ-မH+ အသuB$CပueနFကတ-6 String တiuလiu Java SE API ထ-မH+ပ3တ-6 Class eတ&eက+၊ က\န#eတ+#
တiu ကiuယ#တiuင#eရ$သ+$ထ+$တ-6 Class eတ&အ+$လuB$ဟ+လ- Reference Data Type eတ&Cဖစ#Fကပ3တယ#။ ဒ36eFက+င#6
Java မH+ Primitive Data Type က ၈ မGiu$သ+Qieပမ-6 Reference Data Type ကeတ+6 Class eတ&Qiသeလ+က#Qi
eနမH+ Cဖစ#ပ3တယ#။
class Person {
Stirng name;
}
က\န#eတ+#တiu e^မH+လ- eရ$ဘO$ပ3တယ#။ Person p = new Person() ဆiuတ+ new Person() ဆiuKပ?$ Object
eဆ+က#Kပ?$ Person type p Variable eနရ+မH+ လ+အစ+$ထiu$တယ#လiuပ- သiလ+FကမH+ Cဖစ#ပ3တယ#။ တကယ#eတ+6
Person Type p variable ကiu Stack Memory eပ2မH+ သ&+$eဆ+က#ပ3တယ#။
(Stack Memory ဆiuတ+က JVM eပ2မH+ အသuB$Cပuတ-6 Memory Aera တစ#မGiu$Cဖစ#ပ3တယ#။ JMV eပ2မH+ Stack န-9
Heap ဆiuKပ?$ Memory Area AHစ#ခuကiu အသuB$CပuFကပ3တယ#။ Stack Memory ဆiuတ+က CPU န-9 အန?$ဆuB$eနရ+မH+
QiKပ?$ CPU ကeန တiuက#Uiuက# ဆက#သ&ယ# အသuB$CပuAiuင#တ-6 Memory Area Cဖစ#Kပ?$ Life Time ကလ- အeတ+#eလ$ကiu
တiueတ+င#$ပ3တယ#။ က\န#eတ+#တiu eရ$ထ+$တ-6 ကuဒ#eတ&ကiu အလuပ#လuပ#eနစT# အ-6ဒ? Code eတ&ဟ+ Stack eပ2မH+
Qieနပ3မယ#။ Kပ?$သ&+$ရင#eတ+6 eပG+က#ကuန#မH+ Cဖစ#ပ3တယ#။ Heap ဆiuတ+ကeတ+6 Stack ထက#ပiuKပ?$ ကGယ#Cပန#9Kပ?$
CPU ကeန တiuက#Uiuက# ဆက#သ&ယ#Kပ?$ အသuB$Cပueလ6မQiပ3ဘO$။ အFက+Pက?$လ- eဒတ+eတ&ကiu သiမ#$ထ+$Kပ?$ အသuB$Cပu
Aiuင#ပ3တယ#)
eန+က#ကပ3တ-6 new Person() ဆiuတ+ကeတ+6 Heap Memory eပ2မH+ Person Object ကiu သ&+$eဆ+က#တ+ပ-
Cဖစ#ပ3တယ#။ Object eဆ+က#တ-6eနရ+မH+ Instance Variable eတ&Qiရင# Class ထ-ကeန Copy ကO$သ&+$Kပ?$
Object ထ-မH+ သiမ#$ထ+$ပ3မယ#။ ဒ3eFက+င#6 name Variable ဟ+လ- Object ထ-ကiuပ3သ&+$ပ3မယ#။ Kပ?$eတ+6မH
eဆ+က#ခ-6တ-6 Memory Address ကiu Person p eနရ+မH+ လ+Kပ?$ အစ+$ထiu$ပ3တယ#။
p.name ဆiuKပ?$ Variable p ရ-I name ကiu အသuB$CပuKပ?ဆiuရင# p eနရ+မH+ Qiတ-6 Memory Address ကeန Object ကiu
Reference လuပ#Kပ?$ name eနရ+ကiu အသuB$CပuမH+ Cဖစ#ပ3တယ#။ ဒ?လiu Variable eတ&ကeန Object Qiတ-6eနရ+ကiu
Reference လuပ#Kပ?$ သuB$eနရတ-6 အတ&က# Object eတ&ကiu Reference Type Variable eတ&လiu eခ2ဆiuရCခင#$ Cဖစ#ပ3
တယ#။
Learning Java 51 မင#$လ&င#
Java Developer Class
တကယ#eတ+6 Primitive eတ&တuန#$က Variable eနရ+ကiu Assign လuပ#တ+န-9 ပတ#သက#Kပ?$ ဒ?eနရ+မH+ eCပ+ခGင#တ-6
အတ&က# e^မH+ မeCပ+ခ-6ပ3ဘO$။ Primitive Type Variable eတ&ကeတ+6 Reference Type Variable eတ&န-9 မတO
ပ3ဘO$။
int a = 77; လiueရ$ထ+$ရင# Stack Memory eပ2မH+ a အတ&က# 32 Bit စ+ eနရ+ယOပ3တယ#။ Kပ?$ရင# 77 ကiu Value
အeနန-9 အစ+$ထiu$မH+ Cဖစ#ပ3တယ#။ မHတ#မယ#ဆiuရင# Primitive Type Variable eတ&က Variable eတ&eနရ+မH+ တ
ကယ#6 တန#ဖiu$ကiu လ+အစ+$ထiu$Kပ?$ Reference Data Type eတ&ကeတ+6 eဆ+က#ထ+$တ-6 Object ကiu Reference
လuပ#Aiuင#တ-6 Memory Address ကiu အစ+$ထiu$တ+ပ- Cဖစ#ပ3တယ#။
int b = a;
Person q = p;
a = 100;
p.name = "Thidar";
}
}
Variable eတ&ကiu အCခ+$ Variable eတ&မH+ အစ+$ထiu$Fကည#6ရeအ+င#။ int b = a; လiueရ$လiuက#တ+န-9 a ရ-I တန#ဖiu$Cဖစ#
တ-6 77 ဟ+ b ရ-I တန#ဖiu$Cဖစ#သ&+$ပ3မယ#။ ဒ36eFက+င#6 eအ+က#မH+ a = 100 လiu a ရ-I တန#ဖiu$ကiu 100 လiu အစ+$ထiu$ရင#
လ- b ရ-I တန#ဖiu$ဟ+ 77 ပ- Cဖစ#eနမH+ပ3။
ဆက#လက#Kပ?$ Method Argument eတ&မH+ သuB$တ-6 Variable eတ&ဆiuတ+ ဘယ#လiuဟ+မGiu$လ- ဆiuတ+ကiu eလ6လ+
သ&+$Fကရeအ+င#။ Primitive Type ကeန စKပ?$ eလ6လ+သ&+$Fကရeအ+င#။
int a = 77;
change(a);
System.out.println(a);
}
အထက#မH+ eဖ2Cပထ+$သလiu change() method က int type Variable တစ#ခuကiu Argument အeနန-9 ယOပ3တယ#။
Kပ?$eတ+6မH Method ထ-မH+ a = 100 ဆiuKပ?$ a ရ-I တန#ဖiu$ကiu eCပ+င#$လiuက#ပ3တယ#။ Main Method ထ-မH+eတ+6
change(a) ဆiuKပ?$ Invoke လuပ#ပ3တယ#။ System.out.println(a) လiueရ$လiuက#ရင# a ရ-I တန#ဖiu$ဟ+ ဘ+Cဖစ#သ&+$မ
လ-။ Method ထ-မH+ a = 100 လiu eCပ+င#$ထ+$တ-6 အတ&က# a ရ-I တန#ဖiu$ဟ+ 100 လiueCပ+င#$သ&+$တယ#လiu ထင#ပ3
မယ#။ ဒ3eပမ-6 အeCဖဟ+ 77 ပ-Cဖစ#eနမH+ Cဖစ#ပ3တယ#။
ဘ+လiuလ- ဆiueတ+6 change(a) လiu eရ$လiuက#တ+ဟ+ Variable a ကiu change() Method ကiu eပ$လiuက#တ+မဟuတ#
ပ3ဘO$။ Variable a ရ-I value Cဖစ#တ-6 77 ကiu change() Method ရ-I Argument Cဖစ#တ-6 a eနရ+ကiu Copy ကO$Kပ?$
eပ$လiuက#တ+ Cဖစ#ပ3တယ#။ Value ကiuပ- eပ$လiuက#တ+Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 change() method ထ-က a ဟ+
Main Method ထ-က Variable a န-9 သက#ဆiuင#မ[မQiပ3ဘO$။ change() Method ထ-က a ရ-I တန#ဖiu$ကiu eCပ+င#$လiuက#
တ+လ- change() method ထ-က a သ+ eCပ+င#$လ-သ&+$တ+ Cဖစ#Kပ?$၊ Main Method ထ-က a ရ-I တန#ဖiu$ဟ+ နဂiu
အတiuင#$ 77 ပ-Cဖစ#eနတ+ Cဖစ#ပ3တယ#။
Main Method ထ-မH+ change(p) လiueရ$လiuက#တ+ဟ+ Main Method ထ-မH+Qiတ-6 p variable ရ-I Value ကiu
change() method ရ-I local variable p မH+ Copy ကO$eပ$လiuက#တ+ပ3ပ-။ Method eတ&ကiu Invoke လuပ#တ-6 eနရ+
မH+ Variable eတ&ကiu Parameter အeနန-9 eပ$လiuက#တယ#ဆiuတ+ Variable ကiu eပ$လiuက#တ+မဟuတ#ပ- Variable ရ-I
Value ကiuပ- eပ$လiuက#တ+ Cဖစ#ပ3တယ#။
Reference Type Variable eတ&ရ-I Value ဟ+ Reference လuပ#eနတ-6 Object eတ&ရ-I Memory Address သ+
Cဖစ#တ-6 အတ&က# change() Method ထ-မH+ Qieနတ-6 p ဟ+လ- Main Method ထ-က p က Reference လuပ#eနတ-6
Object ကiuပ- Reference လuပ#eနပ3တယ#။ change() method ထ-မH+ p.name ကiu eCပ+င#$လiuက#တ-6 အတ&က# Main
Method ထ-မH+Qiတ-6 p.name ဟ+လ- eCပ+င#$သ&+$မH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 System.out.println(p.name) လiu
eရ$လiuက#တ-6 အခ3မH+ အeCဖဟ+ “Thidar” လiu eဖ2Cပသ&+$မH+ Cဖစ#ပ3တယ#။
အထက#ပ3အတiuင#$ Primitive Data Type အလiuက# Wrapper Class eတ&ကiu Cပင#eပ$ထ+$Kပ?$ Primitive Type မH
ဒ3မHမဟuတ# String တစ#ခuကeန Object အCဖစ#eCပ+င#$Aiuင#eအ+င# Constructor eတ&ကiu Cပင#eပ$ထ+$ပ3တယ#။
int a = 10;
Integer b = new Integer(a);
int c = b.intValue();
Java SE 5 မတiuင#ခင#ကဆiuရင# primitive type a ကiu Integer အCဖစ#eCပ+င#$ခGင#ရင# new Integer(a) ဆiuKပ?$
Constructor ကiuအသuB$CပuKပ?$ Object အCဖစ#eCပ+င#$မHရပ3တယ#။ ဒ?လiuမGiu$ Primitive Type ကeန သbရ-I Wrapper
Object အCဖစ#eCပ+င#$တ+ကiu Boxing လiueခ2ပ3တယ#။ Object ဆiuတ-6 eသတl +ထ-ထည#6တယ#ဆiuတ-6 သeဘ+eပ36ဗG+။
တဖန# Wrapper Object ကeန primitive type ကiu Cပန#လiuခGင#ရင#လ- b.intValue() ဆiuKပ?$ Method ကiu အသuB$CပuKပ?$
Type ကiu Cပန#eCပ+င#$eပ$ဖiuလiuပ3တယ#။ အ-6ဒ3ကiueတ+6 Unboxing လiueခ2ပ3တယ#။ Object ဆiuတ-6 eသတl +ထ-ကeန
ထuတ#Kပ?$ Primitive ကiu Cပန#eCပ+င#$eပ$တယ#ဆiuတ-6 သeဘ+eပ36။
ဒ3eပမ-6 Java SE 5 eရ+က#တ-6 အခ3မH+ ဒ3eတ&ဟ+ မလiuအပ#eတ+6ပ3ဘO$။ Boxing eတ& Unboxing eတ&ကiu JVM က
အလiuအeလG+က#လuပ#eဆ+င#eပ$လ+Aiuင#ပ3တယ#။
int a = 10;
Integer b = a;
int c = b;
အထက#ပ3အတiuင#$ Wrapper Object b eနရ+ကiu Primitive Variable တစ#ခuCဖစ#တ-6 a ကiu တiuက#Uiuက# အစ+$ထiu$Aiuင#
သလiu၊ primitive type variable တစ#ခuCဖစ#တ-6 c eနရ+ကiuလ- int ရ-I Wrapper Object တစ#ခuCဖစ#တ-6 b န-9 အစ+$ထiu$
လ+Aiuင#ပ3တယ#။
Wrapper Class တiuင#$မH+ compare() န-9 equals() Method eတ&ပ3လ+ပ3တယ#။ ဒ3eပမ-6 ဒ3ဟ+လ- Primitive Type
eတ&န-9 Operators eတ&ကiu တ&-Kပ?$eရ$မယ#ဆiuရင# Cဖစ#eနတ+Cဖစ#တ-6 အတ&က# အရမ#$ကiu လiuအပ#eနတ+eတ+6 မဟuတ#
ပ3ဘO$။ ဒ3eပမ-6 တစ#Cခ+$ Primitive Type eတ& အCဖစ#eCပ+င#$လiuရတ-6 အခGက#ကeတ+6 သuB$ခGင#စရ+ အခGက#တစ#ခuCဖစ#
ပ3တယ#။
Number အမGiu$အစ+$ Wrapper Type eတ&မH+ compare() ဆiuတ-6 Static Method တစ#ခuန-9 compareTo() ဆiuတ-6
Instance Method eတ&ပ3ဝင#Kပ?$ Variable AHစ#ခuကiu A[င#$ယHT#ရ+မH+ အသuB$CပuAiuင#ပ3တယ#။
Integer c = a;
Integer d = b;
Integer.compare(int a, int b) Method ကeတ+6 Static Method Cဖစ#Kပ?$ int variable AHစ#ခuကiu A[င#$ယHT#ရ+မH+
အသuB$CပuAiuင#eအ+င# Cပင#ဆင#ထ+$တ-6 Method တစ#ခuQiပ3တယ#။ အCခ+$eသ+ Number Type Class eတ&မH+လ-
compare method ကiu Cပင#eပ$ထ+$ပ3တယ#။ Double.compare() Method ကiu အသuB$Cပuမယ#ဆiuရင# double
variable AHစ#ခuကiu Compare လuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။ compare() Method ရ-I Return Type ကeတ+6 int Cဖစ#Kပ?$
variable AHစ#ခuတန#ဖiu$တOeနရင# 0 ကiu Return Cပန#မH+ Cဖစ#Kပ?$ ပထမ Variable ကPက?$eနရင# 1 ကiu Return Cပန#Kပ?$၊
ပထမ Variable က ငယ#eနရင# -1 ကiu Return Cပန#မH+ Cဖစ#ပ3တယ#။
တOမတOစစ#ခGင#တ-6အခ3မH+
Variable တန#ဖiu$AHစ#ခu တOမတO စစ#ခGင#တ-6 အခ3မH+ Primitive eတ&မH+ Operators eတ&ကiu အသuB$CပuKပ?$ စစ#လiuရပ3
တယ#။ ဒ3eပမ-6 Wrapper Class eတ&မH+ java.lang.Object ကeနပ3လ+တ-6 equals() method ကiu အသuB$CပuKပ?$
စစ#eဆ$Aiuင#မH+ Cဖစ#ပ3တယ#။
System.out.println(a == b);
Double c = a;
System.out.println(c.equals(b));
}
Type eCပ+င#$ခGင#တ-6အခ3
Primitive Type eတ&မH+ Integer eတ&အတ&က# Type eလ$မGiu$QiKပ?” Floating Number eတ&အတ&က# Type AHစ#
မGiu$Qiပ3တယ#။ Primitive Type eတ&မH+ ဆiuရင# Type eတ&ကiu eCပ+င#$ခGင#ရင# Type Casting ကiu အသuB$Cပuလiuရပ3
တယ#။ ဒ3eပမ-6 Wrapper Object eတ&ကiu အသuB$Cပuမယ#ဆiuရင# Type တစ#မGiu$ကeန တစ#မGiu$ကiu အလ&ယ#တကO
eCပ+င#$လiuရပ3တယ#။ Number Type Wrapper Class eတ&ဟ+ Number ဆiuတ-6 Abstract Class ကiu Extends
လuပ#ထ+$FကKပ?$ Number Class ထ-မH+ Type eCပ+င#$ဖiu eအ+က#ပ3 Method eတ&ကiu Cပင#ဆင#ထ+$ပ3တယ#။
longValue()
abstract long Returns the value of the specified number as a long, which may
involve rounding or truncation.
shortValue()
short Returns the value of the specified number as a short, which may
involve rounding or truncation.
အထက$ပ*အတiuင$2 Primitive Wrapper Object eတ,ကiu အသu62(ပuမယ$ဆiuရင$ အ(ခ42 Type eတ,ကiuလ@ အသင$A
(ပင$ထ42တ@A Method eတ,ကiu အသu62(ပuBပC2 အလ,ယ$တကDe(ပ4င$2လ@9iuင$မ74 (ဖစ$ပ*တယ$။ အ(ခ42eသ4 Number
Type Wrapper Class eတ,မ74လ@ Type e(ပ4င$2တ@A Method eတ,ကiu အသu62(ပu9iuင$မ74 (ဖစ$ပ*တယ$။
Arrays
ဒ?အခန#$မH+eတ+6 Java မH+ အသuB$Cပueနတ-6 Array ဆiuတ+ ဘယ#လiuဟ+မGiu$လ-။ Kပ?$eတ+6 Array eတ&ကiu ဘ+လiu
လiuအပ#Fကတ+လ-၊ Array Object eတ&ကiu ဘယ#လiu တည#eဆ+က#Fကမလ-၊ Array ထ-မH+ပ3တ-6 Element eတ&ကiu
ဘယ#လiu Access လuပ#မလ-ဆiuတ+န-9 Multi Dimension Array eတ&အeFက+င#$ကiu eလ6လ+သ&+$Fကပ3မယ#။
ဒ3eပမ-6 Array eတ&က Type eရ$သ+$ပuBeက+၊ Object တည#eဆ+က#ပuBeတ&ပ3 တစ#Cခ+$ Object eတ&န-9 မတOFကပ3
ဘO$။ ဒ? အခန#$မH+eတ+6 Array eတ&အeFက+င#$ကiu eလ6လ+သ&+$Fကပ3မယ#။
အစကထ-က int အမGiu$အစ+$ Data ၁၀ ခu အသuB$Cပuမယ#လiu သတ#မHတ#ထ+$တယ#ဆiuရင# အ-6ဒ? Array ထ-ကiu int ကလ&-
Kပ?$ သiမ#$ထ+$လiuမရAiuင#ပ3ဘO$။ Kပ?$eတ+6 Data ကiuလ- 10 ခuထက#ပiuKပ?$ သiမ#$မeပ$ထ+$Aiuင#ပ3ဘO$။ Kပ?$eတ+6 Array ထ-
မH+ သiမ#$ထ+$တ-6 Data eတ&ကiuလ- အခန#$ နBပတ#န-9 သ?$Cခ+$ သတ#မHတ#Kပ?$ သiမ#$eပ$ထ+$Aiuင#ပ3တယ#။ Kပ?$eတ+6 ဘယ#
နBပ3တ#က Data လiuခGင#လ- ဆiuတ+န-9 ဘယ#နBပ3တ#မH+ ဘယ# Data ကiu သiမ#$မယ#ဆiuတ+ကiu သတ#မHတ# အသuB$CပuAiuင#ပ3
တယ#။
Declaring Arrays
Array eတ&ကiu အသuB$Cပueတ+6မယ#ဆiuရင# အန-ဆuB$ ဘယ#လiuအမGiu$အစ+$ Array ကiu အသuB$CပuမH+လ- ဆiuတ+ကiu သiဖiu
လiuအပ#ပ3တယ#။ Array အeနန-9 Primitive Type eတ&ကiuလ- အသuB$CပuAiuင#သလiu Reference Type eတ&ကiuလ-
အသuB$CပuAiuင#ပ3တယ#။ int type eတ&ကiu အသuB$Cပuတ-6 Array ဆiuရင# int array လiueခ2ဆiueလ6Qiသလiu String Type eတ&
ကiu အသuB$Cပuတ-6 Array eတ&ကiu String Array လiuလ- eခ2eလ6Qiပ3တယ#။ Custom Object Cဖစ#တ-6 User Class eတ&
ကiu အသuB$CပuAiuင#တ-6 Array eတ&ဆiuရင#လ- User Array လiueခ2eလ6Qiပ3တယ#။
Array Variable ကiu Declare လuပ#မယ#ဆiuရင# Array မH+ အသuB$Cပuမည#6 Type ရယ# Array Sing Cဖစ#တ-6 [] ရယ#၊
Variable Name ကiu eရ$သ+$eပ$ရပ3မယ#။ အထက#ပ3အတiuင#$ int [] array လiueရ$သ+$ထ+$ရင# int ဆiuတ+ Array
ကiu အသuB$Cပuမည#6 Type Cဖစ#Kပ?$ array ဆiuတ+က Variable Name Cဖစ#ပ3တယ#။
Array ကiu eရ$တ-6 eနရ+မH+ int [] array လiuလ- eရ$သ+$Aiuင#သလiu int array [] လiuလ- eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
အထက#ပ3အတiuင#$ Array ကiu Declare လuပ#မယ#ဆiuရင# {1,2,3,4,5} န-9တiuက#Uiuက# အစ+$ထiu$ eရ$သ+$Aiuင#eသ+#လ-
Array ကiu Declare လuပ#Kပ?$တ-6 အခ3ကGမH Assign လuပ#တ-6 Statement eတ&မH+ဆiuရင#eတ+6 eရ$သ+$လiuရမH+ မဟuတ#
ပ3ဘO$။
int [] array;
array = {1,2,3,4,5};
int [] array;
array = new int[] {1,2,3,4,5};
တကယ#eတ+6 new int[] {1,2,3,4,5} လiueရ$တ+က Array Object ကiu Instantiate လuပ#တ-6 eရ$သ+$ပuBအမHန# Cဖစ#ပ3
တယ#။ Java မH+က Declaration Statement eတ&မH+ အလ&ယ#eရ$သ+$Aiuင#eအ+င# {1,2,3,4,5} ကiu Short Cut
အeနန-9 Cပင#eပ$ထ+$တ+Cဖစ#Kပ?$ Declaration Statement eတ&မH+ပ- eရ$သ+$လiuရမH+ Cဖစ#ပ3တယ#။
Array မH+ Java Language မH+ပ3တ-6 Data Type eတ&သ+မက မiမiကiuယ#တiuင#eရ$သ+$ထ+$တ-6 Custom Object
eတ&ကiuလ- Type အeနန-9 အသuB$CပuAiuင#ပ3တယ#။ Student Type eတ&ကiu Array မH+ အသuB$CပuခGင#တယ#ဆiuရင#လ-
အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
}
}
class Student {
String name;
int age;
}
အထက#နမOန+ထ-မH+လiu new int[10] လiueရ$လiuက#တ+န-9 int ရ-I Default တန#ဖiu$န-9 {0, 0, 0} ကiu တည#eဆ+က#သ&+$
မH+ Cဖစ#Kပ?$ new Student[3] လiueရ$လiuက#တ+န-9 {null, null, null} ဆiuKပ?$ Array Object ကiuတည#eဆ+က#eပ$မH+
Cဖစ#ပ3တယ#။ students Array ထ-မH+ Student Object ၃ ခuကiu သiမ#$eပ$ထ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
Array ထ-မH+ Element eတ&ကiu သiမ#$ထ+$မယ#ဆiuရင#လ- Index Number eတ&န-9 သiမ#$ထ+$ဖiuလiuအပ#သလiu Cပန#Kပ?$
eခ2ယOမယ#ဆiuရင#လ- Index Number န-9 Cပန#Kပ?$eခ2ယO အသuB$CပuရမH+ Cဖစ#ပ3တယ#။
class Student {
String name;
int age;
Array ကiu Declare လuပ#စT# Type မGiu$ဆiuပ3က Array ထ-မH+ လ+Kပ?$ သiမ#$ထ+$Aiuင#မH+ Cဖစ#ပ3တယ#။ Student []
students လiu Declare လuပ#ထ+$တ-6 အတ&က# students Array ထ-မH+ Student Object eတ&န-9 Student Class ရ-I
Sub Class Object eတ&ဆiuရင# လ+Kပ?$ သiမ#$ထ+$လiuရပ3မယ#။
တဖန# Array ကiu Object eဆ+က#ထ+$သeလ+က# အeရအတ&က# သiမ#$eပ$ထ+$Aiuင#မH+ Cဖစ#တယ#။ new Student
[3] လiueရ$ထ+$တ-6 အတ&က# Array မH+ အခန#$ ၃ ခန#$ပiuင#Kပ?$ Student Object ၃ ခuသiမ#$eပ$ထ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
Array ရ-I Index Number ဟ+ 0 ကeန စတ+Cဖစ#တ-6 အတ&က# student[0] ဆiuKပ?$ eရ$မယ#ဆiuရင# e^ဆuB$အခန#$မH+
Student Object တစ#ခuကiu လ+သiမ#$မH+ Cဖစ#ပ3တယ#။
class Student {
String name;
int age;
အထက#ပ3အတiuင#$ Array ထ-က Element eတ&ကiu Cပန#ယOခGင#တယ#ဆiuရင#လ- သiမ#$ထ+$တ-6 index number န-9ပ- Cပန#
Kပ?$ eခ2ယOရမH+ Cဖစ#ပ3တယ#။ students[0] ဆiuရင# Array ထ-က ပထမဆuB$ Student ကiu ရQiAiuင#Kပ?$ students[1] ဆiu
ရင# ဒuတiယ Student Object ကiuရQiမH+ Cဖစ#ပ3တယ#။ students[2] ဆiuရင#eတ+6 eန+က#ဆuB$ Student ကiuရQiAiuင#မH+
Cဖစ#ပ3တယ#။
ဆiuFကပ3စiu၊ int array eတ&ကiu သiမ#$eပ$ထ+$Aiuင#တ-6 Multi Dimension Array မGiu$၊ ဒ3မHမဟuတ# String Array eတ&ကiu
သiမ#$eပ$ထ+$Aiuင#တ-6 Array မGiu$ဆiuKပ?$ သiQieနဖiuလiuအပ#ပ3တယ#။
သ+မန# Array eတ&ကiu eရ$ခ-6တuန#$ကလiu ဘယ#လiuအမGiu$အစ+$ Array ဆiuတ+ကiu သiဖiuလiuအပ#Kပ?$၊ အ-6ဒ? Type ကiu
e^ဆuB$မH+ eရ$eပ$ရပ3မယ#။ Kပ?$ရင# Array Sign Cဖစ#တ-6 [] ကiu အသuB$Cပuလiuသeလ+က# eရ$သ+$eပ$ရပ3မယ#။ Two
Dimension ဆiuရင# [][] လiueရ$Kပ?$ Three Dimension ဆiuရင#eတ+6 [][][] လiu eရ$သ+$eပ$ရပ3မယ#။ Kပ?$က+မH
Identifier Cဖစ#တ-6 Variable Name ကiu eရ$သ+$ရမH+ပ3။
ဒ3eပမ-6 Multi Dimension Array ကiu Declare လuပ#တ-6 eနရ+မH+ eအ+က#ပ3အတiuင#$ eရ$သ+$ရင#လ- Compile
Error Cဖစ#မH+ မဟuတ#ပ3ဘO$။
Identifier Cဖစ#တ-6 Array Name ကiu Array Sign eတ&ရ-I e^မH+eက+၊ eန+က#မH+eက+၊ Fက+$မH+ပ3 eရ$သ+eဖ2CပAiuင#
မH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 Appication တစ#ခuထ-မH+ ဟiuလiueရ$လiuက# ဒ?လiueရ$လiuက#ဟ+ eက+င#$တ-6 အကGင#6 တစ#ခu
မဟuတ#ပ3ဘO$။ Application တစ#ခuကiu eရ$သ+$တ-6 eနရ+မH+ မiမiတစ#eယ+က#ထ- eရ$သ+$eနတ+မဟuတ#ပ- အCခ+$သO
eတ&ပ3 ပ3ဝင#eရ$သ+$eနAiuင#တယ#ဆiuတ+ကiu သတiထ+$သင#6ပ3တယ#။
အထက#ပ3ကuဒ#ကiu Fကည#6Fကည#6ရeအ+င#။ Multi Dimension Array eနရ+ကiu Dimension မတOတ-6 Array eတ&န-9
လ+Kပ?$ အစ+$ထiu$eနပ3တယ#။ ဒ3eပမ-6 ဒ?လiueရ$ထ+$ရင#လ- မH+$မH+မဟuတ#ပ3ဘO$။ Java မH+ အသuB$Cပueနတ-6 Array ဟ+
C တiu C++ တiuမH+ အသuB$Cပueနတ-6 Array န-9 မတOပ- Object တစ#ခuသ+ Cဖစ#တ-6 အတ&က# Int Array Cဖစ#မယ#ဆiuရင#
အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ Dimension eတ&ဆiuတ+ထက# Int အမGiu$အစ+$ Array eတ&ကiu သiမ#$eပ$ထ+$Aiuင#တ-6
Array eတ&လiu Cမင#တ+eက+င#$ပ3မယ#။
Array ထ-မH+ ပ3မည#6 Element eတ&ကiu PကiuKပ?$ မသiထ+$တ-6 အခ3မGiu$မH+ ဆiuရင#လ- eအ+က#ပ3အတiuင#$ Array Object
မGiu$ကiu တည#eဆ+က#Aiuင#ပ3မယ#။
အထက#ပ3အတiuင#$ new int[2][3] ဆiuKပ?$ Initialize လuပ#မယ#ဆiuရင# {{0,0,0}, {0,0,0}} ဆiuKပ?$ Array Object ကiu
တည#eဆ+က#သ&+$မH+ Cဖစ#ပ3တယ#။ တဖန# new int[2][] လiu eရ$မယ#ဆiuရင#လ- Cဖစ#ပ3တယ#။ ဒ?အတiuင#$ eရ$သ+$ထ+$
မယ#ဆiuရင#eတ+6 {null, null} ဆiuKပ?$ Array Object ကiu တည#eဆ+က#သ&+$ပ3မယ#။
Int [2][] လiueရ$ထ+$တ+က int [] ၂ ခuပ3တ-6 Array Object လiu eဖ2Cပeနတ+Cဖစ#ပ3တယ#။ int [2][] လiueရ$ထ+$တ-6
အတ&က# အထ-မH+ပ3တ-6 Array ကiu Initialize မလuပ#Aiuင#ပ3ဘO$။ Array ဆiuတ+လ- Object Cဖစ#တ-6 အတ&က# Object ရ-I
Default တန#ဖiu$Cဖစ#တ-6 null eတ&န-9 Object ကiu တည#eဆ+က#သ&+$တ+ Cဖစ#ပ3တယ#။
Multi Dimension Array ကiu ဘယ#လiueဆ+က#ရမလ-ဆiuတ+ကiu eလ6လ+Kပ?$တ-6 eန+က#မH+ Array ထ-က Element
eတ&ကiu ဘယ#လiu Access လuပ#Fကမယ#ဆiuတ+ကiu ဆက#လက# eလ6လ+သ&+$Fကရeအ+င#။
အထက#ပ3အတiuင#$ Multi Dimension Array တစ#ခuကiu jshell ကiu အသuB$CပuKပ?$ တည#eဆ+က#Fကည#6ပ3မယ#။ အထက#
နမOန+ပ3 int [][] array ဟ+ int [] eတ&ကiu သiမ#$eပ$ထ+$Aiuင#တ-6 Array တစ#မGiu$သ+$Cဖစ#ပ3တယ#။ array ထ-မH+ int []
eတ& Cဖစ#Fကတ-6 {1,2} န-9 {3,4} ကiu သiမ#$eပ$ထ+$ပ3တယ#။
ဒ36eFက+င#6 array [0][0] လiueCပ+ရင# e^ဆuB$ Array ထ-က ပထမဆuB$eနရ+မH+ Qiတ-6 1 ကiu ရQiမH+ Cဖစ#ပ3တယ#။ တဖန#
array[0][1] လiueဖ2Cပရင# e^ဆuB$ Array ထ-က ဒuတiယeနရ+မH+Qiတ-6 2 ကiu ရQiမH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 array[0][2]
လiueရ$လiuက#တ-6အခ3မH+ e^ဆuB$ Array ရ-I တတiယeနရ+ဟ+ မQiတ-6 အတ&က#
ArrayIndexOutOfBoundsException ကiu Cဖစ#eပ2eစတ+ Cဖစ#ပ3တယ#။ သ+မန# Array eတ&တuန#$ကလiuပ- မQiတ-6
Index Number ကiu Access လuပ#မiရင# ArrayIndexOutOfBoundsException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
jshell> array[0][0] = 10
$6 ==> 10
jshell> a = array[0][0]
a ==> 10
jshell> array[0][2] = 15
| java.lang.ArrayIndexOutOfBoundsException thrown: 2
| at (#9:1)
Multi Dimension Array ထ-မH+Qiတ-6 တန#ဖiu$ကiu Assign လuပ#လiuတ-6 အခ3မGiu$မH+လ- Index Number eတ&ကiuပ-
အသuB$CပuရမH+ Cဖစ#ပ3တယ#။ array[0][0] = 10 လiueရ$Kပ?$ Cပန#Fကည#6တ-6အခ3မH+ တန#ဖiu$ဟ+ 10 ကiu eCပ+င#$သ&+$တ+ကiu
eတ&Jရပ3မယ#။ မQiတ-6 Index ကiu အသuB$Cပuမiရင#လ- ArrayIndexOutOfBoundsException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3
တယ#။
jshell> array
array ==> int[2][] { int[2] { 30, 40 }, int[2] { 3, 4 } }
အထက#ပ3အတiuင#$ Multi Dimension Array ကiu First Level Index ကiu အသuB$CပuKပ?$ Access လuပ#မယ#ဆiuရင# အ-6ဒ?
Array ထ-မH+ သiမ#$eပ$ထ+$တ-6 Array ကiu Cပန#လည#ရQiAiuင#မH+ Cဖစ#ပ3တယ#။ array[1] ဆiuKပ?$ Access လuပ#ရင# ဒuတiယ
eနရ+မH+ Qiတ-6 Array Object ကiu Cပန#လည#ရQiမH+ Cဖစ#ပ3တယ#။ အ-6ဒ?အတiuင#$ပ- array[0] ရ-Ieနရ+ကiu အCခ+$ int
Array တစ#ခuန-9 အစ+$ထiu$Aiuင#မH+ Cဖစ#ပ3တယ#။
ဒ3eပမ-6 Type မတOရင#eတ+6 Asign လuပ#တ+eက+ Reference လuပ#တ+eက+ လuပ#လiuရမH+ မဟuတ#ပ3ဘO$။ array
variable ရ-I type ကiu int [][] လiu Declare လuပ#ထ+$တ-6 အတ&က# First Level Element ဟ+ int [] ပ- Cဖစ#eနမH+ Cဖစ#
ပ3တယ#။ Kပ?$eတ+6 Second Level Element ရ-I type ဟ+လ- int ပ-Cဖစ#ရပ3မယ#။
jshell> array[1] = 10
| Error:
| incompatible types: int cannot be converted to int[]
| array[1] = 10
| ^^
အထက#ပ3အတiuင#$ int data eနရ+မH+ array[0] န-9 အစ+$ထiu$လiuမရပ3ဘO$။ အစ+$ထiu$ခGင#တ-6 data ရ-I type ဟ+ int
Cဖစ#Kပ?$ array[0] လiueCပ+ရင# ရQiAiuင#မည#6 type ဟ+ int [] Cဖစ#eနတ-6 အတ&က#Cဖစ#ပ3တယ#။ တဖန# array [1] eနရ+ကiu
လ- 10 ဆ?uတ-6 တန#ဖiu$န-9 အစ+$ထiu$လiu မရAiuင#ပ3ဘO$။ ဘ+လiuလ- ဆiueတ+6 array[1] ဟ+ int [] Cဖစ#Kပ?$ 10 ဟ+ int Cဖစ#
တ-6 အတ&က# Cဖစ#ပ3တယ#။
Java Programming Language မH+က Variable တစ#ခuကiu Declare လuပ#ခ-6တ-6 Type န-9 မတOတ-6 တန#ဖiu$eတ&ကiu
အစ+$ထiu$လiu မရAiuင#ပ3ဘO$။
Operators
က\န#eတ+#တiu e^ခန#$eတ&မH+ Class eတ&၊ Variable eတ&၊ Method eတ&န-9 Java မH+ အသuB$CပuAiuင#တ-6 Data Type
eတ&အeFက+င#$eလ6လ+ခ-6Fကပ3တယ#။ ဒ?တစ#eခ3က#eတ+6 Variable eတ&န-9 တ&-Kပ?$ eရ$သ+$Aiuင#တ-6 Operator eတ&န-9
Expression eတ& အeFက+င#$ကiu eလ6လ+Fကပ3မယ#။
ဆiuFကပ3စiuဗG+။ Variable a န-9 Variable b တiuကiu eပ3င#$eစခGင#တယ#ဆiuရင# eပ3င#$ပ3ဆiuတ+ကiu Operator န-9 eဖ2Cပeပ$
ရမH+ Cဖစ#တယ#။ တဖန# Variable တစ#ခuဟ+ Type တစ#ခuရ-I Object Cဖစ#ရ-Iလ+$ဆiuတ+ကiu စစ#ခGင#တယ#၊ Variable
eတ&ကiu တစ#တiu$တ+တiu တစ#A[တ#တ+တiu လuပ#ခGင#တယ#၊ eန+က#Kပ?$ Variable AHစ#ခuရ-I တန#ဖiu$ဟ+ တOမတO စစ#eဆ$
ခGင#တယ#၊ Variable eတ&ကiu အသuB$CပuKပ?$ Logic eတ&ကiu စစ#eဆ$ခGင#တယ#၊ Variable AHစ#ခuဘယ#သOPက?$လ- ငယ#
လ-ဆiuတ+ကiu သiခGင#တယ#၊ ဒ?လiuအခ3မGiu$eတ&မH+ Operator eတ&ကiu အသuB$CပuရမH+ Cဖစ#ပ3တယ#။
Relational <, <=, >, >=, !=, == Primitive Variable မG+$အ+$ Ai[င#$ယHT#ရ+တ&င# အသuB$Cပu
Assignment Operator
Assignment Operator eတ&ကeတ+6 Variable eနရ+မH+ အစ+$ထiu$eပ$Aiuင#တ-6 Operator မG+$Cဖစ#Fကပ3တယ#။
သ+မန# “=“ တစ#ခuကiu အသuB$CပuKပ?$ eရ$သ+$Aiuင#သလiu အCခ+$eသ+ Arithmetic Operator eတ&န-9လ- တ&-ဖက#Kပ?$
eရ$သ+$Aiuင#ပ3တယ#။
jshell> int a
a ==> 0
jshell> a = 10
a ==> 10
jshell> int b = a
b ==> 10
jshell> a = 15
a ==> 15
jshell> b
b ==> 10
အထက#ပ3အတiuင#$ JShell န-9 eရ$သ+$ထ+$တ-6 Code Snippet eတ&ကiu eလ6လ+Fကည#6Fကရeအ+င#။ အရင#ဆuB$ int a
ဆiuKပ?$ Variable တစ#ခuကiu Declare လuပ#ပ3တယ#။ Primitive Type Variable တစ#ခuပ3။
Variable မH+လ+အစ+$ထiu$ထ+$တ-6 Memory Address ကeန တဆင#6 Object eတ&ကiu Reference လuပ#Kပ?$
အသuB$Cပueနတ+ Cဖစ#တ-6 အတ&က# Reference Variable eတ&လiu eခ2ခ-6FကCခင#$လ- Cဖစ#ပ3တယ#။
အထက#ပ3နမOန+မH+ အရင#ဆuB$ String Type Variable တစ#ခuပ3တ-6 Person Class ကiu တည#eဆ+က#ပ3တယ#။ Kပ?$
eတ+6မH Person Type Variable Cဖစ#တ-6 thidar ဆiuတ-6 eနရ+မH+ new Person() ဆiuKပ?$ Person Object ကiu
တည#eဆ+က#Kပ?$eတ+6 Assign လuပ#eနပ3တယ#။ ဒ?eနရ+မH+ Person Type ဟ+ Reference Type Cဖစ#တ-6 အတ&က#
new Person() လiu Object ကiu Heap Memory eပ2မH+တည#eဆ+က#Kပ?$ အ-6ဒ? Object ရ-I Memory Address ကiu
thidar eနရ+မH+ အစ+$ထiu$eနတ+ Cဖစ#ပ3တယ#။
jshell> thidar.name
$6 ==> "Nilar"
jshell> nilar.name
$7 ==> "Nilar"
တဖန# Person nilar = thidar လiueရ$ထ+$တ+ကလ- Assignment Operator ကiu အသuB$CပuKပ?$ nilar eနရ+ကiu
thidar ရ-I တန#ဖiu$န-9 အစ+$ထiu$eနCပန#တယ#။ ဒ?eနရ+မH+ thidar မH+Qieနတ-6 တန#ဖiu$ဟ+ Person Object ကiu
Reference လuပ#Aiuင#တ-6 Memory Address ကiuပ- nilar eနရ+မH+ အစ+$ထiu$သ&+$Cပန#တယ#။ Object တစ#ခuထ-ကiu
Reference Variable AHစ#ခuကeန Reference လuပ#eနတယ#ဆiuတ+ကiu သiQiထ+$သင#6ပ3တယ#။ ဒ36eFက+င#6မiuလiu
nilar.name = “Nilar” လiuအစ+$ထiu$လiuက#တ-6 အခ3မH+ thidar.name ဟ+လ- “Nilar” လiueCပ+င#$သ&+$တ+ Cဖစ#ပ3
တယ#။
Arithmetic Operators
Number အမGiu$အစ+$ Primitive Type Variable eတ&ကiu အသuB$CပuKပ?$ သခsG+ ပiuင#$ဆiuင#ရ+ တ&က#ခGက#မ[eတ& Cပuလuပ#
လiuတ-6 အခ3မGiu$မH+ Arithmetic Operators eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။ အeပ3င#$၊ အAHတ#၊ အeCမq+က#၊ အစ+$န-9
အrကင#$Q+တ-6 တ&က#ခGက#မ[eတ&ကiu Cပuလuပ#လiuတ-6 အခ3မGiu$မH+ Arithmetic Operators eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။
Arithmetic Operators eတ&န-9 အသuB$CပuAiuင#တ-6 Data Type eတ&ကeတ+6 Number အမGiu$အစ+$ Primitive Data
Type eတ&န-9 သOတiuရ-I Wrapper Class eတ&မH+ အသuB$CပuAiuင#ပ3တယ#။ Kပ?$eတ+6 Number အeနန-9 eဖ2CပAiuင#တ-6
Primitive Data Type Cဖစ#တ-6 char type eတ&မH+လ- အသuB$CပuAiuင#ပ3တယ#။ ခ\င#$ခGက#အeနန-9 String Type
Variable eတ&မH+လ- + Operator ကiu အသuB$CပuAiuင#ပ3တယ#။
jshell> int a = 10
a ==> 10
jshell> int b = 20
b ==> 20
jshell> a + b
$3 ==> 30
အထက#ပ3 နမOန+ထ-မH+ အရင#ဆuB$ a eနရ+မH+ 10 ကiu အစ+$ထiu$ပ3တယ#။ Kပ?$eတ+6 b eနရ+မH+ 20 ကiu အစ+$ထiu$ပ3
တယ#။ a + b လiu eရ$လiuက#တ-6 အခ3မH+ 30 ရပ3တယ#။ Number အမGiu$အစ+$ Variable eတ&ရ-I eပ3င#$Cခင#$ကiu +
Operator ကiu အသuB$CပuAiuင#ပ3တယ#။
jshell> Character c = a
c ==> 'Ã'
jshell> char d = a + c
| Error:
| incompatible types: possible lossy conversion from int to char
| char d = a + c;
| ^---^
Operators eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။ ဒ3eပမ-6 တစ#ခu သတiCပuဖiu လiuအပ#တ+က Wrapper Class Cဖစ#တ-6
Character Class eတ&မH+eတ+6 Arithmetic Operator eတ&ကiu အသuB$Cပuလiu ရမH+ မဟuတ#ပ3ဘO$။
အထက#ပ3 နမOန+ကeတ+6 String Type Variable eတ&Fက+$မH+ + Operator ကiu အသuB$Cပuတ+ပ3။ ခ\င#$ခGက#အeနန-9
Object eတ&မH+ String တစ#ခuထ- + Operator ကiu အသuB$CပuAiuင#တ+ Cဖစ#ပ3တယ#။ + Operator ကiu String Type
Variable eတ&န-9 String Litrals eတ&န-9 ပO$တ&-အသuB$CပuAiuင#ပ3တယ#။ String Value eတ&ကiu ဆက#eပ$တ-6 အeနန-9
အသuB$CပuAiuင#ပ3တယ#။
String Variable hello ရ-I တန#ဖiu$ဟ+ “Hello” Cဖစ#Kပ?$ java ရ-I တန#ဖiu$ဟ+ “Java” Cဖစ#တ-6 အတ&က# hello + “ “ +
java ဆiuတ+ဟ+ “Hello Java” Cဖစ#သ&+$တ+ကiu eတ&Jရပ3မယ#။
ဆက#လက#Kပ?$ String Type Variable န-9 Primitive Type Variable eတ&Fက+$မH+ + Operator ကiu တ&-Kပ?$ အသuB$Cပu
တ-6အခ3မGiu$မH+ ဘယ#လiu လuပ#eဆ+င#သ&+$တယ#ဆiuတ+ကiu eလ6လ+Fကည#6Fကရeအ+င#။
jshell> 10 + "1"
$18 ==> "101"
10 + “1” ရ-I အeCဖဟ+ “101” Cဖစ#ပ3တယ#။ 10 ဟ+ Primitive type အမGiu$အစ+$Cဖစ#တ-6 int Cဖစ#Kပ?$ “1” ဟ+ String
Cဖစ#ပ3တယ#။ Primitive Type တစ#ခuန-9 String တစ#ခuကiu + ကiu အသuB$CပuKပ?$ eရ$သ+$တ-6 အခ3မH+ Primitive ရ-Iတန#ဖiu$
ကiu String တစ#ခuအeနန-9ယOKပ?$ တ&က#ခGက#သ&+$ပ3မယ#။ ဒ36eFက+င#6 “10” + “1” လiuယOKပ?$ အeCဖဟ+ “101” Cဖစ#သ&+$ပ3
မယ#။
jshell> 10 + 1 + "1"
$19 ==> "111"
အထက#ပ3နမOန+ထ-မH+ 10 + 1 + “1” လiu Expression တစ#ခuကiu eရ$ထ+$ပ3တယ#။ 10 န-9 1 တiuဟ+ primitive type
Cဖစစ#Kပ?$ “1” ဟ+ String Cဖစ#ပ3တယ#။ အပ2မH+ပ3ခ-6တ-6 နမOန+ထ-မH+ဆiuရင# String တစ#ခuန-9eပ3င#$ရင# အ+$လuB$ဟ+
String လiueCပ+င#$Kပ?$eပ3င#$Fကတယ#ဆiuတ+ကiu eတ&Jခ-6ရမH+ပ3။ ဒ3eပမ-6 Expression တစ#ခuမH+ Arithmetic Operator
eတ& တစ#ခuထက#မကပ3ဝင#Fကတ-6 အခ3မH+ Operator Precident လiueခ2တ-6 ဦ$စ+$eပ$စT#$စ+$ပuBန-9 ဘယ# Operator
ကiu အရင# Eveluate လuပ#မယ#ဆiuတ+ကiu စ?$မGT#$သတ#မHတ#ထ+$ပ3တယ#။
Operator eတ&တOeနရင#eတ+6 ဘယ#ဘက#မH+Qiတ-6 Operator ကiu အရင# Evaluate လuပ#ပ3တယ#။ ဒ36eFက+င#6 10 န-9 1
ကiu အရင#eပ3င#$Kပ?$ ရလ+တ-6 ရလဒ#Cဖစ#တ-6 11 ကiu “1” န-9 eပ3င#$Kပ?$ “111” လiu အeCဖထ&က#တ+ Cဖစ#ပ3တယ#။
jshell> "1" + 10 + 1
$20 ==> "1101"
တကယ#လiu “1” + 10 + 1 လiueရ$ခ-6ရင# အရင#ဆuB$ “1” + 10 ကiu Evaluate လuပ#ပ3မယ#။ ဒ36eFက+င#6 အeCဖဟ+ “101”
Cဖစ#Kပ?$ “101” + 1 ကiu Evaluate လuပ#Kပ?$ ရလဒ#ကeတ+6 “1101” Cဖစ#သ&+$မH+ Cဖစ#ပ3တယ#။
Operator Precedents
Variable eတ&န-9 Operators eတ&ကiuတ&-Kပ?$ eရ$သ+$ထ+$တ+eတ&ကiu Expression လiueခ2ဆiueလ6Qiပ3တယ#။
Expression တစ#ခuမH+ Operator တစ#ခuအထက#မက ပ3ဝင#eလ6Qiပ3တယ#။ Arathematic Operator eတ&ကiu
အသuB$Cပuတ-6eနရ+မH+ Operator တစ#ခuဆiuပ3က Cပဿန+မQiပ3ဘO$။
jshell> 10 + 1
$21 ==> 11
jshell> 10 - 5
$22 ==> 5
jshell> 10 * 3
$23 ==> 30
jshell> 10 / 3
$24 ==> 3
jshell> 10 % 3
$25 ==> 1
jshell> 5 + 1 * 10
$26 ==> 15
ဒ3eပမ-6 1 * 10 ကiu အရင# Evaluate လuပ#Kပ?$ ရလ+တ-6 ရလဒ#Cဖစ#တ-6 10 န-9 5 ကiueပ3င#$သ&+$ပ3တယ#။ ဒ36eFက+င#6 အeCဖ
ဟ+ 15 Cဖစ#သ&+$ပ3တယ#။ Java မH+က အeပ3င#$အA[တ# Operator eတ&ထက# အeCမq+က# အစ+$ Operator eတ&က
ပiuKပ?$ Precident Cမင#6မ+$တ-6 အတ&က# Precident Cမင#6မ+$တ-6 Expression ကeန စKပ?$ Evaluate လuပ#သ&+$တ+ Cဖစ#
ပ3တယ#။
ဆက#လက#Kပ?$ အစ+$န-9 အeCမq+က# Kပ?$eတ+6 အeပ3င#$န-9 အA[တ#ကeက+ Precedent ဘယ#သOPက?$လ-၊ Kပ?$eတ+6 အ-6ဒ?
Operator eတ&ကiu Expression ထ-မH+ eရ+eရ$ရင#ဘယ#လiu Cဖစ#မလ-ဆiuတ+ကiu eလ6လ+Fကည#6Fကရeအ+င#။
jshell> 5 / 2 * 3
$28 ==> 6
jshell> 3 * 5 / 2
$29 ==> 7
အစ+$န-9 အeCမ+က#ဟ+ Operator Precedent အရ အတOတOပ- Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 Left to Right Evaluate
လuပ#သ&+$တ+ကiu eတ&JရမH+ Cဖစ#ပ3တယ#။ အeပ2ဆuB$ အeFက+င#$မH+ 5 / 2 * 3 လiueရ$ထ+$ပ3တယ#။ အရင#ဆuB$ 5 ကiu 2
န-9 စ+$Kပ?$ ရလ+တ-6 ရလဒ#Cဖစ#တ-6 2 ကiu 3 န-9 eCမq+က#ပ3တယ#။ ဒ36eFက+င#6 အeCဖဟ+ 6 Cဖစ#သ&+$ပ3တယ#။
jshell> a += 5
$31 ==> 15
jshell> a -= 1
$32 ==> 14
jshell> a *= 2
$33 ==> 28
jshell> a /= 1
$34 ==> 28
jshell> a %= 3
$35 ==> 1
String Type Variable eတ&မH+လ-eပ3င#$Kပ?$ အစ+$ထiu$တ-6 Operator မGiu$ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ str ရ-I
တန#ဖiu$ဟ+ “Hello “ Cဖစ#တ-6 အတ&က# “Java” န-9 eပ3င#$Kပ?$ အစ+$ထiu$လiuက#တ-6 အခ3 str ရ-I တန#ဖiu$ဟ+ “Hello Java”
Cဖစ#သ&+$မH+ Cဖစ#ပ3တယ#။
Relational Operator
Variable AHစ#ခuရ-I တန#ဖiu$eတ&ကiu Ai[င#$ယHT#တ-6eနရ+မGiu$မH+ Relational Operator eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။
Ai[င#$ယHT#တယ#လiu eCပ+တ-6eနရ+မH+ Variable AHစ#ခuဟ+ တOသလ+$ မတOဘO$လ+$၊ Kပ?$eတ+6 ဘယ#သOက Pက?$သလ-
ငယ#သလ- အစQiသCဖင#6 Ai[င#$ယHT#တ+ကiu ဆiuလiuတ+ Cဖစ#ပ3တယ#။
jshell> int a = 4, b = 5
a ==> 4
b ==> 5
jshell> a == b
$41 ==> false
jshell> a != b
$42 ==> true
အထက#ပ3 နမOန+ထ-မH+ a ကiu 4 န-9 Kပ?$eတ+6 b ကiu 5 န-9 အစ+$ထiu$ထ+$ပ3တယ#။ အ-6ဒ3eFက+င#6 a == b လiu eရ$သ+$
ထ+$တ-6 Expression မH+ a န-9 b ဟ+ မတOတ-6 အတ&က# false လiu အeCဖထ&က#တ+ Cဖစ#ပ3တယ#။ တဖန# a != b လiu
eရ$ထ+$တ+ဟ+ a န-9 b ဟ+ မတOပ3ဘO$လiu eရ$သ+$ထ+$တ+Cဖစ#Kပ?$ တကယ#လ- မတOတ-6 အတ&က# true လiu အeCဖရ
တ+ Cဖစ#ပ3တယ#။
Equality in Strings
Java မH+ အသuB$Cပueနတ-6 String ဟ+ အမတန#ထO$ဆန#$တ-6 Type အမGiu$အစ+$Cဖစ#ပ3တယ#။ String ဟ+ Java
Standard API ထ-မH+ ပ3ဝင#တ-6 Class တစ#မGiu$Cဖစ#Kပ?$ Data Type အeနန-9 အသuB$CပuAiuင#ပ3တယ#။ String Data
Type eတ&ဟ+ Character Array eတ&ကiu ကiuယ#စ+$CပuAiuင#တ-6 Object တစ#မGiu$Cဖစ#ပ3တယ#။
Object Cဖစ#တ-6 အတ&က# String ဟ+ Reference Data Type Cဖစ#ပ3တယ#။ ဒ3eပမ-6 ထO$ထO$Cခ+$Cခ+$ String တစ#မGiu$
ထ- Source Code eတ&ထ-မH+ Literals eတ&ကiu အသuB$CပuKပ?$ တန#ဖiu$ကiu တiuက#Uiuက# အစ+$ထiu$eရ$သ+$Aiuင#တ+ Cဖစ#ပ3
တယ#။ String str = “Hello Java” လiueရ$ထ+$ခ-6ရင# “Hello Java” ဆiuတ+က String ရ-I တန#ဖiu$ကiu Literal အeနန-9
eရ$သ+$ထ+$တ+ Cဖစ#ပ3တယ#။
တဖန# Constructor ကiu အသuB$CပuKပ?$ String str2 = new String(“Hello Java”) လiu eရ$သ+$Aiuင#ပ3တယ#။ ဒ3eပမ-6
str န-9 str2 တiuရ-I သဘ+ဝeတ&ဟ+ မတOည?Fကပ3ဘO$။
အထက#ပ3အတiuင#$ str န-9 str1 တiuကiu Literal တန#ဖiu$Cဖစ#တ-6 “Hello Java” န-9 အစ+$ထiu$eရ$သ+$ခ-6ပ3တယ#။ Kပ?$eတ+6
str == str1 လiu eရ$လiuက#တ-6အခ3မH+ true လiu အeCဖရပ3တယ#။
အထက#ပ3 ကuဒ#ထ-မH+eတ+6 String str2 = new String(“Hello Java”) ဆiuKပ?$eရ$သ+$ထ+$Cပန#တယ#။ Kပ?$eတ+6 str
== str2 လiu eရ$သ+$ထ+$တ-6 အခ3မH+ မတOဘO$ဆiuKပ?$ false လiu အeCဖထ&က#ပ3တယ#။ ဒ?eနရ+မH+ သiသ+တ+က
Literal န-9 eရ$သ+$ထ+$တ-6 Variable ရ-I တန#ဖiu$န-9 Constructor ကiu အသuB$CပuKပ?$ တည#eဆ+က#ထ+$တ-6 တန#ဖiu$ခGင#$
မတOဘO$လiu eCပ+eနတ+လiu သiထ+$သင#6ပ3တယ#။
String Type Variable eတ&ကiu Literal eတ&န-9လ- Assign လuပ#Aiuင#သလiu၊ Constructor မHတဆင#6လ- Object
eဆ+က#Kပ?$ Assign လuပ#Aiuင#ပ3တယ#။ Literal န-9 eရ$သ+$ထ+$တ-6 String eတ&ကiu Heap Memory eပ2မH+Qiတ-6
String Pools ဆiuတ-6 eနရ+မH+ သiမ#$ထ+$eလ6Qiပ3တယ#။ တကယ#လiu Source Code ထ-မH+ “Hello Java” ဆiuKပ?$
Literal န-9 eရ$သ+$ထ+$တ+ကiu eတ&Jရင# အရင#ဆuB$ String Pools ထ-မH+Qiလ+$လiuFကည#6ပ3တယ#။ Qiတယ#ဆiuရင# အ-6ဒ?
Reference ကiu အသuB$Cပuပ3တယ#။ တကယ#လiu မQiဘO$ဆiuရင#eတ+6 String Pools ထ-မH+ String Object ကiu eဆ+က#
Kပ?$မH အ-6ဒ? Reference ကiu အသuB$CပuမH+ Cဖစ#ပ3တယ#။
ဒ3eပမ-6 String str2 = new String(“Hello Java”) လiu eရ$လiuက#တ+ဟ+ new Operator ကiu အသuB$Cပuထ+$တ-6
အတ&က# String Object အသစ#တစ#ခuကiu Heap Memory eပ2မH+ တည#eဆ+က#သ&+$မH+ Cဖစ#ပ3တယ#။ String Pool
ထ-က Reference ကiu အသuB$CပuမH+ မဟuတ#ပ3ဘO$။ ဒ36eFက+င#6 str == str2 လiueရ$လiuက#တ-6အခ3မH+ တန#ဖiu$eတ&က တO
ရ-Iသ+$န-9 false ဆiuKပ?$ အeCဖထ&က#တ+ Cဖစ#ပ3တယ#။
ဒ36eပမ-6 String eတ&မH+eတ+6 Memory Address တOတ+ မတOတ+ထက# သOတiuရ-I တန#ဖiu$တOရင# တOတယ#လiu အeCဖ
ထ&က#ခGင#FကမH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 String eတ&ကiu တOတယ#မတOဘO$ဆiuတ+ကiu စစ#eဆ$ခGင#ရင# equals method
ကiu အသuB$CပuKပ?$ စစ#eဆ$သင#6ပ3တယ#။
jshell> str.equals(str2)
$48 ==> true
jshell> 10 != 11
$49 ==> true
jshell> 10 != 10
$50 ==> false
jshell> 10 > 10
$52 ==> false
jshell> 10 >= 10
$53 ==> true
အလ+$တO Less Than န-9 Less Than or Equal To (<, <=) Operator eတ&ကiuလ- အသuB$CပuAiuင#မH+Cဖစ#ပ3တယ#။ ဒ?
လiu Relation Operator eတ&န-9 Variable eတ&ကiu တ&-ဖက#eရ$သ+$ထ+$တ+eတ&ကiu Relational Expression လiu
eခ2ဆiueလ6Qiပ3တယ#။ eသCခ+တ+တစ#ခuကeတ+6 Relational Expression eတ&ရ-I ရလဒ#eတ&ဟ+ Boolean တန#ဖiu$
Cဖစ#တ-6 true သiuမဟuတ# false ပ- Cဖစ#eနမH+ပ- Cဖစ#ပ3တယ#။
Logical Operators
Boolean တန#ဖiu$eတ&၊ Boolean Expression eတ&န-9 တ&-ဖက#Kပ?$ Logic eတ&ကiu eရ$သ+$လiuတ-6 အခ3မGiu$မH+
အသuB$CပuAiuင#တ-6 Operator eတ& Cဖစ#Fကပ3တယ#။ အသuB$CပuAiuင#တ-6 Operator eတ&ကeတ+6 AND (&), OR (|), Short
Cut AND (&&), Short Cut OR (||), NOT (!) န-9 XOR (^) တiuပ- Cဖစ#Fကပ3တယ#။
jshell> !true
$64 ==> false
jshell> !false
$65 ==> true
OR (|) Operator
And Operator eတ&ကiu Boolean တန#ဖiu$AHစ#ခu ဒ3မHမဟuတ# Boolean Expression AHစ#ခuအFက+$မH+ တစ#ခuခuမHန#eန
ရင# True ကiu Cပန#eပ$မH+ Cဖစ#Kပ?$ AHစ#ခuစလuB$မH+$မHသ+ False ကiu Cပန#eပ$မH+ Cဖစ#ပ3တယ#။
ဒ?လiuအeနအထ+$မGiu$မH+ သ+မန# AND (&) န-9 OR (|) Operator eတ&ကiu အသuB$Cပuခ-6ရင# ဘယ#ဘက#က Expression
ကiu Evaluate လuပ#Kပ?$ true Cဖစ#စရ+ အeFက+င#$မQiခ-6ရင#eတ+င#မH၊ ဒ3မHမဟuတ# false Cဖစ#စရ+အeFက+င#$မQiခ-6
ရင#eတ+င#မH၊ ည+ဘက#က Expression ကiu ဆက#Kပ?$ Evaluate လuပ#eနမH+ Cဖစ#ပ3တယ#။ အ-6ဒ3eတ&ကiu စမ#$သပ#ဖiu
Boolean တန#ဖiu$eတ&ကiu Cပန#eပ$Aiuင#တ-6 Method eလ$eတ&ကiu Cပင#ထ+$Fကည#6Fကရeအ+င#။
အထက#ပ3 နမOန+ထ-မH+ဆiuရင# getFalse() ကiu Evaluate လuပ#Kပ?$တ-6အခ3မH+ false ကiu ရမH+ Cဖစ#တ-6 အတ&က# AND
Expression ရ-I ရလဒ#ဟ+ ဘယ#eတ+6မH true Cဖစ#လ+စရ+ အeFက+င#$မQieတ+6ပ3ဘO$။ ဒ3eပမ-6 ည+ဘက#က
getTrue() Expression ကiu Evaluate လuပ#သ&+$တ-6 အတ&က# Call False လiueဖ2CပKပ?$တ-6 အခ3မH+ Call True ကiu
eဖ2Cပသ&+$တ+ Cဖစ#ပ3တယ#။
အထက#ပ3နမOန+ကeတ+6 AND (&) အစ+$ Short Cut AND (&&) ကiu အသuB$Cပuသ&+$တ+ပ3။ ဘယ#ဘက#က
Expression Cဖစ#တ-6 getFalse() ကiu Evaluate လuပ#Kပ?$တ-6အခ3မH+ ရလဒ#ဟ+ false Cဖစ#eနKပ?ဆiuရင# ဘယ#နည#$န-9မH
true Cဖစ#စရ+မQieတ+6တ-6 အတ&က# ည+ဘက#က Expression Cဖစ#တ-6 getTrue() ကiu Evaluate မလuပ#eတ+6ပ- တန#$
Kပ?$ အeCဖကiu false လiuထuတ#eပ$ခ-6ပ3တယ#။
အလ+$တOပ- Short Cut OR (||) Operator ဟ+လ- ဘယ#ဘက#က Expression ကiu Evaluate လuပ#Kပ?$ အeCဖဟ+
True Cဖစ#ခ-6ရင# ဘယ#နည#$န-9မH False Cဖစ#စရ+အeFက+င#$မQieတ+6တ-6 အတ&က# ည+ဘက#က Expression Cဖစ#တ-6
getTrue() method ကiu Invoke မလuပ#eတ+6ပ- အeCဖကiu တန#$Kပ?$ true လiu ထuတ#eပ$ခ-6တ+Cဖစ#ပ3တယ#။
Short Cut eတ&ဟ+ ဘယ#ဘက#က Expression ရ-I တန#ဖiu$ကiu Fကည#6Kပ?$ အeCဖကiuမရeသ$ဘO$ဆiuရင#eတ+6 ည+ဘက#
က Expression ကiu ဆက#Kပ?$ Evaluate လuပ#သ&+$မH+ Cဖစ#ပ3တယ#။
Notes
Logical Operator eတ&ကiu Boolean Expression eတ&Fက+$မH+ အသuB$Cပuတ+eတ&ကiuပ- eဖ2Cပခ-6ပ3တယ#။ ဒ3eပမ-6
Logical Operator eတ&ကiu အCခ+$eသ+ Primitive Type eတ&Fက+$မH+လ- အသuB$CပuAiuင#ပ3တယ#။ အ-6ဒ?လiu အသuB$Cပuတ-6
အခ3မH+ Binary Data အCဖစ#eCပ+င#$Kပ?$တ&က#ခGက#သ&+$မH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 Business Application ရ-I Logic
eတ&ကiu eရ$သ+$Fကတ-6အခ3မGiu$မH+ Boolean Expression eတ&ကiu အသuB$Cပuတ+ကမG+$တ-6အတ&က# ဒ?စ+အuပ#ထ-မH+
eတ+6 Boolean Expression န-9 တ&-ဖက#အသuB$Cပuတ-6 နမOန+မG+$ကiu eဖ2Cပသ&+$တ+ Cဖစ#ပ3တယ#။
Statements
Java Compilar ကeန Compile လuပ#Aiuင#Kပ?$ JVM ကeန လuပ#eဆ+င#မ[eတ&ကiu လuပ#eဆ+င#eပ$Aiuင#တ-6 အဓiပW3ယ#Cပ
ည#6စuBတ-6 စ+eFက+င#$eတ&ကiu Statement လiueခ2ပ3တယ#။ eအ+က#က နမOန+အတiuင#$ Class တစ#ခuကiu eရ$သ+$ထ+$ပ3
မယ#။
✓ Declaration Statements
Variable eတ&ကiu အသuB$Cပuမယ#ဆiuKပ?$ Declare လuပ#တ-6အခ3မH+ eရ$သ+$Aiuင#တ-6 ဝ3ကGအမGiu$အစ+$မGiu$Cဖစ#ပ3တယ#
✓ Expression Statements
Variable eတ&န-9 Operator eတ&ကiu တ&-ဖက#eရ$သ+$ထ+$တ+ကiu Expression လiueခ2တယ#ဆiuတ+ e^ခန#$မH+
eလ6လ+ခ-6Kပ?$ပ3Kပ?။ အခGiueသ+ Expression eတ&ကiu eန+က#မH+ ; ကiueရ$လiuက#UuBန-9 Statement အeနန-9 အသuB$Cပu
Aiuင#ပ3တယ#။
Declaration Statements
Java Program eတ&ထ-မH+ အသuB$Cပuမည#6 Variable eတ&ကiu Declare လuပ#တ-6အခ3မH+ အသuB$CပuAiuင#တ-6 Statement
eတ& Cဖစ#ပ3တယ#။ Variable eတ&ကiu Declare လuပ#တ-6အခ3မH+ Type န-9 Name တiuကiu eရ$သ+$ရန#လiuအပ#Kပ?$
အeန+က#မH+ ; ကiu eရ$သ+$လiuက#ရင#ရပ3Kပ?။ အeCခခBအ+$Cဖင#6 Variable eတ&ကiu Declare လuပ#တ-6 eနရ+မH+ ပuBစBAHစ#
မGiu$QiAiuင#ပ3တယ#။ အ-6ဒ3eတ&ကeတ+6 Variable eတ&ကiu Uiu$Uiu$ Declare လuပ#တ-6ပuBစBန-9 Initial တန#ဖiu$eတ&ကiu Assign
လuပ#Kပ?$ Declare လuပ#တ-6 ပuBစBဆiuKပ?$ AHစ#မGiu$QiAiuင#ပ3တယ#။
String str1;
public Hello() {
str1 = "Hello Java";
}
}
အထက#ပ3ပuBစBကeတ+6 သ+မန# Uiu$Uiu$ Declare လuပ#တ-6 ပuBစBပ3။ String str1; ဆiuတ+က str1 Variable ကiu Declare
လuပ#eနတ-6 Declaration Statement Cဖစ#ပ3တယ#။ Kပ?$eတ+6မH Constructor ထ-မH+ str1 = “Hello Java”; ဆiuKပ?$
Assignment လuပ#eနပ3တယ#။
public Hello() {
String str1;
}
}
အထက#ပ3နမOန+ကeတ+6 String str1; ကiu Constructor ထ-မH+ eရ$သ+$ထ+$တ-6 အတ&က# Local Variable တစ#ခu
ကiu Declare လuပ#eနတ+ပ- Cဖစ#ပ3တယ#။ Local Variable eတ&ကiu အသuB$Cပuတ-6 eနရ+မH+ တစ#ခu သတiထ+$သင#6တ+
ကeတ+6 Initialize မလuပ#ပ- အသuB$Cပuလiu မရတ-6 အခGက#Cဖစ#ပ3တယ#။ Local Variable eတ&ဟ+ Default တန#ဖiu$ပ3မ
လ+တ-6 အတ&က# တန#ဖiu$ကiu Assign မလuပ#ခင# အသuB$Cပuလiu မရပ3ဘO$။
public Hello() {
String str1 = “Hello Java”;
}
}
Expression Statements
Expression eတ&ရ-I eန+က#မH+ ; eရ$လiuက#တ+န-9 Statement Cဖစ#သ&+$တ-6 Statement မGiu$ကiu Expression
Statement လiueခ2Fကပ3တယ#။ မG+$eသ+အ+$Cဖင#6 Assignment Expression eတ&၊ Increment, Decrement
Expressioneတ&၊ Method Invocation Expression eတ&န-9 Object Creation Expression eတ&ကiu Statement
အeနန-9 အသuB$CပuAiuင#ပ3တယ#။
String str1;
public Hello() {
str1 = "Hello Java";
}
}
အထက#ပ3နမOန+မH+ str1 = “Hello Java” လiueရ$သ+$ထ+$တ+ဟ+ str variable eနရ+ကiu “Hello Java” န-9
အစ+$ထiu$eနတ-6 Assignment Expression Cဖစ#Kပ?$ eန+က#ကeန ; ကiueရ$သ+$လiuက#တ+န-9 Assign Statement
တစ#eFက+င#$ Cဖစ#လ+ပ3တယ#။
int count;
အထက#ပ3နမOန+ထ-မH+ countUp() method ထ-မH+ count ++; လiueရ$သ+$ထ+$တ+ဟ+ count ကiu တစ#တiu$eပ$တ-6
increment statement Cဖစ#ပ3တယ#။ Kပ?$eတ+6 main method ထ-မH+ eရ$သ+$ထ+$တ-6 h = new Hello(); ဆiuတ+
က Object Creation Statement Cဖစ#Kပ?$ h.countUp(); ဆiuတ+ကeတ+6 Method Invocation Statement Cဖစ#ပ3
တယ#။
eဖ2Cပပ3အတiuင#$ Expression eတ&ရ-I အeန+က#မH+ ; ကiu eရ$လiuက#UuBန-9 Statement Cဖစ#သ&+$တ-6 Statement eတ&
ဟ+ Expression Statement eတ& Cဖစ#Fကပ3တယ#။
Kပ?$ခ-6တ-6 အခန#$eတ&တuန#$က Variable eတ&၊ Java Data Type eတ&၊ Method eတ&၊ Class eတ& န-9 Operator eတ&
အeFက+င#$ကiu eလ6လ+ခ-6Fကပ3တယ#။ ဒ3eပမ-6 Method eတ&ထ-မH+ ကuဒ#eတ&ကiu ဘယ#လiu eရ$ရမယ#ဆiuတ+ကiueတ+6 မ
သiရeသ$ပ3ဘO$။ ဘယ#လiuလuပ#ရမယ#ဆiuတ+ကiu eရ$သ+$Aiuင#တ+eတ&ကeတ+6 Control Flow Statements eတ&ပ-
Cဖစ#Fကပ3တယ#။
Controls Flow Statement အeနန-9 Decision Statement န-9 Looping Statement ဆiuKပ?$အမGiu$အစ+$ခ&-Cခ+$ထ+$
ပ3တယ#။ အeCခအeနတစ#ခuအeပ2မOတည#Kပ?$ Program အသ&+$အလ+eတ&ကiu ခ&-Cခ+$eပ$Aiuင#တ-6 Statement eတ&က
Decision Statemebt eတ&Cဖစ#FကKပ?$ အPကiမ#Pကiမ# လuပ#eဆ+င#မ[eတ&ကiu eရ$သ+$Aiuင#eအ+င#Cပင#eပ$ထ+$တ-6
Statement eတ&ကeတ+6 Looping Statement eတ&ပ- Cဖစ#Fကပ3တယ#။
Decision Statement
ဆiuFကပ3စiu၊ ကiန#$Cပည#6တစ#ခuကiu Fကည#6Kပ?$ စuBကiန#$လ+$ မကiန#$လ+$ဆiuတ+ကiu ခ&-Cခ+$ခGင#တယ#။ ဒ3ကiu ဘယ#eနရ+မH+သuB$
ရမလ-။ သuB$လiuရတ-6 eနရ+eတ& အမG+$Pက?$Qiပ3တယ#။ View eပ2မH+ Table တစ#ခuရ-I Row eတ&ကiu စuBမeပ2မH+ခ&-Kပ?$
အeရ+င#မတOeအ+င#eဖ2CပခGင#ရင# ဒ?လiuမGiu$ ကiန#$တစ#ခuကiu Fကည#6Kပ?$ စuBလ+$မလ+$ဆiuတ+ကiu ခ&-Cခ+$ရeတ+6မH+ပ3ပ-။
စuBဆiuရင# အCဖteရ+င#ကiueဖ2CပKပ?$ မဆiuရင# မ?$ခiu$eရင#န-9 eဖ2CပခGင#တယ#ဆiuရင# အရင#ဆuB$ Row ရ-I Index Number ဟ+
စuBလ+$မလ+$ဆiuတ+ကiu ခ&-Cခ+$ဖiuလiuပ3တယ#။ ဒ?လiuအeနအထ+$မGiu$ဆiuရင# က\န#eတ+#တiuဟ+ Decision Statement
eတ&ကiu အသuB$Cပueတ+6မH+ Cဖစ#ပ3တယ#။
Java Programming Language မH+ အသuB$CပuAiuင#တ-6 Decision Statement eတ&ကeတ+6 eအ+က#ပ3 အတiuင#$ Cဖစ#
Fကပ3တယ#။
If Statement
jshell> int a = 10
a ==> 10
jshell> if (a == 10) {
...> System.out.println("A is " + 10);
...> }
A is 10
IF / ELSE Statement
jshell> int a = 10
a ==> 10
အထက#ပ3နမOန+မH+ eဖ2Cပထ+$တ-6 အတiuင#$ a ကiu 10 န-9 အစ+$ထiu$ပ3တယ#။ Kပ?$eတ+6 Condition မH+ a > 10 လiu စစ#
ထ+$ပ3တယ#။ ဒ3eပမ-6 a ဟ+ 10 Cဖစ#တ-6 အတ&က# a ဟ+ 10 ထက#မPက?$တ-6 အတ&က# IF Clause ကiu အလuပ#မလuပ#
eတ+6ပ- Else Clause ကiuပ-အလuပ#လuပ#သ&+$မH+ Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 Else Clause ထ-မH+ eရ$သ+$ထ+$တ-6 ကuဒ#eတ&ကiu အလuပ#လuပ#သ&+$မH+ Cဖစ#တ-6 အတ&က# A is not greater
than 10 ဆiuKပ?$ eဖ2Cပသ&+$တ+ကiu eတ&Jရပ3မယ#။
ဒ? Statement ကeတ+6 Condition အမGiu$အမGiu$အeပ2မOတည#Kပ?$ မiမiရ-I Program ရ-I Flow ကiueCပ+င#$လ-လiuတ-6 အခ3
မGiu$မH+ eရ$သ+$အသuB$CပuAiuင#ပ3တယ#။
ပထမ Conditon ကiu စစ# ကiuက#ရင#တစ#မGiu$လuပ#၊ မကiuက#ရင# eန+က# Condition တစ#မGiu$ကiu စစ# ကiuက#ရင#တစ#မGiu$
လuပ# မကiuက#ရင# eန+က#ထပ# Condition အမGiu$မGiu$ကiu ထပ#စစ#eဆ$Aiuင#ပ3တယ#။ eန+က#ဆuB$မH မစစ#ခGင#ရင#လ- Else
Clause ကiu eရ$သ+$ထ+$လiuရပ3တယ#။
အထက#ပ3အတiuင#$ showGrade Method ကiu eရ$သ+$ထ+$ပ3တယ#။ Argument အeနန-9 int mark ကiu ရယOeနပ3
တယ#။ အမHတ#အeပ2မOတည#Kပ?$ အဆင#6ကiu ခ&-Cခ+$eပ$Aiuင#တ-6 Method တစ#ခuပ3။
jshell> showGrade(39)
Fails
jshell> showGrade(40)
Pass
jshell> showGrade(79)
Pass
Kပ?$eတ+6 ဒuတiယ Condition Cဖစ#တ-6 else if ထ-မH+ mark >= 40 && mark < 80 လiueရ$ထ+$ပ3တယ#။ ဒ3eFက+င#6
ပထမ Condition န-9 မကiuက#တ+eတ&အ+$လuB$ဟ+ ဒuတiယ Condition ထ-ကiu eရ+က#လ+Fကပ3တယ#။ အထက#ပ3 နမO
န+ထ-မH+eတ+6 showGrade Method ကiu Parameter အeနန-9 40 န-9 79 ကiu အသuB$Cပuထ+$Fကပ3တယ#။ 40 eက+
79 ပ3 40 ဒ3မHမဟuတ# 40 ထက#Pက?$eနKပ?$ 80 ထက#လ- ငယ#eနFကပ3တယ#။ ဒ36eFက+င#6 Pass ဆiuKပ?$ eဖ2CပAiuင#Fကတ+
Cဖစ#ပ3တယ#။
jshell> showGrade(80)
Excellent
jshell> showGrade(99)
Excellent
jshell> showGrade(100)
Perfect
jshell> showGrade(101)
Impossible
eန+က#Kပ?$ showGrade(100) လiu Method ကiu Invoke လuပ#လiuက#တ-6 အခ3မH+လ- Excellent လiu eဖ2CပAiuင#တ+ကiu
eတ&Jရပ3တယ#။ ဒ3ကလ- စတuတv Condition Cဖစ#တ-6 mark == 100 န-9 ကiuက#ည?တ-6 အတ&က# eဖ2Cပeပ$သ&+$တ+ Cဖစ#
Kပ?$ eန+က#ဆuB$ 101 န-9 Method ကiu Invoke လuပ#တ-6အခ3 အထက#eဖ2Cပပ3 Condition တစ#ခuန-9မH မကiuက#ည?ပ- Else
Clause ထ-က လuပ#eဆ+င#ခGက#eတ&ကiuလuပ#eပ$သ&+$တ-6 အတ&က# Impossible ဆiuတ+ကiu eဖ2Cပeပ$သ&+$တ+ Cဖစ#ပ3
တယ#။ ဒ? Statement မGiu$ကiu Condition အမGiu$မGiu$အeပ2 လuပ#eဆ+င#မ[eတ&ခ&-Cခ+$Kပ?$ လuပ#eဆ+င# eစလiuတ-6အခ3မH+
အသuB$CပuAiuင#ပ3မယ#။
Switch Statement
Switch Statement eတ&ဟ+ if - else if - else statement eတ&န-9 တOည?သလiuQiပ3တယ#။ Decision အမG+$အeပ2
မH+ မOတည#Kပ?$ လuပ#eဆ+င#မ[eတ&ကiu ခ&-Cခ+$လuပ#eဆ+င# eစAiuင#မH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 if - else if - else statement
eတ&မH+eတ+6 Decision eတ&ကiu လiuအပ#သလiu eရ$သ+$Aiuင#eပမ-6၊ switch statement eတ&မH+eတ+6 decision eတ&
ကiu Pကiuတင#သတ#မHတ#ထ+$တ-6 တန#ဖiu$အeပ2မH+ မOတည#Kပ?$ လuပ#eဆ+င#မ[eတ&ကiu ခ&-Cခ+$လuပ#eဆ+င# eစမH+ Cဖစ#ပ3
တယ#။
Switch Statement eတ&ထ-မH+ Case eတ&ကiu တစ#ခuထက#မက eရ$သ+$လiuရAiuင#ပ3တယ#။ Case eတ&မH+ Switch
လuပ#မည#6 Value ရ-I Type အလiuက# Literals eတ& ဒ3မHမဟuတ# Constant eတ&ကiu eရ$သ+$Aiuင#ပ3တယ#။ တကယ#လiu
Value ဟ+ Switch လuပ#မည#6 Value န-9 ကiuက#ည?မယ#ဆiuရင# Case eတ&ထ-ကiu ဝင#eရ+က# အလuပ#လuပ#eစမH+ Cဖစ#ပ3
တယ#။
Case eတ&ရ-I Statement eတ&ကiu လuပ#eဆ+င#ရင#$ break; ကiu eတ&ရင#eတ+6 Switch Statement eတ&ထ-ကeန
ထ&က#ခ3သ&+$မH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 beak ကiu မeတ&Jခ-6ရင#eတ+6 Statement eတ&အ+$လuB$ကiu Kပ?$တ-6 အထi
လuပ#eဆ+င# သ&+$မH+ Cဖစ#ပ3တယ#။
void show(int i) {
switch(i) {
case 1:
System.out.println("Java SE");
break;
case 2:
System.out.println("Java EE");
break;
case 3:
System.out.println("Spring");
break;
default:
System.out.println("Everything");
break;
}
}
အထက#ပ3အတiuင#$ JShell န-9 show ဆiuတ-6 Method တစ#ခuကiu eရ$သ+$ထ+$ပ3တယ#။ အ-6ဒ? Method မH+ int အမGiu$
အစ+$ Variable i ကiu Parameter အeနန-9 ရယOထ+$ပ3တယ#။ Kပ?$eတ+6မH i အeပ2မOတည#Kပ?$ Switch လuပ#eနပ3
တယ#။ { န-9 စKပ?$ } န-9 ဆuB$တ-6 eနရ+ကeတ+6 Switch Block Cဖစ#Kပ?$ အ-6ဒ?အထ-မH+eတ+6 case eတ&ကiu တစ#ခuထက#
မက eရ$သ+$Aiuင#ပ3တယ#။
အထက#ပ3 နမOန+ထ-မH+ဆiuရင# i ရ-I တန#ဖiu$ဟ+ ပထမဆuB$ case မH+eဖ2Cပထ+$တ-6 တန#ဖiu$န-9 ကiuက#ည?ရင# အ-6ဒ? case ထ-
မH+ eရ$သ+$ထ+$တ-6 Statement eတ&ကiu အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။ အ-6ဒ?eနရ+မH+ break ကiu eတ&Jတ+န-9
switch statement ထ-က ထ&က#သ&+$မH+ Cဖစ#Kပ?$ တကယ#လiu break သ+ မeတ&Jပ3က Switch Statement ဆuB$တ-6
အထi အထ-က Statement eတ&ကiu လuပ#eဆ+င#သ&+$မH+ Cဖစ#ပ3တယ#။
Switch Block ထ-မH+ case eတ&အCပင# default ကiuလ- တစ#ခu eရ$သ+$Aiuင#ပ3တယ#။ i ရ-I တန#ဖiu$ဟ+ ဘယ# case ရ-I
တန#ဖiu$န-9မH မတOခ-6ရင# default ထ-က Statement ကiuလuပ#eဆ+င#သ&+$မH+ Cဖစ#ပ3တယ#။
jshell> show(2)
Java EE
jshell> show(4)
Everything
အထက#ပ3 ကuဒ#eတ&ထ-မH+လiu show method ကiu 2 န-9 eပ$eခ2Fကည#6တ-6 အခ3မH+ case 2 ထ-က Statement ကiu
လuပ#eဆ+င# သ&+$တ-6 အတ&က# Java EE လiu eဖ2CပeနKပ?$ 4 န-9 eပ$eခ2Fကည#6တ-6အခ3 default ထ-က Statement ကiu
လuပ#eဆ+င#သ&+$eစတ-6 အတ&က# Everything လiueဖ2Cပeပ$သ&+$တ+ကiu eတ&JရမH+ Cဖစ#ပ3တယ#။
Looping Statements
လuပ#eဆ+င#မ[eတ&ကiu အPကiမ#Pကiမ# လuပ#eဆ+င#စလiuတ+တiu၊ Array ဒ3မHမဟuတ# Collection ထ-က Object eတ&ကiu
အသuB$CပuKပ?$ တစ#ခuKပ?$တစ#ခu လuပ#eဆ+င#မ[eတ&ကiu Cပuလuပ#eစလiuတ-6 အခ3မGiu$eတ&မH+ Looping Statement eတ&ကiu
အသuB$CပuAiuင#ပ3တယ#။ Java မH+ Looping Statement အeနန-9 for statement, while statement န-9 do - while
statement ဆiuKပ?$ eရ$သ+$Aiuင#Fကပ3တယ#။
For statement
Java Programming မH+ For Statement ကiu Counter အeပ2မH+ မOတည#Kပ?$ Loop ပတ#တ-6 ပuBစBန-9 Collection ဒ3မH
မဟuတ# Array တစ#ခuထ-မH+ Qiတ-6 Element eတ&ကiu Iterate လuပ#တ-6 ပuBစBဆiuKပ?$ AHစ#မGiu$eရ$သ+$Aiuင#ပ3တယ#။ အထက#ပ3
ပuBစBကeတ+6 Counter အeပ2မH+မOတည#Kပ?$ Loop ပတ#တ-6 ပuBစBမGiu$ Cဖစ#ပ3တယ#။
Counter ကiu အသuB$CပuKပ?$ eရ$သ+$တ-6 For Statement eတ&ဟ+ Java Programming ကiu စတင# Release လuပ#
တ-6 အခGiန#ကထ-က ပ3ဝင#ခ-6တ-6 eရ$သ+$ပuBCဖစ#Kပ?$ Index Number eတ&ကiu အသuB$Cပuလiuတ-6 အခ3မGiu$မH+ အသuB$Cပuသင#6တ-6
eရ$သ+$ပuBCဖစ#ပ3တယ#။
For Statement မH+ အစiတ# အပiuင#$ ၄ ခuပ3ဝင#ပ3တယ#။ အ-6ဒ3eတ&ကeတ+6 Initialization, Condition, Update
Counter န-9 For Block တiu Cဖစ#Fကပ3တယ#။ Initialization မH+eတ+6 For Loop မH+ အသuB$Cပuမည#6 Counter ကiu
Initialize လuပ#တ-6 Expression Cဖစ#ပ3တယ#။ int i = 0 လiueရ$သ+$ထ+$တ-6 အပiuင#$ Cဖစ#ပ3တယ#။ အ-6ဒ?eနရ+မH+ i ဟ+
Counter Cဖစ#Kပ?$ ကနဦ$တန#ဖiu$ကiu 0 လiu သတ#မHတ#eနပ3တယ#။
eန+က# Expression တစ#ခuကတ+6 Counter ကiu Update လuပ#eပ$မည#6 Expression Cဖစ#ပ3တယ#။ Loop ထ-ကiu ဝင#
eရ+က#Kပ?$ For Block ထ-က ကuဒ#eတ&ကiu လuပ#eဆ+င#Kပ?$တiuင#$ Counter ကiu Update လuပ#မH+ Cဖစ#ပ3တယ#။
အထက#ပ3 နမOန+ထ-မH+eတ+6 i ++ ကiu eရ$သ+$ထ+$တ-6 အတ&က# တစ#Pကiမ# Loop ပတ#Kပ?$တiuင#$ Counter Cဖစ#တ-6 i ရ-I
တန#ဖiu$က တစ#တiu$သ&+$မH+ Cဖစ#ပ3တယ#။
အထက#ပ3 နမOန+ အတiuင#$ဆiuရင# ၁၀ Pကiမ# Loop ပတ#Kပ?$တ-6 အခ3မH+ Counter ရ-I တန#ဖiu$ဟ+ 10 Cဖစ#လ+Kပ?$ i < 10
ဆiuတ-6 Boolean Expression ရ-I ရလဒ#ဟ+ false Cဖစ#လ+တ-6အခ3မH+ For Loop ကiu Kပ?$ဆuB$eစမH+ Cဖစ#ပ3တယ#။
အထက#ပ3 နမOန+ထ-မH+ array ထ-မH+ “Hello” န-9 “Java” တiuကiu eရ$သ+$ထ+$ပ3တယ#။ Kပ?$eတ+6 for statement ရ-I
Counter ကiu 0 ကeန စeစKပ?$ Condition အeနန-9 i < array.length လiu eရ$သ+$ထ+$တ-6 အတ&က# i ဟ+ array ရ-I
Length Cဖစ#တ-6 2 ထက# ငယ#eနသမZ Loop အတ&င#$Qi ကuဒ#eတ&ကiu အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 AHစ#
Pကiမ# Loop ပတ#သ&+$တ+ကiu eတ&Jရပ3လiမ#6 မယ#။
ဒ?လiuမGi$ Array ထ-မH+Qiတ-6 Element eတ&ကiu Iterate လuပ#Kပ?$ အသuB$CပuခGင#ရင# eန+က#တစ#မGiu$ eရ$သ+$Aiuင#ပ3eသ$
တယ#။ အ-6ဒ3ကeတ+6 Java 5 မH+ စတင#ပ3ဝင#လ+ခ-6တ-6 Enhance For Statement Cဖစ#ပ3တယ#။
Enhance For Statement eတ&ဟ+ Array ဒ3မHမဟuတ# Collection eတ&ရ-I Element eတ&ကiu တစ#ခuခGင#$ Iterate
လuပ#Kပ?$ အသuB$Cပuလiuတ-6 အခ3မGiu$မH+ အသuB$ဝင#ပ3တယ#။ for (Type obj : list) ဆiuKပ?$ eရ$သ+$ထ+$တ-6 eနရ+မH+ Type
ဟ+ list ထ-မH+Qiတ-6 Element ရ-I Type ကiu eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ list Object ထ-မH+Qiတ-6 Element eတ&က obj
အeနန-9 Itelrate လuပ#Kပ?$ for block ထ-မH+ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ List ထ-မH+Qiတ-6 Element eတ& အ+$လuB$
Iterate လuပ#Kပ?$တ-6 အခ3မH+ for loop ကiu Kပ?$ဆuB$eစမH+ Cဖစ#ပ3တယ#။
အထက#ပ3နမOန+ထ-မH+ for (String str : array) လiueရ$သ+$ထ+$တ-6 အတ&က# array ထ-မH+Qiတ-6 String eတ&ကiu
Iterate လuပ#သ&+$မH+ Cဖစ#ပ3တယ#။ array = {“Hello”, “Java”} လiueရ$သ+$ထ+$တ-6 အတ&က# array ထ-မH+ String
AHစ#ခuQiKပ?$ အeCဖမH+လ- Hello န-9 Java ကiu ထuတ#Cပသ&+$Aiuင#တ+ကiu eတ&Jရပ3မယ#။
Enhance For Statement eတ&ဟ+ Array ဒ3မHမဟuတ# Collection ထ-က Element eတ&ကiu တစ#ခuခGင#$ Iterate
လuပ#Kပ?$ အသuB$CပuAiuင#တ-6 အတ&က# For Each Statement လiueခ2ဆiueလ6Qiပ3တယ#။
While Statement
Condition တစ#ခuဟ+ မHန#eနသ၍ အPကiမ#Pကiမ# အလuပ#လuပ#eနeစလiuတ-6 အခ3မGiu$မH+ while statement ကiu eရ$သ+$
အသuB$CပuAiuင#ပ3တယ#။
While Statement ကiu eရ$သ+$တ-6 eနရ+မH+ While Block ထ-ကiu ဝင#Kပ?$ အလuပ#လuပ#မလ+$ မလuပ#ဘO$လ+$ဆiuတ+
ကiu စစ#eဆ$Aiuင#တ-6 Condition န-9 အ-6ဒ? Condition မHန#eနခ-6ရင# အလuပ#လuပ#eစခGင#တ-6 ကuဒ#eတ&ကiu eရ$ထ+$လiuရတ-6
While Block တiu ကiu eရ$သ+$ထ+$ဖiuလiuအပ#ပ3တယ#။
Program Flow အရဆiuရင# အရင#ဆuB$ Condition န-9 စစ#တယ#၊ ကiuက#ရင# While Block ထ-က ကuဒ#eတ&ကiu အလuပ#
လuပ#eစပ3တယ#။ မကiuက#ရင# While Loop ထ-က eန ထ&က#ပ3မယ#။ While Block ထ-က ကuဒ#eတ&ကiu လuပ#eဆ+င#Kပ?$
တiuင#$ Condition ကiu Cပန#Kပ?$ စစ#ပ3တယ#။ Condition န-9 ကiuက#ည?eနတiuင#$ While Block ထ-က ကuဒ#eတ&ကiu အလuပ#
လကuပ#eစမH+ Cဖစ#ပ3တယ#။ Condition eနရ+ကiu Boolean Expression န-9 eရ$သ+$Aiuင#Kပ?$ အ-6 ဒ?eနရ+မH+ true ကiu
သ+eရ$ထ+$မယ#ဆiuရင# While Loop ထ-ကeန ထ&က#Aiuင#eတ+6မH+ မဟuတ#ပ3ဘO$။
အထက#ပ3နမOန+ထ-မH+eတ+6 count ကiu 0 လiueပ$ထ+$Kပ?$ limit ကiu 5 လiueပ$ထ+$ပ3တယ#။ While Loop ထ-ကiu ဝင#မ
လ+$ဆiuတ+ကiu စစ#တ-6 Condition eနရ+မH+ count < limit လiu eရ$သ+$ထ+$ပ3တယ#။ count ဟ+ limit ထက#ငယ#
eနတ-6 အတ&က# While Block ထ-က ကuဒ#eတ&ကiu အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။ While Block ထ-မH+eတ+6 count
ကiu Print လuပ#Kပ?$ count ကiu တစ#တiu$eနeစပ3တယ#။ ဒ3eFက+င#6 Loop တစ#ခ3 ပတ#Kပ?$တiuင#$ Count ဟ+ တစ#တiu$
သ&+$ပ3မယ#။ ၅ Pကiမ# Loop ပတ#Kပ?$တ-6အခ3မH+eတ+6 count ဟ+ 5 Cဖစ#လ+Kပ?$ Condition စစ#တ-6အခ3မH+ မမHန#eတ+6
ပ- Loop ထ-ကeန ထ&က#သ&+$မH+ Cဖစ#ပ3တယ#။
Do While Statement
While Statement န-9 ဆင#တOသလiuQieပမ-6 မတOည?တ+ကeတ+6 Do Block ထ-က ကuဒ#eတ&ကiu အရင# အလuပ#လuပ#eစ
Kပ?$မH While ထ-က Condition ကiu စစ#eဆ$eနတ+ပ- Cဖစ#ပ3တယ#။ အ-6ဒ?အတ&က# Do Block ထ-က Code eတ&ကiu အ
န-ဆuB$ တစ#Pကiမ#eတ+6 အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။ Do Block ထ-က ကuဒ#eတ&ကiu အလuပ#လuပ#Kပ?$တ-6 အခ3မH+
While Condition န-9 စစ#eဆ$Kပ?$ မHန#တယ#ဆiuရင# eန+က#တစ#Pကiမ# Do Block ကiu အလuပ#လuပ#eစKပ?$ မH+$တယ#ဆiuရင#
eတ+6 Do While Loop ထ-ကeန ထ&က#သ&+$မH+ Cဖစ#ပ3တယ#။
jshell>
jshell> do {
...> System.out.println(count);
...> count ++;
...> } while (count < 3);
3
အထက#ပ3နမOန+ထ-မH+ while ရ-I Condition န-9 do while ရ-I Condition တiuဟ+ အတOတOပ3ပ-။ count ဟ+ 3 Cဖစ#တ-6
အတ&က# AHစ#ခuလuB$ Condition န-9 မကiuက#ည?ပ3ဘO$။ While Statement ရ-I Loop ထ-ကiu မဝင#eပမ-6 Do While
Statement ထ-ကiueတ+6 တစ#Pကiမ# အလuပ#လuပ#သ&+$တ+ကiu eတ&Jရပ3မယ#။ Do While Statement ဟ+ Do ကiu တစ#
Pကiမ# အလuပ#လuပ#ခiuင#$Kပ?$မH Condition ကiu စစ#eဆ$eနတ-6 အတ&က# Cဖစ#ပ3တယ#။
Branching Statement
ပUiuဂရမ# အသ&+$အလ+eတ&ကiu eCပ+င#$ပစ#eအ+င# eရ$သ+$လiuတ-6 အခ3မGiu$eတ&မH+ Branching Statement eတ&ကiu
အသuB$CပuAiuင#ပ3တယ#။ ဆiuFကပ3ဆiu၊ Method တစ#ခuကiu eရ$သ+$eနတ-6 eနရ+မH+ Uuတ#တရက# အ-6ဒ? Method ကiuKပ?$ဆuB$
eစလiuတ-6အခ3မGiu$ Qiတတ#Fကပ3မယ#။ တဖန# Looping eတ&ထ-ကeန အeနအထ+$တစ#မGiu$eFက+င#6 Looping ကiu ဆ
က#Kပ?B$ မလuပ#eစလiuတ-6 အခ3မGiu$Qiပ3မယ#။ Kပ?$eတ+6 လက#Qi Looping ထ-က Statement eတ&ကiu ဆက#Kပ?$ မလuပ#eစ
လiueတ+6ပ- eန+က#တစ#eခ3က# Loop ပတ#eစလiuတ-6 အခ3မGiu$ Qiတတ#Fကပ3မယ#။ အ-6ဒ?လiu အခ3မGiu$မH+ Branching
Statement eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။
Branching Statement အeနန-9 အသuB$CပuAiuင#တ+ကeတ+6 Return, Break န-9 Continue တiuပ- Cဖစ#ပ3တယ#။
Branching Statement eတ&က Label eတ&န-9တ&-Kပ?$ အသuB$CပuAiuင#Kပ?$ မiမiလiuအပ#သလiu Programming Flow ကiu
တစ#မGiu$eCပ+င#$Kပ?$ လuပ#eဆ+င#eစAiuင#ပ3တယ#။
Return Statement
Return Statement eတ&ကiu Return Type ပ3တ-6 Method eတ&မH+ eရ$သ+$ခ-6ဘO$ပ3တယ#။ Method eတ&ရ-I
eန+က#ဆuB$eနရ+မH+ Method Signature မH+ပ3တ-6 Return Type အလiuက# တန#ဖiu$တစ#ခuခuကiu Return Cပန#eပ$ခ-6Fက
မH+ပ3။ တနည#$eCပ+ရမယ#ဆiuရင# အ-6ဒ3ဟ+လ- Return Statement တစ#ခuCဖစ#ပ3တယ#။
အထက#ပ3 Method ဟ+ int တန#ဖiu$တစ#ခuကiu စuBကiန#$တစ#ခu ဟuတ#မဟuတ# စစ#eပ$Aiuင#တ-6 Method တစ#ခu Cဖစ#ပ3
တယ#။ အ-6ဒ? Method မH+ boolean type ကiu Return Type အeနန-9 သတ#မHတ#ထ+$တ-6 အတ&က# အ-6ဒ? Method ရ-I
eန+က#ဆuB$တစ#eနရ+မH+ boolean value ကiu Return Cပန#eပ$ရပ3မယ#။ ဒ?eနရ+မH+ return data % 2 == 0 လiu
Boolean Expression တစ#ခuကiu eရ$သ+$ထ+$ခ-6ပ3တယ#။ ဒ36eFက+င#6 data ကiu 2 န-9 စ+$Kပ?$ အrကင#$ဟ+ 0 Cဖစ#ရင#
true ကiu return Cပန#မH+ Cဖစ#Kပ?$ မဟuတ#ရင#eတ+6 false ကiu return Cပန#မH+ Cဖစ#ပ3တယ#။
ဒ?eနရ+မH+ သတiCပueစလiuတ+ကeတ+6 return Cပန#Kပ?$ရင# အ-6ဒ? Method ထ-က ဘ+ကuဒ#ကiuမH eရ$လiu မရeတ+6ဘO$ဆiu
တ+ကiuပ3ပ-။ ဒ?eနရ+မH+ eရ$သ+$ထ+$တ-6 return data % 2 == 0; ဆiuတ+က return statement Cဖစ#ပ3တယ#။
Return Cပန#စရ+မလiuတ-6 void method eတ&မH+လ- return statement ကiu eရ$သ+$Aiuင#ပ3တယ#။ void method eတ&
မH+ return; ဆiuKပ?$ eရ$သ+$ လiuက#တ+န-9 Method ထ-မH+Qiတ-6 return statement ရ-I eန+က#က ကuဒ#eတ&ကiu ဆက#မ
လuပ#eတ+6ပ- အ-6ဒ? Method ကiu Kပ?$ဆuB$eစမH+ Cဖစ#ပ3တယ#။
Return Statement ကiu eရ$သ+$တ-6 eနရ+မH+ return statement ဟ+ လက#QiQieနတ-6 Block ရ-I eန+က#ဆuB$ ကuဒ#
Cဖစ#ဖiuလiuအပ#ပ3တယ#။ အထက#ပ3နမOန+ထ-မH+ ဆiuရင# return ကiu if block ထ-မH+ eရ$သ+$ထ+$တ-6 အတ&က# အ-6ဒ?
Block ထ-မH+ဆiuရင# return ဟ+ eန+က#ဆuB$ Statement Cဖစ#eနဖiuလiuပ3တယ#။
Break Statement
Break Statement eတ&ကiu Switch Statement eတ&၊ Looping Statement eတ&Cဖစ#Fကတ-6 For, While, Do
While Statement eတ&န-9 တ&-ဖက#eရ$သ+$Aiuင#ပ3တယ#။ အeFက+င#$တစ#မGiu$မGiu$eFက+င#6 break statement ကiu
eရ+က#Kပ?ဆiuတ+န-9 လက#Qi Statement ထ-ကeန ထ&က#eပ$Aiuင#ပ3တယ#။ Switch Statement န-9 break ကiu တ&-သuB$
တ+ကiueတ+6 Switch Statement မH+ eလ6လ+ခ-6Kပ?$ Cဖစ#တ-6 အတ&က# ဒ?eနရ+မH+eတ+6 Looping Statement န-9
ပတ#သက#တ+eတ&ကiuပ- eဖ2Cပသ&+$မH+ Cဖစ#ပ3တယ#။
ဒ3eFက+င#6 Counter Cဖစ#တ-6 i ဟ+ 5 Cဖစ#သ&+$ရင# break statement ကiu အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 5
Pကiမ# Loop ပတ#Kပ?$တ-6 အခ3မH+ i ရ-I တန#ဖiu$ဟ+ 5 Cဖစ#သ&+$Kပ?$ if block ကiu အလuပ#လuပ#eစမH+ Cဖစ#ပ3တယ#။ if block
ထ-မH+ break ကiu eရ$ထ+$တ-6 အတ&က# for loop ကiu Kပ?$ ဆuB$eစမH+ Cဖစ#ပ3တယ#။
ဒ?လiu eရ$သ+$ပuBက Nested Loop eတ&မH+ အသuB$CပuAiuင#ပ3တယ#။ Nested Loop ဆiuတ+က Looping Statement
eတ&မH+ ထပ#Kပ?$ Looping Statement eတ&ကiu eရ$သ+$တ-6 ပuBစBပ3။
month:
for(String m : months) {
day:
for(int i : days) {
if(i == 5) {
continue month;
}
Java ဘ+သ+ရပ#မH+ Nested Loop ကiu eရ$သ+$တ-6 eနရ+မH+ Condition အeပ2မOတည#Kပ?$ အတ&င#$ပiuင#$ Loop ထ-
ကeန Label eတ&ကiu အသuB$Cပuက+ အCပင#ဘက#မH+Qiတ-6 Loop eတ&ကiuလ- Control လuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။
Condition အeပ2မOတည#Kပ?$ continue တiu break တiuန-9 Label eတ&ကiu အသuB$CပuKပ?$ AHစ#သက#ရ+ Loop ကiu Control
လuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။ အထက#ပ3နမOန+ထ-မH+ i ဟ+ 5 AHင#6တOရင# continue month လiueရ$သ+$ထ+$တ-6 အတ&က# i
ဟ+ 5 Cဖစ#တiuင#$ အCပင#က Loop ကiu Continue လuပ#eစမH+ Cဖစ#ပ3တယ#။ ဒuတiယ Condition မH+eတ+6 break day
လiueရ$သ+$ထ+$တ-6အတ&က# အတ&င#$ပiuင#$ Loop ကiu break လuပ#မH+ Cဖစ#ပ3တယ#။
တကယ#လiu Label Cဖစ#တ-6 day ကiu မeရ$သ+$ထ+$ခ-6ရင#လ- Current Loop ကiu Break လuပ#မH+ Cဖစ#တ-6 အတ&က#
အတ&င#$ပiuင#$ Loop ကiuပ- Break လuပ#သ&+$မH+ Cဖစ#ပ3တယ#။
Object Oriented Programming ဆiuတ+က Application ထ-မH+ပ3ဝင#တ-6 Programming Unit eတ&ကiu Object
အeနန-9Cမင#Kပ?$၊ မiမiလiuအပ#တ-6 Application Logic eတ&ကiu Object အခGင#$ခGင#$ Communicate လuပ#Cခင#အ+$Cဖင#6
Cဖစ#eCမ+က#eအ+င# eဆ+င#ရ&က#eစeသ+ Programming eရ$သ+$ပuBeရ$သ+$နည#$ တစ#မGiu$Cဖစ#ပ3တယ#။
OOP ဟ+ Cပင#ပမH+Qiတ-6 Object eတ&ကiu Model ယOKပ?$ eရ$သ+$ထ+$တ-6 Programming Paradigm တစ#ခuCဖစ#တ-6
အတ&က# န+$လည#ရလ&ယ#ကOeစKပ?$၊ တစ#ခ3eရ$သ+$ထ+$တ-6 Class eတ&ကiu အCခ+$ System eတ&မH+လ- Cပန#လည#
အသuB$ခGAiuင#တ-6အတ&က# Reusable ကiuလ- ပiuKပ?$ တiu$တက#eစAiuင#ပ3တယ#။
OOP မတiuင#မH?က ဆiuရင# Programming eတ&ကiu Function eတ& Data eတ&န-9 ဖ&-Jစည#$ထ+$ပ3တယ#။ ဒ36eFက+င#6
Reusable သiပ#မCဖစ#ပ3ဘO$။ Application တစ#ခuကiueရ$သ+$eတ+6မယ#ဆiuရင# အစအဆuB$Cပန#eရ$eနရတ+မG+$ပ3
တယ#။ Kပ?$eတ+6လ- eလ6လ+ရခက#ခ-တ-6အတ&က# eရ$သ+$Aiuင#တ-6 Developer အeရအတ&က#ဟ+ န-ပ3$ခ-6ပ3တယ#။
၁၉၈၀ eလ+က#ကစKပ?$ Industry eတ&န-9 Business Coorporation eတ&မH+ System eတ&ကiu အမG+$အCပ+$
အသuB$Cပuလ+Fကပ3တယ#။
About OOP
OOP ဆiuတ+က Java မဟuတ#ပ3ဘO$။ Java က OOP ကiu အeCခခBKပ?$ eရ$သ+$ထ+$တ-6 Programming Language
တစ#ခuCဖစ#ပ3တယ#။ က\န#eတ+#တiu ဒ?eနရ+မH+eတ+6 Java ဘ+သ+ရပ#ကeန အeCခခBထ+$တ-6 OOP ရ-I Concept eတ&
ကiu စuစည#$eဖ2Cပသ&+$ပ3မယ#။ OOP Concept eတ&ကiu eဖ2Cပတ-6 eနရ+မH+ Class, Object, Method,
Constructor, Abstract Class န-9 Interface တiuကiu အသuB$CပuKပ?$ eဖ2Cပသ&+$မH+ Cဖစ#ပ3တယ#။
တဖန# OOP ရ-I Concept eတ&ဟ+လ- တစ#ခuန-9 တစ#ခuဆက#A&ယ#eနတ+ကမG+$ပ3တယ#။ ဒ36eFက+င#6 Concept eတ&
အeFက+င#$ကiu တစ#ခuခGင#$စ? eဖ2Cပတ-6eနရ+မH+ ဟiueနရ+မH+လ-ပ3 ဒ?eနရ+မH+လ-ပ3 Cဖစ#eနတ-6 အeFက+င#$အရ+eလ$
eတ&ပ3ဝင#သ&+$မH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 Concept တစ#ခuခGင#$စ?ကiu eသeသခG+ခG+eလ6လ+Kပ?$ သeဘ+တရ+$ကiu
န+$လည#သ&+$eအ+င# eလ6လ+သ&+$eစလiuပ3တယ#။ ပ3ဝင#မည#6 အeFက+င#$အရ+eတ&ကeတ+6 eအ+က#ပ3အတiuင#$Cဖစ#ပ3
တယ#။
Encapsulation
OOP ရ-I အဓiက Concept တစ#ခuCဖစ#Kပ?$ Object တစ#ခuရ-I အတ&င#$ပiuင#$ဖ&-စည#$တည#eဆ+က#ပuBeတ&ကiu Cပင#ပကeန မ
Cမင#eအ+င# ဖuန#$က&ယ#eပ$ထ+$Aiuင#eသ+ သeဘ+တရ+$Cဖစ#ပ3တယ#။ Java ဘ+သ+ရပ#မH+ Access Modifier eတ&န-9
Interface တiuကiu အသuB$CပuKပ?$ Encapsulation ကiu ရQieအ+င# eရ$သ+$Aiuင#ပ3တယ#။
Inheritance
မGiu$Uiu$ဆက#ခBပiuင#ခ&င#6လiu အဓiပW3ယ#Cဖစ#Kပ?$ Class eတ&ဟ+ အCခ+$eသ+ Class eတ&ကeနတဆင#6 မGiu$Uiu$ဆက#ခBပiuင#ခ&င#6
Qiပ3တယ#။ မGiu$Uiu$ဆက#ခBCခင#$eFက+င#6 Class eတ& အFက+$မH+ IS A Relationship ကiu Cဖစ#eပ2eစKပ?$ Super Class
ကeန ခ&င#6Cပuထ+$တ-6 Instance Member eတ&ကiu Sub Class eတ&ကeန အလiuလiu အသuB$Cပuလ+Aiuင#မH+ Cဖစ#ပ3တယ#။
Java ဘ+သ+ရပ#မH+ Inheritance ကiu အသuB$CပuCခင#$အ+$Cဖင#6 Super Class ထ-မH+Qiတ-6 Code eတ&ကiu Sub Class
ထ-ကeန Cပန#လည# အသuB$ခGAiuင#မH+ Cဖစ#သလiu Super Class န-9 Sub Class eတ&အ+$လuB$ကiu အuပ#စuတOတ-6 Class eတ&
အeနန-9လ- အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Composition
OOP ဟ+ Code eတ&ကiu CပuCပင#eCပ+င#$လ-ရလ&ယ#ကOeစရန#၊ Cပန#လည# အသuB$ခGAiuင#ရန#ရည#ရ&ယ#ထ+$တ-6
Programming Concept တစ#ခuCဖစ#ပ3တယ#။ Java မH+က တစ#ခ3eရ$ထ+$တ-6 ကuဒ#eတ&ကiu Cပန#လည# အသuB$ခGAiuင#
eအ+င# eရ$သ+$နည#$ ၂ မGiu$Qiပ3တယ#။
Abstraction
Abstraction ဆiuတ+ OOP ရ-I အeCခခB Concept တစ#ခuCဖစ#ပ3တယ#။ ဘuBသeဘ+eဆ+င#eသ+ Type မG+$ကiu
eရ$သ+$ အသuB$CပuAiuင#Cခင#$လiu အဓziပ3ယ#ရပ3တယ#။ ဒ?အခန#$မH+eတ+6 Abstract Class ကiu အသuB$CပuပuB၊ Interface
မG+$ရ-I အသuB$CပuပuBတiuကiueလ6လ+သ&+$ပ3မယ#။
Polymorphism
OOP ရ-I အဓiက Concept တစ#ခuCဖစ#ပ3တယ#။ Polymorphism ဆiuတ+ဟ+ Many Form (ပuBစBအမGiu$မGiu$QieနAiuင#
Cခင#$) လiu အဓziပ3ယ#ရပ3တယ#။ Class eတ&ကiu IS A Relationship Cဖစ#eအ+င# eရ$သ+$Cခင#$အ+$Cဖင#6 Object တစ#ခu
ကiu Reference Type အမGiu$မGiu$ကeန Reference လuပ#eနAiuင#မယ#၊ Kပ?$eတ+6 Super Class ထ-မH+ပ3တ-6 General
ကGတ-6 Behavior ကiu Override လuပ#Cခင#$အ+$Cဖင#6 မတOက&-Cပ+$တ-6 Behavior eတ&ကiu Sub Class eတ&ရ-I Object
eတ&မH+ ရQiAiuင#ပ3တယ#။
Java ဘ+သ+ရပ#မH+ Class eတ& အခGင#$ခGင#$ Inheritance လuပ#ခiuင#$Cခင#$အ+$Cဖင#6 eသ+#၎င#$၊ Abstract Class eတ&
ကiu အသuB$CပuKပ?$eသ+#၎င#$၊ Interface eတ&ကiu အသuB$CပuKပ?$eသ+#၎င#$ Polymophic Cဖစ#eအ+င# eရ$သ+$Aiuင#ပ3တယ#။
Encapsulation
Encapsulation ဆiuတ+ဟ+ OOP ရ-I အeရ$ပ3တ-6 Feature တစ#ခuCဖစ#ပ3တယ#။ Object eတ&မH+ State eတ&န-9
Behavior eတ&ကiu ပiuင#ဆiuင#Fကပ3တယ#။ State ဆiuတ+ကeတ+6 အ-6ဒ? Object ရ-I အရည# အeသ&$ ပiuင#ဆiuင#မ[Cဖစ#ပ3
တယ#။ Encapsulation ဆiuတ+က Object တစ#ခuရ-I ပiuင#ဆiuင#မ[eတ&ကiu Cပင#ပက အလ&ယ#တကO ထင#သလiuCပuCပင#
eCပ+င#$လ- လiuမရAiuင#eအ+င# Cပuလuပ#ထ+$Aiuင#Cခင#$ Cဖစ#ပ3တယ#။
အ-6ဒ3အCပင# Method eတ&ကiuလ- အCပင#ကiu eပ$သuB$eစခGင#တ-6 Method eတ&လ- Qiသလiu အCပင#ကeန မသuB$eစခGင#တ-6
Method eတ&လ- Qiပ3တယ#။ အ-6ဒ?လiu အခ3မGiu$မH+ Encapsulation ကiu မHန#မHန#ကန#ကန# သတ#မHတ#ထ+$Aiuင#ဖiuလiuအပ#ပ3
တယ#။
class Person {
String name;
int age;
void greet() {
System.out.println("My name is " + name);
System.out.println("I am " + age + " years old");
}
}
p.greet();
}
}
ဒ36eFက+င#6 နမOန+ထ-ကလiu -10 ဆiuKပ?$ အစ+$ထiu$eနAiuင#Cခင#$ Cဖစ#ပ3တယ#။ ဒ3ဆiuရင# p ဆiuတ-6 Object ဟ+ အသက#
အAuတ# ၁၀ Qiတ-6 Person ဆiuတ-6 Object ကiu တည#eဆ+က#လiuရသ&+$ပ3မယ#။
Class အတ&င#$မH+Qiတ-6 Instance Variable န-9 Instance Method eတ&e^မH+ သင#6eတ+#ရ+ Access Modifier ကiu
eရ$သ+$Cခင#$အ+$Cဖင#6 Encapsulation Cဖစ#eအ+င# eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
e^မH+ eဖ2Cပခ-6သလiu Person Class ရ-I Instance Variable Cဖစ#တ-6 name န-9 age တiuကiu private Access
Modifier ကiu eရ$သ+$Cခင#$ အ+$Cဖင#6 Cပင#ပမHတiuက#Uiuက# ဆက#သ&ယ# အသuB$မCပuAiuင#eအ+င# eဆ+င#ရ&က#Aiuင#မH+ Cဖစ#ပ3
တယ#။
class Person {
private String name;
private int age;
ဒ3eပမ-6 Instance Variable eတ&ရ-I တန#ဖiu$eတ&ကiu သတ#မHတ#ဖiuအတ&က# Method ဒ3မH မဟuတ# Constructor eတ&ကiu
အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Constructor ရ-I Argument ကeန Instance Variable eတ&ကiu လက#ခBယOKပ?$ သတ#မHတ#မယ#ဆiuရင# ရAiuင#ပ3တယ#။
Constructor ထ-မH+ if statement ကiu အသuB$CပuKပ?$ လiuအပ#သလiu စစ#eဆ$Kပ?$မH Instance Variable eတ&ကiu
အစ+$ထiu$သတ#မHတ#eပ$Aiuင#မH+ Cဖစ#ပ3တယ#။
setter method eတ&ကiu သuB$Kပ?$လ- eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။ Method ထ-မH+လ- စစ#eဆ$Kပ?$မH တန#ဖiu$ကiu
သတ#မHတ#eပ$Aiuင#ပ3တယ#။ setter method eတ&ဟ+ Object ရ-I state eတ&ကiu eCပ+င#$လ-Aiuင#တ-6 အတ&က# Mutator
လiuလ- eခ2ဆiueလ6Qiပ3တယ#။
class Person {
private String name;
private int age;
this.age = age;
}
တဖန# private member eတ&ကiu Cပင#ပကiu Cပန#Kပ?$eဖ2Cပeပ$ဖiuလiuတ-6အခ3မH+ getAge, getName အစQiတ-6 method
eတ&ကiu getter method eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။ getter method eတ&ကiu Accessor Method eတ&လiuလ-
eခ2ဆiueလ6Qiပ3တယ#။
Using Interface
Interface ဆiuတ+က Public န-9 Abstract Method eတ&သ+ eရ$သ+$လiuရတ-6 ရ+A[န#$Cပည#6 Public Abstract
Entity အမGiu$အစ+$တစ#မGiu$ပ3။ Abstract ဆiuတ+က Method Signature ကiuသ+ eရ$သ+$eဖ2Cပထ+$Kပ?$ Body မ
ပ3တ-6 Method အမGiu$အစ+$ပ3။ Method Body မပ3ဘO$ဆiueတ+6 ဘယ#လiuလuပ#မယ#ဆiuတ+ကiu မeဖ2CပAiuင#ပ- ဘ+eတ&
လuပ#လiuရတယ#ဆiuတ+ကiuပ- eဖ2Cပeပ$Aiuင#ပ3တယ#။
Interface ကiu Implement လuပ#တ-6 Class eတ&ကGeတ+6မH Interface မH+ပ3တ-6 Abstract Method eတ&အ+$လuB$ကiu
Cဖည#6စ&က#eရ$သ+$eပ$ရမH+ပ3။ ဒ36eFက+င#6 Interface ဟ+ Interface ကiu လ+Kပ?$ Implement လuပ#တ-6 Class eတ&
အ+$လuB$အတ&က# Interface မH+ပ3တ-6 Method eတ&ကiu Cဖည#6eရ$eပ$ရမယ# ဆiuတ-6 Contract ကiu Cဖစ#eပ2eစပ3တယ#။
အထက#ပ3နမOန+ထ-မH+လiu Car Class ဟ+ Movable Interface ကiu Implement လuပ#လiuက#တ-6 အတ&က# Car
Class ထ-မH+ Movable ထ-မH+ပ3တ-6 move method ကiu အCပည#6အစuB eရ$သ+$eပ$ရeတ+6မH+ Cဖစ#ပ3တယ#။ ဒ?လiu
eရ$သ+$လiuက#တ+န-9 Car Class ကiu Movable အeနန-9 အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
အထက#ပ3 နမOန+ထ-မH+ Movable move = new Car(); ဆiuKပ?$ Interface Type Variable eနရ+ကiu Car Object
ကiu eဆ+က#Kပ?$ အစ+$ထiu$eနပ3တယ#။ Interface Type Variable ကeန အ-6ဒ? Interface ကiu Implement လuပ#ထ+$
တ-6 Class အမGiu$အစ+$ Object eတ&ကiu Reference လuပ#Aiuင#ပ3တယ#။ Movable Interface ကiu implement လuပ#
Cခင#$အ+$Cဖင#6 Car ကiu Movable အeနန-9 အသuB$Cပuသ&+$Aiuင#ပ3တယ#။ Movable Interface မH+ move ဆiuတ-6
method တစ#ခuပ3Kပ?$ Car Class မH+eတ+6 move န-9 stop public method eတ&ပ3တယ#ဆiuတ+ကiu သတiCပueစခGင#
ပ3တယ#။
move variable ဟ+ Movable Type Cဖစ#eပမ-6 eန+က#က&ယ#မH+eတ+6 Car Object ကiu Reference လuပ#eနတ+
Cဖစ#ပ3တယ#။ ဒ3eပမ-6 Compiler က အ-6ဒ?လiu အeနအထ+$မGiu$မH+ move object ဟ+ Movable Type လiuပ- သieနပ3
တယ#။ ဒ36eFက+င#6 move object ကeန တဆင#6 Movable မH+ပ3တ-6 move() method ကiu သ+ အသuB$CပuAiuင#မH+ Cဖစ#ပ3
တယ#။ Runtime မH+ အလuပ#လuပ#တ-6 အခ3ကGeတ+6 Car Object ရ-I move() method က အလuပ#လuပ#သ&+$မH+ပ3။
Compile Time မ:"eတ"0 Reference Variable ရ/H Type ကiu သ" သiIiDပE9 Runtime က7ရင%eတ"0 Actual
Object ကiu အသu<9=ပueနတ"=ဖစ%ပ,တယ%။
ဒ?eနရ+မH+ eCပ+ခGင#တ+ကeတ+6 Interface ကiu Reference Type အeနန-9 အသuB$CပuCခင#$အ+$Cဖင#6 Interface ကeန
ခ&င#6Cပuထ+$တ-6 public method eတ&ကiuသ+ အသuB$CပuသOက သiQieစAiuင#Kပ?$ eန+က#က&ယ#က Implementation eတ&
ကiu အသuB$CပuသOဘက#ကeန မCမင#eအ+င# ဖuန#$က&ယ#eပ$ထ+$Aiuင#ပ3တယ#။ ဒ36eFက+င#6 Interface eတ&ကiu ခBKပ?$ အသuB$Cပu
Cခင#$အ+$Cဖင#6လ- Encapsulation ကiu Cမင#6မ+$eအ+င# eဆ+င#ရ&က#eပ$Aiuင#ပ3တယ#။
Inheritance
Inheritance ဆiuတ+ဘ+လ-
Inheritance ဆiuတ"ဘ"လ/
Class တစ#ခuဟ+ Class တစ#ခuကiu Extends လuပ#ပiuင#ခ&င#6QiKပ?$ Inheritance လuပ#တယ#လiuလ- eခ2eလ6Qiပ3တယ#။ ဒ36
eFက+င#6 Inheritance လuပ#တယ#လiueCပ+ရင# Code ထ-မH+ extends လiueရ$တယ#လiu န+$လည#နiuင#ပ3တယ#။ ဆiuFကပ3
စiu၊ class Dog extends Animal လiueရ$ထ+$ရင# Dog ဟ+ Animal ကiu Inheritance လuပ#ထ+$တယ#လiu သiAiuင#ပ3
တယ#။
အထက#ပ3 အတiuင#$ Dog ဟ+ Animal ကiu Inheritance လuပ#လiuက#တ-6 အတ&က# eအ+က#ပ3 အခGက# ၂ ခuကiu Cဖစ#eပ2
eစပ3တယ#။
papi.eat();
e^နမOန+ထ-မH+လiu Animal papi = new Dog() လiueရ$ထ+$တယ#ဆiuFကပ3စiu။ အ-6ဒ? Code Line ဟ+ Animal Type
papi ဆiuတ-6 reference variable ကiu JVM ရ-I Stack Memory ထ-မH+ သ&+$တည#eဆ+က#ပ3တယ#။ Kပ?$eတ+6မH new
Dog ဆiuKပ?$ Heap Memory မH+ Dog Object ကiu တည#eဆ+က#ပ3တယ#။ Kပ?$eတ+6မH Dog Object ရ-I Memory
Address ကiu papi ရ-I တန#ဖiu$အCဖစ# အစ+$ထiu$ပ3တယ#။
ဒ36eFက+င#6 Reference Variable eတ&ဟ+ Actual Value ကiu ပiuင#ဆiuင#Cခင#$မQiပ-၊ Object တစ#ခuကiu Reference လuပ#
Aiuင#တ-6 Memory Address ကiuသ+ ပiuင#ဆiuင#eနတ+Cဖစ#ပ3တယ#။ ဒ?နမOန+ထ-မH+ ဆiuရင# Animal ဆiuတ+က Reference
Type Cဖစ#Kပ?$eတ+6 Dog ကeတ+6 Object Type Cဖစ#ပ3တယ#။
IS A Relationship ကiu Cဖစ#eပ2eစတ-6အတ&က# Class တစ#ခuကeန သOန-9 သbရ-I Sub Class eတ&ရ-I Object eတ&ကiu
Reference လuပ#လ+Aiuင#ပ3တယ#။
papi.eat();
Dog papi ရ-I Reference Type ဟ+ Dog Cဖစ#Kပ?$ Dog Class ထ-မH+ eat() method ကiu eရ$မထ+$ပ3ဘO$။ ဒ3eပမ-6
papi reference ကeန eat() ဆiuတ-6 method ကiu Invoke လuပ#eနပ3တယ#။ Dog Class ထ-မH+ eat behavior မပ3
eပမ-6 အသuB$Cပuလiuရeနပ3တယ#။ အ-6ဒ3ဟ+ Dog ဟ+ Animal ကiu Inheritance လuပ#ထ+$တ+Cဖစ#တ-6အတ&က# Animal
ရ-I eat behavior ကiu Dog ကeန မGiu$Uiu$ဆက#ခBAiuင#တ-6 အတ&က# Cဖစ#ပ3တယ#။
Dog Object ဟ+ Animal ရ-I eat() method ကiu Inheritance လuပ#Aiuင#တ-6 အတ&က# papi.eat() ဆiuKပ?$ အသuB$CပuAiuင#
တ+ Cဖစ#ပ3တယ#။
Inheritance လuပ%လiuရတ"eတ3ကဘ"eတ3လ/
Super Class ကeန Sub Class အတ&က# ဘ+eတ&ကiu Inheritance လuပ#ပiuင#ခ&င#6eပ$တ+လ-။ အတiuဆuB$eCပ+ရရင#
eတ+6 Instance Member eတ&ကiu Inheritance လuပ#ပiuင#ခ&င#6eပ$Aiuင#ပ3တယ#။ အeသအခG+ စT#$စ+$ရင#eတ+6
Inheritance ဆiuတ-6 eနရ+မH+ ၂ မGiu$QiAiuင#ပ3တယ#။ အ-6ဒ3eတ&ကeတ+6 သ+$သမ?$Cဖစ#UuBန-9 ရQiလ+Aiuင#တ-6 အခ&င#6အeရ$
eတ&န-9 မCဖစ#မeန လuပ#eဆ+င#eပ$ရမည#6 တ+ဝန#တiuဆiuKပ?$ ခ&-Aiuင#ပ3တယ#။
မ7iu9Miu9ဆက%ခ<=ခင%9
ရQiAiuင#တ-6 အeမ&eတ&ကeတ+6 Super Class ထ-က Cမင#eနAiuင#တ-6 ပiuင#ဆiuင#မ[eတ&၊ Instance Variable eတ&န-9
Instance Method eတ& Cဖစ#ပ3တယ#။ ဒ?eနရ+မH+ Cမင#eနAiuင#တ-6လiu တမင#eCပ+တ+ပ3။ အeမ&ရတယ#ဆiuတ+က သieန
Aiuင#တ-6 အရ+ကiuပ-ရမH+ပ3။ မသieအ+င# ဖ&က#ထ+$တ+၊ Kပ?$eတ+6 မသiAiuင#တ-6 အရ+eတ&ကiueတ+6 ရမH+ မဟuတ#ပ3ဘO$။
ဖ&က#ထ+$တ-6 အရ+eတ&ဆiuတ+က private access modifier ကiu သuB$Kပ?$ eရ$ထ+$တ-6 instance method eတ&န-9
instance variable eတ&ကiueတ+6 Sup Class eတ&က Inheritance လuပ#လiuမရပ3ဘO$။ Kပ?$eတ+6 Package မတOတ-6
eနရ+မH+QiKပ?$ Default Access Cဖစ#eနရင#လ- Package မတOရင# မCမင#Aiuင#တ-6 အတ&က# Inheritance လuပ#မည#6
Member eတ&ထ-မH+ မပ3ပ3ဘO$။
အထက#ပ3 Class Diagram ထ-မH+eတ+6 Animal Class န-9 Bird Class တiuဟ+ com.jdc.zoo Package ထ-မH+
အတOတOQiFကပ3တယ#။ com.jdc.zoo.pool Package ထ-မH+eတ+6 Fish Class Qiပ3တယ#။ Kပ?$eတ+6 Bird Class
eက+ Fish Class ပ3 Animal Class ကiu Extend လuပ#ထ+$ပ3တယ#။ မတOတ+ကeတ+6 Bird န-9 Animal Class ဟ+
Package အတOတOထ-မH+QiKပ?$ Fish Class ကeတ+6 တစ#Cခ+$ Package တစ#ခuထ-မH+ Qiပ3တယ#။
Animal Class ထ-မH+eတ+6 eat() ဆiuတ-6 public method ရယ# move() ဆiuတ-6 protected method ရယ# sleep()
ဆiuတ-6 Default Method ရယ# oneDayUp() ဆiuတ-6 private method တiuကiu ပiuင#ပ3တယ#။ Animal Class ကiu
Inheritance လuပ#လiuက#Cခင#$အ+$Cဖင#6 Bird န-9 Fish တiuမH+ ဘ+eတ&ကiu မGiu$Uiu$ဆက#ခBပiuင#ခ&င#6 Qiသ&+$မလ-။
eat() န-9 move() method တiuကeတ+6 Public န-9 Protected Cဖစ#Fကတ-6 အတ&က# Animal ရ-I Sub Class eတ&
အ+$လuB$ မGiu$Uiu$ဆက#ခBခ&င#6ကiu ရQiFကမH+ပ3။ sleep() method ကeတ+6 Default Access Cဖစ#တ-6 အတ&က# Package
ခGင#$တOတ-6 Bird မH+eတ+6 မGiu$Uiu$ဆက#ခBပiuင#ခ&င#6QiKပ?$ Package မတOတ-6 Fish မH+eတ+6 မGiu$Uiu$ဆက#ခBပiuင#ခ&င#6 QiမH+
မဟuတ#ပ3ဘO$။ oneDayUp() method ကeတ+6 private Cဖစ#တ-6 အတ&က# ဘယ# Sub Class ကမH မGiu$Uiu$ဆက#ခBပiuင#ခ&
င#6 QiမH+ မဟuတ#ပ3ဘO$။ Instance Variable eတ&လ- အလ+$တOပ- အလuပ#လuပ#မH+ Cဖစ#ပ3တယ#။
SINGLE INHERITANCE
ဆiuFကပ3စiu။ က\န#eတ+#တiuရ-I System ထ-မH+ scan လuပ#Aiuင#တ-6 Scanner Class တစ#ခuရယ# print လuပ#Aiuင#တ-6 Printer
တစ#ခuQiပ3တယ#။ Copyer က scan လ-လuပ#ခGင#တယ#၊ Kပ?$eတ+6 print လ- လuပ#ခGင#လ+ရင# Scanner န-9 Printer ကiu
Extends လuပ#လiuက#ရင#ရမယ#လiu ထင#ပ3လiမ#6မယ#။ Class တစ#ခuထက#မက ကiu extends လuပ#Aiuင#တ+ကiu Multiple
Ihneritance လiueခ2ပ3တယ#။ ဒ3eပမ-6 Java ဘ+သ+ရပ#မH+က အ-6ဒ?လiu လuပ#လiu မရပ3ဘO$။
Java ဟ+ တစ#Cခ+$ Programming Language eတ&လiu Multiple Inheritance ကiu ခ&င#6မCပuထ+$ပ3ဘO$။ ဆiuလiuတ+
က Class တစ#ခuဟ+ Class တစ#ခuကiuပ- Extends လuပ#ပiuင#ခ&င#6Qiပ3တယ#။ ဒ?လiu Cဖစ#ရCခင#$ဟ+လ- အeFက+င#$CပခGက#
ခiuင#ခiuင#မ+မ+Qiပ3တယ#။
Java ဘ+သ+ရပ#မH+Qiတ-6 Class eတ&အ+$လuB$ဟ+ java.lang.Object ရ-I Sub Class eတ&Cဖစ#FကKပ?$ Class တစ#ခu
ထ-ကiuသ+ Extend လuပ#ပiuင#ခ&င#6 Qiပ3တယ#။ Java ဘ+သ+ရပ#မH+Qiတ-6 Object တiuင#$မH+ java.lang.Object ထ-မH+ပ3တ-6
method eတ&ကiu eရ$ထ+$ထ+$ မeရ$ထ+$ထ+$ သuB$လiuရeနတ+Cဖစ#ပ3တယ#။
e^မH+ eဖ2Cပခ-6သလiu Java ဘ+သ+ရပ#မH+ Class eတ&ဟ+ Multiple Inheritance ကiu လuပ#လiuမရပ3ဘO$။ အ-6ဒ?eတ+6
Class အမGiu$မGiu$ကiu Inheritance လuပ#လiuတ-6 အခ3မH+ ဘယ#လiu လuပ#Fကမလ-။ အ-6ဒ?အတ&က# နည#$လမ#$တစ#ခuကiu ဖ&င#6
eပ$ထ+$ပ3တယ#။ အ-6ဒ3ကeတ+6 အဆင#6ဆင#6 မGiu$Uiu$ဆက#ခBeစCခင#$ပ- Cဖစ#ပ3တယ#။
အထက#မH+ eဖ2Cပထ+$သလiu Class A ကiu Class B က Inheritance လuပ#Kပ?$ Class B ကiu Class C ကeန
Inheritance လuပ#လiuက#မယ#ဆiuရင# Class C ထ-မH+ Class B က Instance Member eတ&eက+ Class A ထ-က
Instance Member eတ&ကiu အသuB$Cပuသ&+$Aiuင#မH+ Cဖစ#ပ3တယ#။
တဖန# Class C ဟ+ Class B ရ-I Reference ကeန Reference လuပ#လiuရမH+ Cဖစ#သလiu Class A ရ-I Reference
ကeနလ- Reference လuပ#လiuရသ&+$ပ3မယ#။ eန+က#Kပ?$ Class C န-9 Class A ရ-I အFက+$မH+လ- IS A Relationship
လuပ%eဆ"င%ရမည%0 တ"ဝန%
Inheritance လuပ#လiuက#UuBန-9 Parent မH+Qiတ+eတ&ကiu မGiu$Uiu$ဆက#ခBပiuင#ခ&င#6Qiသ&+$ပ3တယ#။ အ-6ဒ3န-9 အတO မCဖစ#မeန
လuပ#eဆ+င#ရမည# အရ+eတ&လ-Qiပ3eသ$တယ#။ အ-6ဒ3eတ&ကeတ+6 Super Class မH+ Argument ကiu ယOတ-6
Constructor တစ#ခuခueရ$ထ+$မယ#ဆiuရင# Sub Class eတ&ရ-I Constructor ထ-ကeန အ-6ဒ? Constructor ကiu eခ2
eပ$ရမH+ Cဖစ#ပ3တယ#။
Java ဘ+သ+ရပ#မH+ Super Class ထ-မH+ Default Constructor မQiပ- Argument ကiuယOထ+$တ-6 Constructor
တစ#ခuခueရ$ထ+$မယ#ဆiuရင# Sub Class eတ&ရ-I Constructor eတ&ကeန အ-6ဒ? Constructor ရ-I Signature အတiuင#$
Cပန#Kပ?$ eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။
class A {
class B extends A {
အထက#ပ3 နမOန+ထ-မH+လiu Class A ကiu Class B က Extends လuပ#ထ+$တယ#။ Kပ?$eတ+6 Class A ထ-မH+ String
တစ#ခuကiu ယOထ+$တ-6 Constructor ပ3eနတယ#။ ဒ3ဆiuရင# Class B ရ-I Constructor ထ-မH+ super ကiu String တစ#ခu
ကiu eပ$Kပ?$ eခ2eပ$ရပ3မယ#။ ဒ?eနရ+မH+ Sub Class ရ-I Constructor ကiu Super Class အတiuင#$ eရ$ရမယ#လiu မ
ဆiuလiuပ3ဘO$။ Hard Coding ပ-Cဖစ#Cဖစ# super(data) ကiu eခ2eပ$ဖiuသ+ အဓiက Cဖစ#ပ3တယ#။ ဘ+လiuလ-ဆiueတ+6
Super Class ကiu Initialize မလuပ#ပ- Sub Class eတ&ရ-I Object eတ&ကiu မeဆ+က#Aiuင#တ-6 အတ&က# Cဖစ#ပ3တယ#။
Usage of Inheritance
တOည?တ-6 Behavior eတ&Qiတ-6 Object eတ&ကiu အuပ#စuဖ&-JKပ?$ အသuB$CပuလiuခGင#ရင#eတ+6 Inheritance ကiu အသuB$Cပuသင#6ပ3
တယ#။ ဒ?အခGက#န-9 ပတ#သက#Kပ?$eတ+6 eန+က#အခန#$eတ&Cဖစ#Fကတ-6 Polymorphism, Abstraction န-9
Composition eတ&မH+လ- ဆက#Kပ?$ eလ6လ+သ&+$Fကပ3ဦ$မယ#။
Composition
Engine ဆiuတ-6 Class ထ-မH+ drive() ဆiuတ-6 Method ကiu ပiuင#ပ3တယ#။ Kပ?$eတ+6 က\န#eတ+#တiu Drive Feature ကiu
ပiuင#တ-6 Car ဆiuတ-6 Class ကiu eရ$သ+$ဖiuလiuအပ#လ+FကKပ?ဆiuFကပ3စiu။
Engine Class ထ-က drive() method ကiu အသuB$Cပuလiuတ-6အတ&က# Car ကeန Engine ကiu Inheritance လuပ#Kပ?$
eရ$လiuက#တယ#လiuဆiuFကပ3စiu။ Car ဟ+ Engine ကiu Extends လuပ#လiuက#တ-6 အတ&က# Engine ရ-I drive() ကiu Car က
eနလ- အသuB$Cပuသ&+$Aiuင#ပ3မယ#။ အiueက က\န#eတ+#တiuလiuခGင#တ-6 Code Reuse ကiu ရQiလiuက#ပ3မယ#။ ဒ3eပမ-6 ဒ3ဟ+
သင#6eတ+#သလ+$ဆiuတ+ကiu စT#$စ+$Fကည#6ပ3မယ#။
Car ကeန Engine ကiu Inheritance လuပ#လiuက#Cခင#$အ+$Cဖင#6 Car န-9 Engine Fက+$မH+ IS A Relationship ကiu Cဖစ#
eပ2eစပ3မယ#။ ဆiuလiuတ+က Car ဟ+ Engine Cဖစ#သ&+$ပ3မယ#။ ဒ3ဆiuရင# က+$ကiu Engine သuB$သလiu သ&+$သuB$eနပ3
လiမ#6မယ#။ eမ+#eတ+#ဘuတ#ရ-I အင#ဂGင#eနရ+မH+ က+$ကiu သ&+$Kပ?$ အသuB$Cပuလiuရသ&+$ပ3မယ#။ ဒ3ဟ+ သင#6eတ+#တ-6
အသuB$CပuပuBမဟuတ#ပ3ဘO$။
Using Composition
ကuဒ#eတ&ကiuCပန#လည# အသuB$ခGလiuတ-6အခ3 eန+က#တနည#$ အeနန-9 အသuB$CပuAiuင#တ+ကeတ+6 Composition Cဖစ#ပ3
တယ#။ Composition ဆiuတ+ကeတ+6 အသuB$Cပuလiuတ-6 Behavior ကiu ပiuင#တ-6 Object ကiu မiမiရ-I ရ-I Member အeနန-9
အသuB$CပuKပ?$ လiuအပ#တ-6eနရ+မH+ အ-6ဒ? Object ဆ?က Behavior ကiu ယOKပ?$ အသuB$CပuCခင#$ပ3ပ-။
အထက#ပ3အတiuင#$ Car ထ-မH+ Instance Variable အeနန-9 Engine Object ကiu ထ+$Kပ?$၊ Car ရ-I drive() method
ကiu eရ$သ+$တ-6အခ3မH+ engine.drive() လiu eရ$သ+$လiuက#UuBပ3ပ-။
class Engine {
public void drive() {
System.out.println("Driving");
}
}
class Car {
private Engine engine;
Composition ကiu အသuB$CပuCခင#$အ+$Cဖင#6 တစ#ခ3eရ$ထ+$တ-6 Engine Class ကiu Car မH+လ- အသuB$CပuAiuင#မH+ Cဖစ#
သလiu MotorBoat မH+လ- အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 ကuဒ#eတ&ကiu Cပန#လည# အသuB$Cပuလiuတ-6 အခ3မGiu$မH+
Inheritance အစ+$ Composition ကiu အသuB$Cပuသင#6ပ3တယ#။
Abstraction
✤ Abstraction Cဖစ#eအ+င#ဘယ#လiueရ$မလ-
Student eတ&အeနန-9ကeတ+6 သOတက#ခ-6တ-6 အတန#$န-9 ပတ#သက#တ-6 Information eတ&၊ သbရ-I Billing Status eတ&
Kပ?$eတ+6 သbရ-I Personal Information eတ&ကiu အသuB$CပuAiuင#မယ#။ Kပ?$eတ+6 Public Information eတ&ကiuလ-
အသuB$CပuAiuင#ပ3လiမ#6မယ#။
Office ကeတ+6 eကG+င#$သ+$eတ&ရ-I Registration eတ&၊ Kပ?$eတ+6 Billing Status eတ&၊ အတန#$ အသစ#ဖ&င#6တ+
eတ&၊ Schedule Management လuပ#တ+eတ&ကiu လuပ#ကiuင#Aiuင#ပ3တယ#။ Manager ကeတ+6 Office က လuပ#Aiuင#တ+
eတ&ကiu လuပ#Aiuင#သလiu eင&စ+ရင#$eတ&၊ Budget eတ&ကiuလ- Management လuပ#Aiuင#ပ3လiမ#6မယ#။
ဒ?လiueနရ+မGiu$မH+ Office န-9 Manager eတ&ဟ+ Behavior eတ&ဆင#တOFကတယ#။ Kပ?$eတ+6 Manager ဆiuတ+ကလ-
Office အမGiu$အစ+$တစ#ခuပ-လiuယOဆလiuရပ3တယ#။ ဒ36eFက+င#6 Office ကiu Extends လuပ#Kပ?$ Manager ကiu
တည#eဆ+က#လiuက#လiuရပ3တယ#။
Admin ကeတ+6 Site Admin Cဖစ#ပ3တယ#။ သOကeတ+6 Application အတ&က#လiuအပ#တ-6 Configuration eတ&ကiu
Cပလuပ#Aiuင#ရမယ#။ Kပ?$eတ+6 Master Data eတ&ကiu Manage လuပ#Aiuင#မယ#။ Log eတ&ကiuလ- Manage လuပ#Aiuင#ရပ3
မယ#။
ဒ?eနရ+မH+ Fကည#6မယ#ဆiuရင# Anonymous User ကလ&-ရင# ကGန#တ-6 User eတ&မH+ တOည?တ-6 Behavior eတ&QiFကပ3
တယ#။ Login လuပ#တ+တiu၊ Password eCပ+င#$တ+တiu Kပ?$eတ+6 Profile ကiu Update လuပ#တ+တiuလiu Member တစ#
eယ+က#အeနန-9 လuပ#eစခGင#တ-6 Behavior eတ&QiFကပ3တယ#။ ဒ?eနရ+မH+ Member ဆiuတ-6 Keyword ထ&က#လ+ပ3
တယ#။ ဒ3ဆiuရင# Member Behavior ကiuပiuင#တ-6 Member Class ကiu eဆ+က#Kပ?$eတ+6 Member Behavior ကiu
လiuခGင#တ-6 Class eတ&ကiu Extends လuပ#ခiuင#$လiuက#UuBပ3ပ-။
Abstraction =ဖစ%eအ"င%ဘယ%လiueရ9မလ/
Java ဘ+သ+ရပ#မH+ Abstraction Cဖစ#eအ+င# နည#$ ၂မGiu$န-9 eရ$သ+$Aiuင#ပ3တယ#။ ပထမတစ#နည#$ကeတ+6
Abstract Class eတ&ကiu အသuB$CပuKပ?$ eရ$သ+$တ-6နည#$ Cဖစ#Kပ?$eတ+6 eန+က#တစ#နည#$ကeတ+6 Interface eတ&ကiu
အသuB$CပuKပ?$ eရ$သ+$တ-6 နည#$Cဖစ#ပ3တယ#။
✓ Abstract Class ထ-မH+ Constructor ကiu eရ$သ+$ထ+$မယ#ဆiuရင# Sub Class eတ&ကရ-I Constructor ထ-က
eန super(Arguments) ကiu Cပန#Kပ?$ eခ2eပ$ရမH+ Cဖစ#ပ3တယ#
Animal Class ထ-မH+ Method Signature သ+ပ3ဝင#Kပ?$ Method Body မပ3တ-6 breath() ဆiuတ-6 Method ကiu
eရ$သ+$ထ+$ပ3တယ#။ Abstract Method Cဖစ#ပ3တယ#။ ဆiuလiuတ+က Animal ဆiuတ-6 အမGiu$အစ+$ဟ+ breath() ဆiu
တ+ကiu လuပ#eဆ+င#Aiuင#ရပ3မယ#။ ဒ3eပမ-6 ဘယ#လiuလuပ#ရမယ#ဆiuတ+ကiueတ+6 Animal ထ-မH+ eဖ2Cပထ+$Cခင#$မQiပ3ဘO$။
Animal ကiu Extends လuပ#ထ+$တ-6 Sub Class eတ&အ+$လuB$ကeန breath() method ကiu Override လuပ#Kပ?$
eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။ eခ&$eတ& eFက+င#eတ&က အဆuတ#န-9 အသက#QtခGင#Qtမယ#၊ င3$eတ&က ပ3$ဟတ#န-9
အသက#Qtမယ#။ သက#ဆiuင#ရ+အမGiu$အစ+$မH+ Behavior eတ&ကiu သတ#မHတ#eရ$သ+$eပ$ရပ3မယ#။
@Override
public void breath() {
System.out.println("Breath by Lungs!");
}
}
ဒ?eနရ+မH+ Concrete Class Cဖစ#တ-6 Dog က Abstract Class Cဖစ#တ-6 Animal ကiu Extends လuပ#ထ+$ပ3တယ#။
Dog eတ&ကiu Animal အeနန-9 အသuB$Cပuလiuရသ&+$မH+ Cဖစ#ပ3တယ#။ အ-6ဒ?အတ&က# Dog eတ&မH+ Animal မH+ လuပ#Aiuင#
တယ#လiuသတ#မHတ#ထ+$တ-6 breath() Behavior ကiu လuပ#Aiuင#ဖiuလiuအပ#ပ3တယ#။
ဒ3eFက+င#6 Dog ထ-မH+ Abstract Method Cဖစ#တ-6 breath() ကiu Override လuပ#Kပ?$ eရ$သ+$ဖiuလiuအပ#လ+ပ3တယ#။
တကယ#လiu Dog ကiu Abstract Class အeနန-9 ထ+$မယ#ဆiuရင# Dog ဟ+ Abstract Class Cဖစ#သ&+$တ-6 အတ&က#
breath() method ကiu Override မလuပ#ရင#လ-ရသ&+$ပ3မယ#။ ဘ+လiuလ-ဆiueတ+6 Abstract Class eတ&မH+ Abstract
Method eတ&ကiu eရ$သ+$ပiuင#ခ&င#6Qiတ-6 အတ&က#Cဖစ#ပ3တယ#။
ဒ?လiuပ- Concrete Class Cဖစ#eနရင#eတ+6 Super Class ထ-မH+ပ3တ-6 Abstract Method eတ&အ+$လuB$ကiu Override
လuပ#Kပ?$ eရ$eပ$ဖiuလiuအပ#ပ3တယ#။
✓ Interface eတ&မH+ Constant eတ&၊ Abstract Method eတ& Default Method eတ&န-9 Static Method eတ&
ကiu eရ$သ+$Aiuင#ပ3တယ#
✓ Interface ကiu အသuB$CပuCခင#$အ+$Cဖင#6 Interface ကiu အသuB$Cပueနတ-6 ဘက#မH+eက+၊ Interface ကiu Implemen
လuပ#ထ+$တ-6 Class ဘက#မH+ပ3 Contract တစ#ခuကiu Cဖစ#eပ2eစKပ?$၊ Interface ကiu အသuB$Cပuတ-6 Class ဘက#က
လ- Interface ထ-မH+eရ$သ+$ထ+$တ-6 Method eတ&ကiuပ- သuB$ပiuင#ခ&င#6Qiပ3မယ#၊ Interface ကiu Implement လuပ#
တ-6 Class အတ&က#ကeတ+6 Interface မH+ eရ$သ+$ထ+$တ-6 Abstract Method eတ&အ+$လuB$ကiu Override
လuပ#Kပ?$ eရ$သ+$eပ$ရပ3မယ#
ဒ?eနရ+မH+ Abstract Class eတ&န-9လ- Abstraction Cဖစ#eအ+င#eရ$လiuရသ+$န-9 ဘ+လiu Interface ကiu အသuB$Cပuဖiuလiu
လ+ရတ+လ- ဆiuKပ?$ သBသယCဖစ#ဖ&ယ#Qiပ3တယ#။
eအ+က#ပ3 Class Diagram ကiu Fကည#6Fကရeအ+င#။ Lion, Tiger န-9 Cat တiuရ-I တOည?တ-6 Behavior ကiuစuKပ?$ Feline
ဆiuတ-6 Abstract Class ကiuတည#eဆ+က#ထ+$တယ#။ Kပ?$eတ+6 Dog န-9 Wolf တiuရ-I အuပ#စuCဖစ#တ-6 Canine ကiu
Abstract Class န-9တည#eဆ+က#ထ+$ပ3တယ#။ ထiueန+က# တiရiစ |+န#အ+$လuB$ကiu ကiuယ#စ+$Cပuဖiuအတ&က# Animal ဆiu
တ-6 Abstract Class တစ#ခuကiuတည#eဆ+က#ထ+$ပ3တယ#။
ဆiuFကပ3စiu။ အiမ#eမ&$တiရiစ |+န#eတ&Cဖစ#တ-6 Cat န-9 Dog မH+ giveHand ဆiuတ-6 Behavior ကiu အသuB$Cပuလiuလ+ပ3တယ#။
ဘယ#လiuလuပ#Fကမလ-။ Cat န-9 Dog မH+ giveHand ဆiuတ-6 Method ကiu ထည#6လiuက#ရင#ရပ3မယ#။ ဒ3eပမ-6 Cat န-9 Dog
ကiu အiမ#eမ&$တiရiစ |+န#အeနန-9 စuKပ?$ သuB$လiu ရမH+ မဟuတ#ပ3ဘO$။ Cat န-9 Dog ဟ+ အuပ#စuမတOပ3ဘO$။
ဒ36Cဖင#6ရင# အ+$လuB$ရ-I Abstraction Cဖစ#တ-6 Animal ဆiuတ-6 Animal မH+ giveHand method ကiu ထည#6လiuက#ရင#eက+
လiu eမ$စရ+Qiပ3မယ#။ Lion, Tiger, Wolf န-9 Hippo eတ&ပ3 လက#eတ&လ+eပ$eနFကမယ#။
eန+က#တစ#ခuက Pet ဆiuတ-6 Abstract Class တစ#ခuကiueဆ+က#၊ Kပ?$ရင# Cat န-9 Dog ကiu Extends လuပ#ခiuင#$လiuက#ရင#
eက+ လiueမ$Aiuင#ပ3လiမ#6မယ#။ ဒ3ဆiuရင# Pet Behavior eတ&ကiu Cat န-9 Dog ကပ-ရeတ+6မယ#။ Lion eတ& Tiger eတ&
ကiu လက#eပ$ခiuင#$လiuမရeတ+6ဘO$လiu ဆiuAiuင#ပ3လiမ#6မယ#။
ဒ?လiuဆiuရင# Cat က Filne န-9 Pet Class တiuကiu Extends လuပ#ထ+$Kပ?$ Dog ကလ- Cainie န-9 Pet တiuကiu Extends
လuပ#ထ+$သလiuCဖစ#သ&+$ပ3မယ#။ ဒ3eပမ-6 Java မH+က Multiple Inheritance ကiu ခ&င#6မCပuပ3ဘO$။ ဒ3ကလ- Java ရ-I
န+မည#Pက?$ Cပဿန+တစ#ခuCဖစ#တ-6 Deadly Dead of Diamond လiueခ2တ-6 Cပဿန+eFက+င#6Cဖစ#ပ3တယ#။ Deadly
Dead of Diamond န-9ပတ#သက#Kပ?$ Inheritance အခန#$မH+ eဖ2Cပခ-6Kပ?$ Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 Abstract Class န-9 ရQiAiuင#တ-6 Abstraction ဟ+ Inheritance Hierarchy တစ#ခuအတ&င#$မH+QieနမH ရQi
Aiuင#တယ#ဆiuတ-6 ကန#9သတ#ခGက#ကiu Cဖစ#eပ2eစပ3တယ#။
RAISING OF INTERFACE
Java ဟ+ OOP ကiu အeCခခBထ+$ပ3တယ#။ ဒ3eပမ-6 Class တစ#ခuဟ+ Class တစ#ခuဆ?ကသ+ မGiu$Uiu$ဆက#ခBပiuင#ခ&င#6Qi
တယ#ဆiuတ-6 Single Inheritance ကiu အသuB$Cပuထ+$ပ3တယ#။ ဒ36eFက+င#6 Java Class တစ#ခuဟ+ Class တစ#ခuကiuသ+
Extends လuပ#လiuရပ3တယ#။
အထက#ပ3 အတiuင#$ Cat eက+ Dog ကiuပ3 Pet Interface ကiu Implement လuပ#ခiuင#$Cခင#$အ+$Cဖင#6 Cat ကiueက+
Dog ကiuပ3 Pet အeနန-9 အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ ထiuအCပင#6 Robot Cဖစ#တ-6 RoboDog ကiuလ- Pet ကiu
Implement လuပ#ပ3က RoboDog ကiuပ3 Pet အeနန-9 အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Object A န-9 Object B အFက+$မH+ Coupling မG+$eနတယ#ဆiuရင# Object A န-9 B တiuကiu ခ&-Kပ?$ သuB$လiuရမH+ မဟuတ#
eတ+6ပ3ဘO$။ Object A ကiu သuB$ခGင#ရင# Object B QiမHသuB$လiuရမည#6 အeနအထ+$Cဖစ#လ+ပ3မယ#။ အ-6ဒ?လiu Class eတ&
ဟ+ CပuCပင#eCပ+င#$လ-ရခက#ခ-Kပ?$ Cပန#လည# အသuB$ခGရလ- ခက#ခ-သ&+$ပ3မယ#။
အထက#ပ3 House Class ထ-မH+ Dog Instance Variable ကiu အသuB$Cပuထ+$ရင# အ-6ဒ? House Class ထ-မH+ Dog
ကလ&-ရင# ကGန#တ-6 Object eတ&ကiu သuB$လiuရမH+ မဟuတ#eတ+6ပ3ဘO$။
အ-6ဒ?အစ+$ ပiuKပ?$ Abstraction ကGတ-6 Pet Interface Object ကiu အသuB$Cပuထ+$ရင# Pet Interface ကiu Implement
လuပ#ထ+$တ-6 Object eတ&အ+$လuB$ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
အထက#ပ3အတiuင#$ Class တစ#ခuရ-I Dependency Cဖစ#တ-6 Instance Variable eတ&eနရ+မH+ Abstraction ကiu
အသuB$CပuCခင#$အ+$Cဖင#6 Coupling ကiu eလG+6ခGAiuင#Kပ?$ CပuCပင#eCပ+င#$လ-ရလ&ယ#ကOKပ?$ Cပန#လည# အသuB$ခGAiuင#eသ+ ကuဒ#
eတ&ကiu eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
Method Argument eတ&eနရ+မH+လ- Specific Cဖစ#တ-6 Type eတ&အစ+$ ပiuKပ?$ Abstraction ကGတ-6 Abstract
Class eတ& Interface eတ&ကiu အသuB$Cပuတ+ဟ+ CပuCပင#eCပ+င#$လ-ရလ&ယ#ကOKပ?$ Cပန#လည# အသuB$ခGAiuင#eသ+ ကuဒ#
eတ&ကiu eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
Polymorphism
အထက#မH+ eဖ2Cပထ+$သလiu Bird Class ဟ+ Animal Class ကiu Extends လuပ#ထ+$သလiu Flyable Interface ကiu
လ- Implement လuပ#ထ+$Aiuင#ပ3တယ#။ အ-6ဒ?အတ&က# Bird Object ကiu Bird အeနန-9 eသ+#၎င#$ Animal အeနန-9
eသ+#၎င#$ Flyable အeနန-9 eသ+#၎င#$ အသuB$CပuAiuင#ပ3တယ#။ တဖန# Java Class eတ& အ+$လuB$ဟ+
java.lang.Object ရ-I Sub Class eတ& Cဖစ#Fကတ-6 အတ&က# Object အeနန-9လ- အသuB$CပuAiuင#ပ3တယ#။
Method Override
ဆiuFကပ3စiu Fish ဆiuတ-6 Class မH+ swim ဆiuတ-6 Behavior ပ3လ+တယ#။ eရpင3$တစ#eက+င#န-9 Uiu$Uiu$င3$တစ#eက+င#တiu
ဟ+ eရကO$တ+ခGင#$ မတOAiuင#ဘO$။ အ-6ဒ?eတ+6 eရကO$Cခင#$ ဆiuတ-6 Behavior ကiu Sub Class eတ&က Cပင#ဖiuလiuအပ#လ+
class Fish {
public void swim() {
System.out.println("Fish is Swimming");
}
}
နမOန+ထ-မH+ဆiuရင# Fish fish = new GoldenFish() လiueရ$ထ+$ပ3တယ#။ e^မH+ eဖ2Cပခ-6သလiuပ- Reference Type
ဟ+ Fish Cဖစ#Kပ?$ Object Type ဟ+ GoldenFish Cဖစ#eနမH+ Cဖစ#ပ3တယ#။
Reference Variable တစ%ခuကeန Invoke လuပ%လiuရတ/0 Method eတ3ကiu Compile Time မ:" Reference
Type ကiu >ကည%0DပE9 ဆu<9=ဖတ%ပ,တယ%။ တကယ%တန%9 အလuပ%လuပ%တ/0အခ,က7eတ"0 Runtime eရ"က%eတ"0မ: Object
Type ကiu >ကည%0DပE9 ဆu<9=ဖတ%တ"=ဖစ%ပ,တယ%။
Override ဆiuတ+က Inheritance လuပ#ထ+$တ-6 Instance Method eတ&ကiu Sub Class ထ-ကeန အသuB$မCပuလiuတ-6
အခ3မH+ ထပ#eရ$ထ+$တ-6 Method eတ&ကiu ဆiuလiuCခင#$Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 Static Method eတ& Variables eတ&
မH+ Override ဆiuတ+ မQiပ3ဘO$။ Inheritance မCဖစ#တ-6 eနရ+eတ&မH+လ- Override ဆiuတ+ မQiAiuင#ပ3ဘO$။
Many Forms
Method Override eFက+င#6 Super Class ထ-မH+ သတ#မHတ#ထ+$တ-6 Behavior န-9 မတOတ-6 Sub Class eတ&ကiu
eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။ တနည#$ဆiuရမယ#ဆiuရင# General ကGတ-6 Behavior eတ&ကiu ပiuKပ?$ Specialize ကGတ-6
Behavior eတ&ကiu eရ$သ+$အသuB$Cပuလiuတ-6 အခ3မGiu$မH+ Method Override ကiu အသuB$CပuAiuင#ပ3တယ#။
class Bird {
public void fly() {
System.out.println("Bird is flying!");
}
}
အထက#ပ3 နမOန+ထ-မH+ Bird Class ဟ+ fly behavior ကiu ပiuင#ဆiuင#ပ3တယ#။ Kပ?$eတ+6 Eagle န-9 Craw Class eတ&
ဟ+ Bird ကiu Extends လuပ#ထ+$Kပ?$ fly() method ကiu Override လuပ#ထ+$ပ3တယ#။ ဒ36eFက+င#6 သOတiuဟ+ Bird eတ&
Cဖစ#တ-6အတ&က# fly ဆiuတ-6 Behavior ကiu ပiuင#ဆiuင#Fကပ3တယ#။ ဒ3eပမ-6 fly() method ကiu Override လuပ#ထ+$Cခင#$အ+$
Type Casting
Many Form န-9 ပတ#သက#Kပ?$ Declare လuပ#ထ+$တ-6 Reference Type န-9 လuပ#လiuရတ-6 Behavior eတ&န-9 ပတ#သက#
Kပ?$ eလ6လ+Fကည#6 Fကရeအ+င#။
အထက#ပ3 Class Diagram ထ-မH+ Animal ဆiuတ-6 Class QiKပ?$ eat() ဆiuတ-6 Method တစ#ခuကiu ပiuင#ပ3တယ#။ Kပ?$
eတ+6 Bird က Animal ကiu Extends လuပ#ထ+$Kပ?$ fly() ဆiuတ-6 Method တစ#ခuကiuလ- eရ$ထ+$ပ3တယ#။ ဒ3ဆiuရင#
Bird IS A Animal Cဖစ#Kပ?$ Bird ထ-မH+ Animal ကeန Inheritance လuပ#လiuရလ+တ-6 eat() method ကiueက+ fly()
method ကiuပ3 ပiuင#ဆiuင#eနပ3တယ#။
Java မH+က Object တစ#ခuကeန Invoke လuပ#လiuရတ-6 Method eတ&ကiu Reference Type အeပ2မH+ မOတည#Kပ?$
ဆuB$Cဖတ#ပ3တယ#။ Bird Object ကiu Bird Reference ကeနလ- Reference လuပ#eနAiuင#သလiu Animal Reference
ကeနလ- Reference လuပ#eနAiuင#ပ3တယ#။
bird1.eat();
bird1.fly();
bird2.eat();
}
အထက#ပ3 ကuဒ#ထ-မH+ဆiuရင# new Bird() ဆiuတ+ကiu တစ#Pကiမ#သ+ eရ$သ+$ထ+$တ-6 အတ&က# Object ကeတ+6 တစ#ခu
ပ- Qiပ3တယ#။ အ-6ဒ? Object ကiu Bird bird1 Reference ကeန Reference လuပ#ထ+$ပ3တယ#။ Kပ?$eတ+6 Animal
bird2 = bird1 လiueရ$ထ+$Cပန#တ-6 အတ&က# bird1 ကeန Reference လuပ#eနတ-6 Object ကiuပ- Animal Type
Reference Cဖစ#တ-6 bird2 ကeနလ- Reference လuပ#eနCပန#တယ#။
တကယ#Qiတ+ကeတ+6 Bird Object တစ#ခuထ-ပ3။ Bird Type Reference ကeက+ Animal Type Reference
ကပ3 Reference ကပ3 Reference လuပ#eနပ3တယ#။ တကယ#eတ+6 Object ရ-I Type ဟ+ Bird Cဖစ#တ-6 အတ&က#
eat() method eက+ fly() method ကiuပ3 Invoke လuပ#လiuရသင#6ပ3တယ#။
Java မH+က Variable တစ#ခuကiu Declare လuပ#လiuက#တ-6 အခ3မH+ Type ကiu သတ#မHတ#eပ$ရန#လiuအပ#Kပ?$ အ-6ဒ? Type
ဟ+လ- Declare လuပ#Kပ?$တ-6 eန+က#မH+ eCပ+င#$လiu မရeတ+6ပ3ဘO$။
bird.fly();
}
အထက#နမOန+ထ-မH+လiu animal ဟ+ Animal Type အCဖစ# Declare လuပ#လiuက#တ-6 အတ&က# eန+က#က&ယ#မH+ Bird
Object ကiu Reference လuပ#eနeပမ-6 Animal အeနန-9ပ-အလuပ#လuပ#ပ3လiမ#6မယ#။ Bird အCဖစ#eCပ+င#$လiuမရeတ+6ပ3
ဘO$။ ဒ3eပမ-6 Bird Behavior ကiu အသuB$CပuခGင#တ-6အခ3မGiu$ဆiuရင# Bird Type bird variable ကiu အသစ#ထပ#Kပ?$
Declare လuပ#ရပ3မယ#။
အ-6ဒ?eနရ+ကiu animal variable ကiu လ+Kပ?$ အစ+$ထiu$ရပ3eတ+6မယ#။ ဒ?eနရ+မH+ animal ဟ+ Bird Object ကiu
Reference လuပ#eနတ+မHန#eပမ-6 Referenc Type ဟ+ Animal Cဖစ#ပ3တယ#။ Bird ဟ+ Animal ကiu Extends လuပ#
ထ+$တ-6 အတ&က# Bird eတ&ဟ+ Animal Cဖစ#eပမ-6 Animal တiuင#$ဟ+ Bird မCဖစ#Aiuင#ပ3ဘO$။ ဒ36eFက+င#6 animal
Variable ကiu Bird eနရ+မH+ ဒ?အတiuင#$ အစ+$ထiu$လiu မရAiuင#ပ3ဘO$။
(Bird)animal ဆiuKပ?$ Animal Type ကiu Bird အCဖစ#ပuBစBeCပ+င#$eပ$ဖiuလiuအပ#ပ3တယ#။ ဒ3ဆiuရင# Compiler ကeန
Bird အCဖစ#လက#ခBသ&+$ပ3မယ#။ ဒ?လiu eရ$သ+$Cခင#$ကiu Type Casting လiueခ2ပ3တယ#။ Type Casting ကiu eရ$သ+$
ရ+မH+ Inheritance Relationship Qiတ-6 Class eတ& အခGင#$ခGင#$မHသ+ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ ဘ+မH မဆiuင#တ-6
Class eတ&ဆiuရင# Cast လuပ#လiuရမH+မဟuတ#ပ3ဘO$။
bird.fly();
}
အထက#ပ3အတiuင#$ Animal Object ကiu Bird အCဖစ# Cast လuပ#လiuရလ+$ဆiueတ+6 Compiler ကeတ+6 လက#ခBသ&+$
ပ3တယ#။ Compiler Error Cဖစ#မH+ မဟuတ#ပ3ဘO$။ ဒ3eပမ-6 Runtime eရ+က#တ-6 အခ3ကGမH Reference လuပ#eနတ-6
Object က Bird မဟuတ#ပ- Animal Cဖစ#eနတ-6 အတ&က# ClassCastException ကiu Cဖစ#eပ2eစAiuင#ပ3တယ#။
Super Class ထ/မ:" eရ9ထ"9တ/0 Method န/A Sub Class ထ/မ:" eရ9ထ"9တ/0
Method Signature eတ3ဟ" ထပ%တPညEeနရပ,မယ%။
Method Signature ဆiuတ+က Method Name န-9 Argument List ကiu eပ3င#$Kပ?$eခ2ဆiuFကတ+ပ3။ Override လuပ#
မယ#ဆiuရင# Super Class ထ-မH+eရ$သ+$ထ+$တ-6 Method န-9 Sub Class ထ-က Method eတ&ဟ+ Signature
ခGင#$ တOeနမHရပ3မယ#။ JVM ကeန Method eတ&ကiu Invoke လuပ#တ-6အခ3မH+ Method Signature ကiu Fကည#6Kပ?$
Invoke လuပ#ရတ+Cဖစ#ပ3တယ#။ Method Signature မတOတ+န-9 eန+က#ထပ# Method တစ#ခuလiu မHတ#ယOပ3တယ#။ ဒ36
eFက+င#6 Method Name eတ+6တOKပ?$ Argument မတOရင# Override Cဖစ#မH+ မဟuတ#ပ3ဘO$။ Overload လuပ#တ+ပ-
Cဖစ#မH+ပ3။ Method Overload အeFက+င#$ကiueတ+6 eန+က#မHဆက#eCပ+ပ3မယ#။
ဒ36eFက+င#6 Access Modifier eတ&ကiu eရ$သ+$မယ#ဆiuရင# Super Class ထ-မH+ eရ$ထ+$တ+န-9 ထပ#တO ဒ3မHမဟuတ#
ပiuKပ?$ eဘ+င#ကGယ#တ-6 Access Modifier ကiu အသuB$Cပuရပ3မယ#။ Super Class ထ-မH+ Protected လiueရ$ထ+$တ+
ကiu Override လuပ#ထ+$တ-6 Sub Class ထ-မH+ Public လiueရ$ထ+$Aiuင#ပ3တယ#။
Return Type eတ3ဟ"လ/ Super Class မ:" eရ9ထ"9တ/0 Return Type န/A
သRရ/H Sub Type eတ3ပ/=ဖစ%ရပ,မယ%
Java SE 5 မတiuင#ခင# အထiကeတ+6 Override လuပ#မယ#ဆiuရင# Super Class မH+ eရ$ထ+$တ-6 Return Type န-9
Sub Class ထ-မH+ eရ$ထ+$တ-6 Return Type eတ&ဟ+ တOည?eနဖiuလiuအပ#ပ3တယ#။ ဒ3eပမ-6 Java SE 5 မH+
Covarient Return ဆiuတ+ကiu ထည#6သ&င#$လ+Kပ?$ Override မH+ Sub Class eတ&ရ-I Return Type ဟ+ Super
Class ရ-I Type ဒ3မHမဟuတ# Sub Type eတ&ကiuလ- Return လuပ#ခ&င#6ရလ+ပ3တယ#။
Sub Class eတ&ရ-I Object ကiu Super Class ရ-I Reference eတ&ကeန အသuB$Cပuမယ#ဆiuရင# Super Class ရ-I
Method ကiu Invoke လuပ#မH+ Cဖစ#ပ3တယ#။ အ-6ဒ?eတ+6 Super Class ရ-I Return Type ကiu Cပန#ရမယ#ဆiuKပ?$ Invoke
လuပ#တ-6 သOက eစ+င#6eနမH+ Cဖစ#ပ3တယ#။ တကယ# Runtime ကGeတ+6 Object Type Cဖစ#တ-6 Sub Class ကeန
အလuပ#လuပ#မH+ Cဖစ#Kပ?$ Super Class က Return Cပန#တ-6 Type ကiu မCပန#မiရင# Invoke လuပ#တ-6 သOမH+ Cပဿန+Qi
သ&+$Aiuင#ပ3တယ#။ IS A Relationship Qiတ-6 Type eတ&ကiu Return Cပန#ရင#eတ+6 သOလ- Return Type အeနန-9
အသuB$Cပuလiuရတ+ Cဖစ#တ-6 အတ&က# Cပဿန+QiမH+ မဟuတ#ပ3ဘO$။
ဆiuFကပ3စiu eဈ$ဝယ#တ-6 Method တစ#ခuရ-I Return Type ဟ+ င3$ Cဖစ#eနKပ?$ Sub Class ကeန Return Cပန#တ+က
Fကက#သ+$Cဖစ#eနရင# အဆင#မeCပပ3ဘO$။ င3$Fကင#$တiu င3$Cမင#$တiuကiu Return Cပန#ရင#eတ+6 င3$Cဖစ#တ-6 အတ&က#
Cပဿန+QiမH+ မဟuတ#ပ3ဘO$။
ဒ3eပမ-6 Checked Exception eတ&ဆiuရင#eတ+6 မတOပ3ဘO$။ Super Class ထ-မH+ Throw မလuပ#ထ+$တ-6
Exception ကiu Sub Class ထ-ကeန Throw လuပ#လiuမရပ3ဘO$။ eန+က#Kပ?$ Super Class ထ-က Throw လuပ#ထ+$
တ-6 Checked Exception န-9 အမGiu$အစ+$မတOတ-6 Exception eတ&ကiuလ- Sub Class ထ-က eန Throw လuပ#လiuမရ
ပ3ဘO$။
Super Class ထ-မH+ Checked Exception ကiu Throw လuပ#ထ+$တယ#။ Sub Class ထ-ကeန Exception ကiu
Throw မလuပ#ဘO$ ဒ3ကရပ3တယ#။ Kပ?$eတ+6 Super Class ထ-က Throw လuပ#ထ+$တ-6 Exception န-9 ထပ#တO ဒ3မH
မဟuတ# Sub Exception ကiu Throw လuပ#မယ#ဆiuရင#လ-ရပ3တယ#။ Super Class ထ-က Throw လuပ#ထ+$တ-6
Exception ထက#Pက?$တ-6 Exception eတ&Kပ?$eတ+6 အမGiu$အစ+$မတOတ-6 Exception eတ&ကiu Throw လuပ#လiuမရပ3
ဘO$။
Overload
Overload ဆiuတ+က န+မည#တOKပ?$ Method Signature မတOတ-6 Method eတ&ကiu Class တစ#ခuထ-မH+ eရ$သ+$
ခGင#$ကiu Overload လuပ#တယ#လiueခ2ပ3တယ#။ န+မည#တOKပ?$ Argument မတOတ-6 Method eတ&ကiu eရ$သ+$Cခင#$အ+$
Cဖင#6 တစ#eနeနရ+ရ+မH+ တစ#Cခ+$ Method တစ#ခuကiu အသuB$CပuဖO$ခ-6ရင#6 eန+က# Method တစ#ခuလ- ဒ?လiu အလuပ#လuပ#
မH+ပ3လ+$ဆiuKပ?$ ခန#9မHန#$Aiuင#မH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 Java API eတ&ရ-I Class eတ&ထ-မH+ Overload လuပ#Kပ?$
eရ$သ+$ထ+$တ-6 Method eတ&ကiu အမG+$အCပ+$eတ&JAiuင#မH+ Cဖစ#ပ3တယ#။
အထက#ပ3 အတiuင#$ eရ$သ+$ထ+$တ-6 Method eတ&ဆiuရင# န+မည# တစ#မGiu$စ?Cဖစ#eနတ-6 အတ&က# Overload မဟuတ#
ပ3။
Override Vs Overload
Override န-9 Overload ဆiuတ+ဟ+ န+မည#ခGင#$လ- ဆင#တOပ3တယ#။ Kပ?$eတ+6 Method eတ&အeပ2မH+ Cဖစ#eပ2တ+
ခGင#$လ- တOည?တ-6 အတ&က# အမHတ#မH+$eလ6Qiပ3တယ#။ ဒ?eနရ+မH+ Override န-9 Overload ကiu ဘယ#လiuခ&-Cခ+$ရမယ#ဆiu
တ+ကiu eဖ2Cပသ&+$ပ3မယ#။
Override ဆiuတ+က Super Class ထ-မH+Qiတ-6 Method န-9 Signature ခGင#$တOတ-6 Method တစ#ခuကiu Sub Class
ထ-မH+ eရ$သ+$ထ+$တ+ကiu ဆiuလiuပ3တယ#။ တကယ#ဆiuရင# Method Signature တOတ-6 Method eတ&ကiu Class
တစ#ခuထ-မH+ eရ$လiuမရပ3ဘO$။ ဒ3eပမ-6 Inheritance Hirerachy Tree ထ-မH+ ဆiuရင#eတ+6 eရ$လiuရပ3တယ#။ Method
Signature ခGင#$တOတ-6 အတ&က# Override လuပ#ထ+$တ-6 Method eတ&ကiu Object ဆ?ကeန Fကည#6မယ#ဆiuရင# တစ#ခu
ထ-eသ+ Method လiuCမင#ပ3လiမ#6မယ#။
Overload ဆiuတ+က Class တစ#ခu ဒ3မHမဟuတ# Object တစ#ခuမH+ Method Name တOKပ?$ Argument မတOတ-6
Method eတ&ကiu eရ$သ+$ထ+$Cခင#$ကiu ဆiuလiuပ3တယ#။ Method Signature ခGင#$ မတOတ-6 အတ&က# Overload
Method eတ&ဟ+ န+မည#သ+တOတ-6 သ?$Cခ+$ Method eတ& Cဖစ#Fကပ3တယ#။ Overload ဆiuတ+က Class တစ#ခuထ-
မH+လ- eရ$သ+$Aiuင#သလiu Inheritance လuပ#လiuရလ+တ-6 Method eတ&Fက+$မH+လ- Cဖစ#Aiuင#ပ3တယ#။ Compiler န-9
Runtime ဘက#က Fကည#6မယ#ဆiuရင# Overload Method eတ&ကiu မတOတ-6 Method eတ&လiu Cမင#ပ3လiမ#6မယ#။
ဒ36eFက+င#6 Override Method eတ&ဟ+ Same Method eတ&Cဖစ#Fကeပမ-6 Overload Method eတ&ဟ+ Different
Method eတ&Cဖစ#Fကပ3တယ#။ တဖန# Override Method eတ&ဟ+ Inheritance Qiတ-6 Instance Method eတ&
Fက+$မH+သ+ Cဖစ#ပ&3$eလ6Qieပမ-6၊ Overload ကeတ+6 Instance Method Fက+$မH+eက+ Static Method eတ&
Fက+$မH+ပ3 Cဖစ#ပ&3$eလ6Qiပ3တယ#။
Return Type Super Class ထ-က Return Type န-9 မည#သည#6 Return Type မGiu$ကiu မဆiu
ထပ#တOဒ3မHမဟuတ# Sub Type သ+ Cဖစ# အသuB$CပuAiuင#ပ3တယ#
ရပ3မယ#
Access Modifier Super Class ထ-က Access မည#သည#6 Access Modifier မGiu$ကiu မ
Modifier န-9 ထပ#တO ဒ3မHမဟuတ# ပiuKပ?$ ဆiu အသuB$CပuAiuင#ပ3တယ#
ကGယ#ဝန#$တ-6 Access Modifier ကiu
အသuB$Cပuရပ3မယ#
Checked Exceptions Super Class ထ-က Checked မည#သည#6 Exception မGiu$ကiu မဆiu
Exception န-9 ထပ#တOဒ3မHမဟuတ# Sub အသuB$CပuAiuင#ပ3တယ#
Type သ+ Cဖစ#ရပ3မယ#
Method Place Super Class ထ-က Method န-9 Sub Class တစ#ခuထ-မH+ Qiတ-6 Method eတ&
Class ထ-က Method တiu အFက+$မH+ အFက+$မH+လ-Cဖစ#eပ2Aiuင#သလiu Super
Cဖစ#eပ2ပ3တယ# Class န-9 Sub Class ထ-မH+Qiတ-6 Class
eတ&Fက+$မH+လ- Cဖစ#eပ2Aiuင#ပ3တယ#
ပထမ တစ#eနရ+ကeတ+6 Class တစ#ခuက အCခ+$ Class တစ#ခuကiu Extends လuပ#တ-6အခ3 ဒ3မHမဟuတ# Interface
eတ&ကiu Implement လuပ#တ-6 အခ3မH+လ- Object တစ#ခuကiu ပuBစBအမGiu$မGiu$န-9 အသuB$CပuAiuင#တ-6 အတ&က# Polymorphism
ကiu Cဖစ#eပ2eစပ3တယ#။ Super Class န-9 Sub Class ရ-I အFက+$မH+၊ Kပ?$eတ+6 Interface န-9 Implement လuပ#ထ+$
တ-6 Class eတ&အFက+$မH+ IS A Relation ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
Inheritance eFက+င#6 Code eတ&ကiu Reuse လuပ#Aiuင#သလiu အuပ#စuတOတ-6 Object eတ& အCဖစ#eရ$Aiuင#တယ#လiu eCပ+ခ-6
ပ3တယ#။ တကယ#eတ+6 အuပ#စuတOတ-6 Object eတ&ကiu eရ$သ+$Cခင#$ဆiuတ+က Polymorphic Cဖစ#တ-6 ကuဒ#eတ&ကiu
eရ$သ+$Cခင#$ပ3ပ-။ Polymophic Cဖစ#တ-6 ကuဒ#eတ&ကiu ဘယ#လiuသuB$မလ-။ သuB$တ-6 အတ&က# ဘယ#လiuအကGiu$Qiလ- ဆiuတ+
ကiu eလ6လ+Fကည#6Fကရeအ+င#။ Polymorphic Code eတ&ကiu အeCခခBအ+$Cဖင#6 ၃ eနရ+မH+ အသuB$CပuAiuင#ပ3တယ#။
အထက#ပ3အတiuင#$ Helicopter ကiu ပGBခiuင#$ဖiu Method တစ#ခu Airplane ကiu ပGBခiuင#$ဖiu Method တစ#ခu eရ$ရပ3မယ#။
ဒ3ဆiuရင# Sky ရ-I fly method ကiu Polymorphic ကiuလက#ခBတ-6 Method Cဖစ#eအ+င# eCပ+င#$Fကည#6ပ3မယ#။
Fly Method ကiuပiuင#တ-6 AeroVehicle ကiu တည#eဆ+က#Kပ?$ Airplane န-9 Helicopter တiuကiu Extends လuပ#ခiuင#$ပ3
တယ#။ အ-6ဒ?အတ&က# Airplane န-9 Helicopter eတ&ဟ+ AeroVehicle eတ& Cဖစ#သ&+$Fကပ3တယ#။ Kပ?$တ-6eန+က#မH+
Sky Class ရ-I fly method ကiuလ- AeroVehicle ကiu Argument အCဖစ#ယOခiuင#$လiuက#ပ3တယ#။ အ-6ဒ?အတ&က# fly
method တစ#ခuထ-န-9 Airplane eက+ Helicopter ကiuပ3 အသuB$Cပuလiuရလ+Aiuင#ပ3တယ#။
ဒ36eFက+င#6 Drone ကiu ထပ#Kပ?$ ထည#6ခGင#လ+တယ#ဆiuရင#လ- AeroVehicle ကiu Extends လuပ#Kပ?$ Drone Class ကiu
eရ$သ+$လiuက#UuBပ3ပ-။ Drone ဟ+လ- AeroVehicle Cဖစ#တ-6အတ&က# Sky ရ-I fly Method ကiuဆက#Kပ?$ အသuB$CပuUuBပ3
ပ-။ Sky ကiu Cပင#စရ+မလiuအပ#ပ3ဘO။ အ-6ဒ?အတ&က# Sky ကiu အသuB$Cပuတ-6 Class eတ&မH+လ- အကGiu$သက#eရ+က#မ[eတ&
QiမH+ မဟuတ#ပ3ဘO$။
ဒ,0e>က"င%0 POLYMORPHIC CODE eတ3ကiu METHOD ARGUMENT eတ3 အeနန/A အသu<9=ပuKiuင%DပE9၊ APPLICATION
အတ3က% FEATURE အသစ%eတ3 ထည%0ခ7င%လ"DပEဆiuရင%လ/ အလ3ယ%တကP eဆ"င%ရ3က%Kiuင%မ:" =ဖစ%ပ,တယ%။ အလ3ယ%e=ပ"ရမယ%ဆiu
ရင% POLYMORPHIC CODE eတ3ကiu အသu<9=ပu=ခင%9အ"9=ဖင%0 APPLICATION eတ3ကiu ENHANCE လuပ%ရတ"လ3ယ%ကPeစပ,
တယ%။
GameController ထ-မH+ play() ဆiuတ-6 Method ပ3ဝင#Kပ?$ အ-6ဒ?အထ-မH+ AirplaneFactory ထ-ကeန Airplane ကiu
Create လuပ#Kပ?$ Sky ထ-မH+ ပGBခiuင#$မယ#၊ Kပ?$eတ+6 HelicopterFactory ထ-ကeန Helicopter ကiu Create လuပ#Kပ?$
Sky ထ-မH+ ပGBခiuင#$ပ3မယ#။
ဒ?eနရ+မGiu$မH+လ- Item အသစ#ကiu Cဖည#6စ&က#လiuပ3က Item တစ#ခu ItemFactory တစ#ခuန-9 Controller ကiu Cပင#ဖiuလiueန
မH+ပ3ပ-။ Class eတ&ရ-I Design ကiu အထက#ပ3အတiuင#$ အတiuင#$Cပင#Fကည#6ပ3မယ#။
Kပ?$eတ+6မH AirplaneFactory န-9 HelicopterFactory Class AHစ#ခuကiu ItemFactory ကiu Inheritance လuပ#ခiuင#$ပ3
တယ#။ အ-6ဒ?အတ&က# create() Method ကiu Override လuပ#ဖiuလiuအပ#လ+ပ3တယ#။ အသ?$သ?$ Override လuပ#Kပ?$
Airplane န-9 Helicopter ကiu Return Cပန#eပ$ပ3တယ#။ Airplane eက+ Helicopter ပ3 AeroVehicle ကiu Extends
လuပ#ထ+$တ-6အတ&က# AeroVehicle အCဖစ# Return Cပန#လiuရပ3တယ#။
ဤနည#$အ+$Cဖင#6 ItemFactory ရ-I create Method မH+ Polymorphic Type Cဖစ#တ-6 AeroVehicle ကiu Return
Cပန#Cခင#$အ+$Cဖင#6 AeroVehicle ရ-I Sub Type eတ&မHန#သမZကiu Return Cပန#လiuရပ3တယ#။ Drone ကiuပ3 eပ$သuB$ခGင#
တယ#ဆiuရင# Drone ကiu AeroVehicle ကiu Extends လuပ#၊ Kပ?$eတ+6 DroneFactory ကiu ItemFactory ကiu Extend
လuပ#Kပ?$ create Method ကiu Drone Object ကiu Return Cပန#eပ$လiuက#လiuရပ3တယ#။
Kပ?$eတ+6 GameController ဘက#မH+ ယခင# Factory တစ#ခuခGင#$စ?ကiu Instance Member အCဖစ#ယOeနတ-6 eနရ+
ကiu ItemFactory ရ-I Collection ကiu Dependency အCဖစ#ယOလiuက#UuBပ3ပ-။ ဒ3ဆiuရင# ItemFactory ကiu Extendss
လuပ#ထ+$တ-6 Factory မHန#သမZကiu Collection ထ-မH+ သiမ#$ထ+$လiuရပ3တယ#။ Game Level အလiuက# ItemFactory
eတ&ကiu ထပ#ထပ#Kပ?$ eပ3င#$ထည#6သ&+$မယ#ဆiuရင# Game Item အမGiu$မGiu$ကiu ထပ#တiu$Kပ?$ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
ဒ?eနရ+မH+ အသuB$Cပuသ&+$တ-6 ItemFactory ဆiuတ+ကလ- Polymorphic Type Cဖစ#ပ3တယ#။
Java 5 Features
Java ဟ+ ၁၉၉၆ ခuAHစ#ကစKပ?$ Release လuပ#ခ-6Kပ?$ အPကiမ#Pကiမ# Version Update လuပ#လ+ခ-6ပ3တယ#။ ဒ?လiu
Version eတ&ကiu eCပ+င#$လ+တ-6အခ3မH+ အeCခခBအ+$Cဖင#6 Bug Fix eတ&၊ Performance Improvement eတ&၊ Api
အသစ#eတ&န-9 Language ပiuင#$ဆiuင#ရ+ eCပ+င#$လ-မ[eတ&ကiu ထည#6သ&င#$လ+ခ-6Fကပ3တယ#။
Java 5 ရ-I Annotations eFက+င#6 Java Framework eတ&မH+ XML eတ&ကiu eရ$သ+$စရ+မလiueတ+6ပ- Annotation
ကiu အသuB$CပuKပ?$ အလ&ယ#တကOeရ$သ+$လ+Aiuင#ခ-6ပ3တယ#။ Generics eFက+င#6 Java မH+ Type ကiuလ- Abstraction
Cဖစ#eအ+င# eရ$သ+$လ+Aiuင#ခ-6ပ3တယ#။ ဒ36eFက+င#6 Collections Framework မH+ Type Safe Cဖစ#eအ+င# eရ$သ+$
လ+Aiuင#ခ-6ပ3တယ#။
Annotation
Java SE 5 အeရ+က#မH+ အသစ#Cဖည#6စ&က#ခ-6eသ+ Interface အမGiu$အစ+$တစ#ခu Cဖစ#ပ3တယ#။ Source Code eတ&
ထ-မH+ Meta Data eတ&ကiu eဖ2Cပလiuတ-6 အခ3မH+ အသuB$CပuAiuင#ပ3တယ#။ ဒ?eနရ+မH+ Meta Data ဆiuတ+ဘ+လ- ဆiuတ+
ကiu အရင#ဆuB$Qင#$Cပပ3မယ#။
Application ထ-ကeန အသuB$CပuAiuင#တ-6 အခGက#အလက#eတ&ကiu Data လiueခ2ဆiuKပ?$ အ-6ဒ? Data eတ&ဟ+ ဘ+Cဖစ#
တယ#၊ ဘယ#လiu ထO$Cခ+$ခGက#Qiတယ#ဆiuတ+eတ&ကiu eဖ2CပAiuင#တ+က Meta Data Cဖစ#ပ3တယ#။
ဆiuFကပ3စiu က\န#eတ+#တiu eရ$တ-6 Project ထ-မH+ Class eတ&ကiu eရ$တ-6အခ3မH+ တစ#ခGiueတ&ကiu Data Base ထ-က
Table eတ&ကiu ကiuယ#စ+$Cပuတ-6 Class အeနန-9 eရ$ခGင# eရ$ပ3လiမ#6မယ#။ အ-6ဒ?အခ3မGiu$ဆiuရင# အ-6ဒ? Class eတ&ကiu
Database ထ-က Table eတ&ကiu ကiuယ#စ+$Cပuတ-6 Class Cဖစ#eFက+င#$၊ Table Name က ဘယ#လiu Cဖစ#eFက+င#$၊
Member Properties eတ&ကiuလ- ဘယ# Colum ကiu ကiuယ#စ+$CပueFက+င#$၊ Kပ?$eတ+6 Primary Key Cဖစ#တ-6 Column
Cဖစ#eFက+င#$တiuကiu eဖ2Cပလiuတ-6အခ3မH+ Annotation ကiuအသuB$CပuKပ?$ eဖ2CပAiuင#ပ3တယ#။
Annotation မQiခင#တuန#$ကဆiuရင# Meta Data eတ&ကiu eရ$သ+$ အသuB$Cပuလiuတ-6 အခ3မH+ XML Mapping File eတ&
ကiu အသuB$Cပuခ-6Fကရပ3တယ#။ ဒ36eFက+င#6 Application တစ#ခuကiu eရ$ခGင#Kပ?ဆiuရင# Class eတ&ကiuလ- eရ$သ+$ဖiuလiuအပ#
သလiu XML Configuration File eတ&လ- ပ&စ+Pက-eနeအ+င#eရ$ဖiu လiuအပ#ခ-6ပ3တယ#။ Annotation ကiu အသuB$CပuKပ?$
Meta Data eတ&ကiu Source Code eတ&ထ-မH+ eရ$သ+$လiuရAiuင#လ+တ-6 အတ&က# XML eတ&ကiu eရ$သ+$စရ+မ
လiuအပ#eတ+6ပ- Java Code eတ&န-9တင# Data eတ&ကiueက+ Meta Data eတ&ကiuပ3 eရ$သ+$လ+Aiuင#ခ-6ပ3တယ#။ ဒ36
eFက+င#6 API eတ& Framework eတ&ကiu အလ&ယ#တကO အသuB$Cပuလ+Aiuင#ခ-6ပ3တယ#။
က\န#eတ+#တiu Annotation ကiu eလ6လ+တ-6 eနရ+မH+ အပiuင#$ ၂ ပiuင#$န-9 eလ6လ+Aiuင#မH+ Cဖစ#ပ3တယ#။ ပထမပiuင#$
ကeတ+6 eရ$သ+$ထ+$တ-6 Annotation eတ&ကiu ဘယ#လiu အသuB$Cပuမလ- ဆiuတ-6 အပiuင#$Cဖစ#Kပ?$၊ ဒuတiယ အပiuင#$ကeတ+6
Annotation eတ&ကiu ဘယ#လiu eရ$သ+$Kပ?$ ဘယ#လiu Service eတ&ကiu eရ$သ+$မလ- ဆiuတ-6 အပiuင#$ပ- Cဖစ#ပ3တယ#
အမHန#အတiuင#$ eCပ+ရမယ#ဆiuရင# Java ကiu စတင#eလ6လ+eနသOတစ#eယ+က# အတ&က#ဆiuရင#eတ+6 ပထမအပiuင#$Cဖစ#
တ-6 Annotation တစ#ခuကiu ဘယ#လiu အသuB$Cပuမလ-ဆiuတ+ကiu eက+င#$eက+င#$န+$လည#တယ#ဆiuရင# လuBeလ+က#ပ3
တယ#။ ဒuတiယအပiuင#$ကeတ+6 Framework eရ$သ+$သOeတ&Kပ?$eတ+6 API eရ$သ+$သOeတ&န-9 ဆiuင#တ-6 အပiuင#$ပ3။
Using Annotations
က\န#eတ+#တiu ဒ?eနရ+မH+eတ+6 အသင#6 eရ$သ+$ထ+$တ-6 Annotation eတ&ကiu ဘယ#လiu အသuB$Cပuသ&+$မလ- ဆiuတ+ကiu
eလ6လ+သ&+$Fကပ3မယ#။ ဒ3ဆiuရင# အသင#6 အသuB$CပuAiuင#တ-6 Annotation eတ&ကiu ဘယ#သOeတ&က eရ$eပ$ထ+$မH+လ-
ဆiuတ+ကeန eလ6လ+သ&+$Fကရeအ+င#။
Java SE 5 အeရ+က#မH+ Annotation eတ&ကiu eရ$သ+$ အသuB$Cပuလ+Aiuင#ခ-6ပ3တယ#။ Java SE ရ-I API eတ&မH+လ-
Predefine Annotation eတ&လ- ပ3ဝင#လ+သလiu JPA တiuလiu Hibernated တiuလiu Spring Framework တiuလiu Third
Party Framework eတ&မH+လ- Annotation eတ&န-9 Annotation Processor တiuကiu အသuB$CပuKပ?$ သOတiuရ-I
Framework eတ&ကiu အသuB$Cပuရတ+လ&ယ#ကOeအ+င# Cပင#ဆင#လ+ခ-6ပ3တယ#။
ဒ?eနရ+မH+eတ+6 Java SE ရ-I API ထ-မH+ Default အeနန-9 အသuB$CပuAiuင#တ-6 Annotation eတ&ကiu ဘယ#လiu အသuB$Cပu
eရ$သ+$ရမယ#ဆiuတ+ကiu eလ6လ+သ&+$Fကရeအ+င#။ လက#Qiအeနအထ+$အရ Default အeနန-9 အသuB$CပuAiuင#တ-6
Annotation eတ&ကeတ+6 eအ+က#ပ3အတiuင#$ Cဖစ#Fကပ3တယ#။
@Deprecated
အရင#တuန#$ကeတ+6 အသuB$Cပueနခ-6Kပ?$ e^eလG+က# အသuB$မCပueစလiueတ+6တ-6 Element eတ&မH+ @Deprecated
Annotation ကiu eရ$သ+$အသuB$Cပuသင#6ပ3တယ#။ @Deprecated Annotation ကiu Type, Field, Method,
Package, Constructor, Parameter န-9 Local Variable eတ&မH+ eရ$သ+$ အသuB$CပuAiuင#ပ3တယ#။ တကယ#လiu
Compile လuပ#စT#မH+ @Deprecated Annotation ကiu eရ$သ+$ထ+$တ-6 Element ကiu အသuB$Cပuထ+$မယ#ဆiuပ3က
Compile Time မH+ Warning ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
@Deprecated
public void greet() {
System.out.println("Hello");
}
}
အထက#ပ3အတiuင#$ Student Class ရ-I greet() method မH+ @Deprecated Annotation ကiu eရ$သ+$ထ+$ပ3
တယ#။
@Override
အမ[မ-6 အမHတ#မ-6 အသuB$အမG+$ဆuB$ Annotation ဟ+ ဘ+လ-လiu eမ$ရင# @Override Annotation Cဖစ#ပ3မယ#။ ယeန9
eခတ# IDE ကiu အသuB$CပuKပ?$ ကuဒ#eရ$eနFကတ-6အခ3မH+ ဒ? Annotation ဟ+ Class eတ&ကiu Create လuပ#တ-6 အခ3မGiu$
မH+ ပ3လ+တတ#ပ3တယ#။
ဆiuFကပ3စiu Eclipse IDE ကiu အသuB$CပuKပ?$ Servlet eတ&eရ$တ-6အခ3၊ Servlet Listener eတ& Servlet Filter eတ&eရ$
တ-6အခ3မGiu$မH+ Code Template ကeန Generate လuပ#လ+တ-6 ကuဒ#eတ&ထ-မH+ @Override ဟ+ ပ3လ+တတ#ပ3
တယ#။ Kပ?$eတ+6 Interface ကiu Implement လuပ#တ-6အခ3မGiuB$ ဒ3မH မဟuတ# Abstract Class ကiu Extends လuပ#တ-6
အခ3မGiu$မH+ ဒ?အတiuင#$ eရ$သ+$ထ+$ပ3က IDE မH+ Error တက#eနပ3မယ#။ အ-6ဒ?eနရ+မH+ Hint အတiuင#$ Implement
လuပ#ရeသ$တ-6 Abstract Method eတ&ကiu Create လuပ#မယ#ဆiuတ+ကiu eရ&$Kပ?$ Code eတ&ကiu Generate လuပ#တ-6
အခ3မGiu$eတ&မH+ @Override Annotation eတ&ဟ+ ပ3လ+တတ#ပ3တယ#။
က- ဒ?eနရ+မH+ @Override Annotation ကiu eရ$ထ+$ရင# Super Class ထ-မH+ပ3တ-6 Method ကiu Override လuပ#
ထ+$တယ#ဆiuတ+ကiu eCပ+Cပeပ$Aiuင#တယ#လiu အလ&ယ#eCပ+လiuရAiuင#ပ3တယ#။ မဟuတ#လiuလ+$ဆiueတ+6 ဟuတ#ပ3တယ#။
ဒ3eပမ-6 ဒ?လiu eတ&$Fကည#6ရeအ+င# @Override Annotation ကiu မeရ$ထ+$ရင# Override မCဖစ#eတ+6လiuလ+$။ စမ#$
Fကည#6ရင# @Override Annotation ကiu မeရ$ထ+$ရင#လ- Override Cဖစ#eနတယ#ဆiuတ+ကiu eတ&Jရပ3မယ#။
ကiuင#$ ဒ36Cဖင#6 ဘ+လiu @Override Annotation ကiu eရ$ဖiuလiuအပ#ရတ+လ-။ မeရ$တ+န-9 eရ$တ+န-9 ဘ+မG+$က&+သ&+$လiu
လ- ဆiuတ+ကiu ဒ?eနရ+မH+ eလ6လ+သ&+$Fကရeအ+င#။
အရင#ဆuB$ @Override မပ3ပ- Override Cဖစ#မCဖစ# စမ#$Fကည#6Fကရeအ+င#။ Override န-9 ပတ#သက#Kပ?$ OOP ရ-I
Inheritance အeFက+င#$မH+ eဖ2CပKပ?$ Cဖစ#ပ3တယ#။ တကယ#လiu ဒ?eနရ+မH+ Override ဆiuတ+ဘ+လ-မသieသ$ရင# အ-6
ဒ?အခန#$ကiu အရင#ဖတ#eစလiuပ3တယ#။
class Super {
public void hello() {
System.out.println("Super Hello");
}
}
အထက#ပ3အတiuင#$ Super Class ထ-မH+ hello() method ကiu eရ$သ+$ထ+$ပ3တယ#။ Kပ?$eတ+6 အ-6ဒ? Method မH+
Super Hello ဆiuတ+ကiu System Console မH+ eဖ2Cပထ+$ခiuင#$ပ3တယ#။ Kပ?$eတ+6 Sub Class ကeန Super
Class ကiu Entends လuပ#ထ+$တယ#။ အ-6ဒ?အတ&က# Super Class ထ-မH+ eရ$ထ+$တ-6 hello() method ဟ+
Inheritance eFက+င#6 Sub Class ကeန အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
ဒ?လiuမGiu$ Super Class ကeန Inheritance လuပ#လiuရလ+တ-6 Method eတ&ကiu Sub Class ထ-ကeန Signature တO
တ-6 Method တစ#ခuကiu eရ$သ+$Cခင#$ကiu Override လuပ#တယ#လiu eခ2ပ3တယ#။ တကယ#လiu Sub Class ကeန
Object eဆ+က#Kပ?$ hello() method ကiu အလuပ#လuပ#ခiuင#$မယ#ဆiuရင# Inheritance လuပ#လ+တ-6 Behavior ကiu မသuB$
ပ- Sub Class ထ-မH+ Qiတ-6 Method ကiu အသuB$Cပuသ&+$Cခင#$ကiu Override လuပ#တယ#လiu eခ2ပ3တယ#။
@Override
public void hello() {
System.out.println("Sub Hello");
}
}
အထက#ပ3အတiuင#$ Sub Object ကiu eဆ+က#Kပ?$ hello() method ကiu Invoke လuပ#Fကည#6ပ3တယ#။ တကယ#တမ#$
အeCဖမH+eတ+6 Sub Hello Cဖစ#ပ3တယ#။ ဒ3ဟ+ ဘ+ကiueCပ+တ+လ-ဆiuရင# @Override Annotation ကiu မeရ$ထ+$
လ- Override Cဖစ#သ&+$တယ#ဆiuတ+ကiu eCပ+Cပတ+ Cဖစ#ပ3တယ#။
ဒ?eနရ+မH+ Sub Class ရ-I hello() Method e^မH+ @Override Annotation ကiu eအ+က#ပ3အတiuင#$ eရ$သ+$Fကည#6
Kပ?$ OverrideDemo ကiu Run Fကည#6ပ3မယ#။
Annotation မeရ$ခင#ကအတiuင#$ပ- အeCဖထ&က#တ+ကiu eတ&Jရပ3တယ#။ ဒ3ဟ+ ဘ+ကiueCပ+တ+လ- ဆiuရင#
@Override ကiu eရ$ထ+$ထ+$မထ+$ထ+$ Override ဟ+ Cဖစ#eပ2တယ#ဆiuတ+ပ3ပ-။ က-ဒ3Cဖင#6 @Override ကiu ဘ+
eFက+င#6 eရ$Fကတ+လ-။
အထက#ပ3အတiuင#$ Super Class ထ-က hello() method ရ-I Access Modifier ကiu private လiueCပ+င#$လiuက#ပ3
တယ#။ ဒ?eနရ+မH+ @Override Annotation ကiu Sub Class ထ-မH+ eရ$သ+$ထ+$ရင# Compile Time မH+ Error
@SupressWarnings
Compile Time မH+ Warning အeနန-9 ထ&က#eနတ-6 အရ+eတ&ကiu Warning မထuတ#eစလiuတ-6 အခ3မGiu$မH+ ဒ?
Annotation ကiu eရ$သ+$ အသuB$CပuAiuင#ပ3တယ#။ ဆiuFကပ3စiu Serializable Interface ကiu Implement လuပ#ထ+$Kပ?$
Serial Version UID ကiu မeရ$ထ+$ခ-6တ-6 အခ3မGiu$eတ& အသuB$မCပuထ+$တ-6 Private Variable eတ&န-9 Private
Method eတ& အစQiတ-6 eနရ+eတ&မH+ Compile Time Warning eတ&Cပeနeလ6Qiပ3တယ#။
e^မH+ eဖ2Cပခ-6တ-6 Super Class ထ-မH+လ- hello() method ကiu private လuပ#လiuက#တ-6အခ3မH+ အ-6ဒ? hello() method
ကiu အသuB$Cပueနတ-6 eနရ+မQiတ-6 အတ&က# Compile Time မH+ Warning ထ&က#eနတ+ကiu eတ&JရမH+ Cဖစ#ပ3တယ#။ အ-6
ဒ?လiu eနရ+မGiu$မH+ @SuppressWarnings Annotation ကiu အသuB$CပuKပ?$ Warning ကiu မထ&က#eအ+င# eရ$သ+$Aiuင#
ပ3တယ#။
@SuppressWarnings("serial")
public class Student implements Serializable {
အထက#ပ3 Student Class ဟ+ Serializable Interface ကiu Implement လuပ#ထ+$တ-6 အတ&က# ပuBမHန#ဆiuရင#
serialVersionUID ကiu သတ#မHတ#eရ$သ+$ထ+$ဖiu လiuအပ#ပ3တယ#။ serialVersionUID အeFက+င#$န-9 ပတ#သက#Kပ?$
Java IO အခန#$မH+ အeသ$စiတ# eဖ2Cပပ3မယ#။ ဒ?eနရ+မH+မeတ+6 Serializable Interface ကiu Implement လuပ#
ထ+$တ-6 Class eတ&မH+ serialVersionUID ကi မeရ$ထ+$ရင# Compile Time မH+ Warning ထ&က#eနမယ#လiuပ-
မHတ#ထ+$eပ$ပ3။ ဒ?လiu Warning eတ&မH+လ- @SuppressWarnings(“serial”) လiueရ$သ+$ထ+$Kပ?$ Warning မ
ထ&က#eအ+င# လuပ#Aiuင#ပ3တယ#။
Writing Annotation
ဒ?eနရ+ကeနစKပ?$ Annotation တစ#ခuကiu ဘယ#လiu eရ$သ+$Kပ?$ ဘယ#လiu အသuB$CပuAiuင#တယ#ဆiuတ+ကiu eလ6လ+သ&+$
Fကရeအ+င#။ Annotation တစ#ခuကiu eရ$သ+$မယ#ဆiuရင# @interface ဆiuတ-6 Keyword ကiu အသuB$CပuKပ?$ eရ$သ+$ရ
မH+ Cဖစ#ပ3တယ#။ Annotation ဆiuတ+က တကယ#eတ+6 Interface အမGiu$အစ+$တစ#ခuCဖစ#ပ3တယ#။ အန-ဆuB$eတ+6
Annotation တစ#ခuCဖစ#eအ+င# @interface ဆiuတ-6 Keyword ရယ#၊ Table ဆiuတ-6 Identifier ရယ#၊ {} လiueရ$သ+$
ထ+$တ-6 Body သ+ လiuအပ#ပ3တယ#။
Meta Annotations
အထက#ပ3 အတiuင#$eရ$သ+$ထ+$UuBန-9 Annotation eတ+6Cဖစ#သ&+$ပ3တယ#။ ဒ3eပမ-6 တကယ#တမ#$eတ+6 အသuB$Cပuလiu မ
ရeသ$ပ3ဘO$။ တကယ#တမ#$ အသuB$CပuAiuင#eအ+င# eရ$သ+$မယ#ဆiuရင# eရ$သ+$ထ+$တ-6 Annotation ကiu ဘယ#လiu
eနရ+eတ&မH+ eရ$သ+$လiuရAiuင#မလ- Kပ?$eတ+6 ဘယ#eနရ+မGiu$eတ&မH+ ဒ? Annotation ကiu အသuB$CပuလiuရAiuင#မလ- ဆiuတ+
eတ&ကiu သတ#မHတ#eပ$ဖiuလiuအပ#ပ3တယ#။
@Retention
eရ$သ+$ထ+$တ-6 Annotation ဟ+ ဘယ#eနရ+eတ&မH+ အသuB$CပuမH+လ- ဆiuတ+ကiu သတ#မHတ#eပ$Aiuင#တ-6 Meta
Annotation တစ#ခuCဖစ#ပ3တယ#။ @Retention Annotation မပ3ပ- Annotation တစ#ခuကiu eရ$သ+$လiu မရAiuင#ပ3ဘO$။
value() ဆiuတ-6 Method တစ#ခuပ3ဝင#တ-6အတ&က# အ-6ဒ? Annotation ကiu eရ$သ+$တ-6အခ3မH+ RetentionPolicy
Enumeration တစ#ခuကiu value အeနန-9 eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။
package java.lang.annotation;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Retention {
RetentionPolicy value();
}
RetentionPolicy Description
SOURCE Compiler ကeန Compile Time မH+ အသuB$Cပueစလiuတ-6 Annotation eတ&ကiu eရ$သ+$
လiuတ-6အခ3မH+ သတ#မHတ# အသuB$CပuAiuင#ပ3တယ#
CLASS Compiler ကeန Compile လuပ#တ-6အခ3မH+ အသuB$CပuKပ?$ ရလ+တ-6 Class ထ-မH+ ထည#6
သ&င#$eပ$လiuက#Kပ?$ JVM ကeန Runtime မH+ အသuB$မCပuလiuတ-6 Annotation eတ&ကiu
eရ$သ+$လiuတ-6အခ3မH+ CLASS ကiu အသuB$CပuAiuင#ပ3တယ#
@Target
Target Annotation ဟ+လ- Annotation တစ#ခuကiu eရ$သ+$တ-6eနရ+မH+ မCဖစ#မeနeရ$သ+$eပ$ရမည#6 Meta
Annotation တစ#ခuCဖစ#Kပ?$ လက#Qieရ$သ+$ထ+$တ-6 Annotation ကiu ဘယ#eနရ+မH+ eရ$သ+$Aiuင#သလ- ဆiuတ+ကiu
သတ#မHတ#eပ$Aiuင#ပ3တယ#။
package java.lang.annotation;
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
public @interface Target {
ElementType[] value();
}
Target Annotation ထ-မH+ ElementType Enum Array ကiu Return Cပန#တ-6 value() ဆiuတ-6 Method တစ#ခuကiu
eရ$သ+$ထ+$ပ3တယ#။ ဒ36eFက+င#6 Target ကiu eရ$သ+$တ-6eနရ+မH+ ElementType ကiu တစ#ခuထက#မက သတ#မHတ#
eရ$သ+$ဖiuလiuအပ#ပ3တယ#။သတ#မHတ# အသuB$CပuAiuင#တ-6 ElementType eတ&ကeတ+6 eအ+က#ပ3အတiuင#$Cဖစ#ပ3တယ#။
TYPE Class, Interface န-9 Enum တiuရ-I Type Declaration eတ&မH+ အသuB$CပuAiuင#ပ3တယ#
@Docmentated
@Documentated Annotation eတ&ကeတ+6 eရ$သ+$ထ+$တ-6 Annotation ကiu Java Doc အeနန-9 eဖ2Cပဖiu
လiuအပ#eFက+င#$ သတ#မHတ#eပ$Aiuင#တ-6 Annotation တစ#ခuCဖစ#ပ3တယ#။ Javadoc Tools ကiu အသuB$CပuKပ?$ Java Doc
eတ&ကiu Generate လuပ#တ-6 eနရ+မH+ အသuB$CပuမH+ Cဖစ#ပ3တယ#။ Default အတiuင#$ဆiuပ3က Annotation eတ&ကiu Java
Doc ထuတ#တ-6eနရ+မH+ အသuB$မCပuပ3ဘO$။
@Inherited
@Inherited Annotation ကiu Annotation တစ#ခuမH+ eရ$သ+$ထ+$Aiuင#ပ3တယ#။ အ-6ဒ?လiueရ$သ+$ထ+$တ-6
Annotation ကiu Super Class ထ-မH+ eရ$သ+$ထ+$မယ#ဆiuရင# အ-6ဒ? Super Class eတ&မH+ အ-6ဒ? Annotation ကiu မ
eရ$သ+$ထ+$ဘO$ဆiuရင#eတ+င#မH အ-6ဒ? Interface ကiu အ-6ဒ? Sub Class eတ&မH+ ရQieနမH+ Cဖစ#ပ3တယ#။
@Repeatable
Java SE 8 အeရ+က#မH Cဖည#6စ&က#လ+ခ-6တ-6 Meta Annotation အမGiu$အစ+$တစ#ခuCဖစ#ပ3တယ#။ Annotation တစ#ခu
ကiu eရ$သ+$တ-6အခ3မH+ @Repeatable Annotation ကiu eရသ+$ထ+$ခ-6မယ#ဆiuရင# အ-6ဒ? Annotation ကiu တစ#eနရ+
ထ-မH+ အPကiမ#Pကiမ# eရ$သ+$ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
String Type Variable eတ&မH+ eရ$သ+$Aiuင#တ-6 Annotation တစ#ခuကiu eရ$သ+$Fကည#6ပ3မယ#။ တကယ#လiu အ-6ဒ?
Annotation ကiu တတ#ဆင#eရ$သ+$ထ+$တ-6 Variable eတ&ရ-I တန#ဖiu$ဟ+ Null Cဖစ#eနရင# Blank String တန#ဖiu$
တစ#ခuကiu အစ+$ထiu$eပ$Aiuင#တ-6 Annotation တစ#ခuကiu eရ$သ+$သ&+$ပ3မယ#။
@Retention(RUNTIME)
@Target(FIELD)
public @interface NullWithBlank {
@NullWithBlank
private String name;
အထက#ပ3 Student Class ကeတ+6 အe^မH+ eရ$သ+$ထ+$ခ-6တ-6 Annotation ကiu အသuB$Cပuမည#6 Class Cဖစ#ပ3
တယ#။ ဒ? Class ရ-I name Variable eနရ+မH+ @NullWithBlank Annotation ကiu တပ#ဆင#eရ$သ+$ထ+$ပ3တယ#။
@NullWithBlank Annotation ရ-I Target မH+ FIELD လiu eရ$သ+$ထ+$ခ-6တ-6 အတ&က#eFက+င#6သ+ Instance
Variable မH+ eရ$သ+$Aiuင#တ+ Cဖစ#ပ3တယ#။ တစ#Cခ+$eနရ+eတ&မH+eတ+6 eရ$သ+$လiu ရAiuင#မH+ မဟuတ#ပ3ဘO$။
အထက#ပ3 Program ကiu Run Fကည#6မယ#ဆiuရင# Console eပ2မH+ null ဆiuတ+ကiu eတ&Jရပ3မယ#။ ဘ+လiuလ- ဆiueတ+6
showStudent method ထ-ကiu Parameter အeနန-9 new Student() ဆiuKပ?$ ထည#6eပ$လiuက#တ-6 အတ&က# Student
Object ရ-I name ဟ+ တန#ဖiu$ မသတ#မHတ#ထ+$Aiuင#ခ-6ပ3ဘO$။ ဒ36eFက+င#6 null ဆiuKပ?$ Cပeနတ+ကiu eတ&JရမH+ Cဖစ#ပ3
တယ#။
for(Field f : student.getClass().getDeclaredFields()) {
NullWithBlank anno =
f.getDeclaredAnnotation(NullWithBlank.class);
if(null != anno) {
f.setAccessible(true);
f.set(student, "");
}
}
System.out.println(student.getName());
}
အထက#ပ3အတiuင#$ showStudent method ထ-မH+ student object ရ-I class ကeန getDeclaredFields()
method ကiu အသuB$CပuKပ?$ Student Class ထ-မH+ eရ$သ+$ထ+$တ-6 Field eတ&အ+$လuB$ကiu for statement န-9 Loop
ပတ#ပ3တယ#။
Kပ?$eတ+6မH Field ကeန အ-6ဒ? Field မH+ NullWithBlank Annotation ကiu eရ$သ+$ထ+$သလ+$ဆiuတ+ကiu
f.getDeclaredAnnotation(NullWithBlank.class) method န-9Q+ eဖ&ပ3တယ#။ တကယ#လiu @NullWithBlank
Annotation ကiu eရ$သ+$ထ+$တယ#ဆiuရင# အ-6ဒ? Field ရ-I တန#ဖiu$ကiu “” န-9 set လuပ#eပ$ပ3တယ#။
ဒ36eFက+င#6 အထက#ပ3 Class ကiu Cပန#Kပ?$ Run Fကည#6မယ#ဆiuရင# null ထ&က#မလ+eတ+6တ+ကiu eတ&Jရပ3မယ#။ ဒ?လiuမGiu$
@NullWithBlank Annotation ကiu Runtime မH+ အသuB$CပuAiuင#တ+ကလ- Annotation ကiu eရ$သ+$တ-6အခ3မH+
@Retention(RUNTIME) လiu သတ#မHတ#eရ$သ+$ထ+$ခ-6တ-6 အတ&က# Cဖစ#ပ3တယ#။
Kပ?$eတ+6 လiuခGင#တ-6 Parameter အeရအတ&က# အလiuက# Abstract Method eတ&ကiu eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။
က\န#eတ+#တiu e^မH+eရ$သ+$ခ-6တ-6 @NullWithBlank Annotation ထ-မH+ Parameter တစ#ခuကiu လက#ခBeရ$သ+$
Fကည#6Fကရeအ+င#။
@Retention(RUNTIME)
@Target(FIELD)
public @interface NullWithBlank {
String name();
}
အထက#ပ3အတiuင#$ @NullWithBlank Annotation ရ-I Body အတ&င#$မH+ name() ဆiuတ-6 Abstract Method တစ#ခu
ကiu eရ$သ+$ထ+$Aiuင#ပ3တယ#။ ဤသiueရ$သ+$ထ+$Cခင#$အ+$Cဖင#6 @NullWithBlank Annotation ကiu eရ$သ+$
အသuB$Cပuတ-6eနရ+မH+ name ဆiuတ-6 တန#ဖiu$ကiu မeရ$သ+$လiu မရeတ+6ပ3ဘO$။
အထက#ပ3အတiuင#$ @NullWithBlank Annotation ကiu eရ$သ+$တ-6အခ3မH+ name ရ-I တန#ဖiu$ကiu သတ#မHတ# eရ$သ+$
eပ$ရမH+ Cဖစ#တယ#။ ဆက#လက#Kပ?$ eရ$သ+$ထ+$တ-6 Parameter ကiu Cပန#Kပ?$ အသuB$Cပuတ-6 အပiuင#$ကiu eရ$သ+$Fကည#6
Fကရeအ+င#။
အထက#ပ3 AnnotationDemo Class ကiu Run Fကည#6တ-6 အခ3မH+ Student Class ထ-မH+ eရ$သ+$ထ+$တ-6 No
Name ဆiuတ+ကiu eတ&JQiရမH+ Cဖစ#ပ3တယ#။
@Retention(RUNTIME)
@Target(FIELD)
public @interface NullWithBlank {
String name() default “Default Name”;
}
အထက#ပ3အတiuင#$ Default Value ကiu သတ#မHတ#ထ+$ပ3က တကယ#လiu name ရ-I တန#ဖiu$ကiu Annotation ကiu
အသuB$Cပuတ-6 အခ3မH+ သတ#မHတ#မeပ$ခ-6ရင# Default တန#ဖiu$ကiu အသuB$Cပuသ&+$မH+ Cဖစ#ပ3တယ#။ name ရ-I တန#ဖiu$ကiu
သတ#မHတ#ထ+$ခ-6ရင#eတ+6 သတ#မHတ#ထ+$တ-6 တန#ဖiu$ကiu အသuB$Cပuသ&+$မH+ပ3။
Enum
Before Enum
Enum eတ&မeပ2ခင#က Constant eတ&ကiueရ$သ+$လiuတ-6အခ3မH+ Interface ထ-မH+ Static Final Variable eတ&န-9
eရ$သ+$ခ-6Fကပ3တယ#။ ဆiuFကပ3စiu က\န#eတ+#တiu ရက#သတပတ#မH+ပ3တ-6 ရက#eတ&ကiu က\န#eတ+#တiu eရ$ခGင#တယ#ဆiu
ရင# ဒ?လiu eရ$သ+$ခ-6Fကရပ3တယ#။
အထက#ပ3အတiuင#$ Interface တစ#ခuကiu eရ$Kပ?$eတ+6 ပ3မည#6 Item eတ&ကiu Static Final Variable eတ&အeနန-9
တန#ဖiu$တစ#ခuခuကiu အeသသတ#မHတ#Kပ?$ eရ$သ+$ခ-6Fကရပ3တယ#။
monday = 11;
System.out.println(monday);
}
}
ဒ3eပမ-6 monday variable ဟ+ int type Cဖစ#တ-6အတ&က# ရက# ခuAHစ#ရက# အCပင# အCခ+$eသ+ int တန#ဖiu$eတ&ကiu
အစ+$ထiu$လiuရပ3တယ#။ ဒ36eFက+င#6 monday = 11 ဆiuKပ?$eရ$လiuရeနပ3တယ#။ ရက# ခuAHစ#ရက#ရ-I တန#ဖiu$အCပင# အCခ+$
eသ+ တန#ဖiu$eတ&ကiuလ- အစ+$ထiu$လiuရeနပ3တယ#။
ဆက#လက#Kပ?$ Enum ကiu ဘယ#လiueရ$ရတယ#၊ Enum ကiu အသuB$Cပuတ-6 အတ&က# အထက#ပ3 Cပဿန+eတ&ကiu
ဘယ#လiu eCဖQင#$Aiuင#ခ-6တယ# ဆiuတ+ကiu ဆက#Kပ?$eလ6လ+သ&+$Fကရeအ+င#။
After Enum
Java SE 5 အeရ+က#မH+ Enum ဆiuတ-6 Static Class အမGiu$အစ+$တစ#ခuကiu ထည#6သ&င#$ခ-6Fကပ3တယ#။ Enum န-9
eရ$သ+$ထ+$တ-6 Data Type eတ&ကiu Enum Type လiueခ2ဆiuFကKပ?$ Constant eတ&ကiu eရ$သ+$တ-6 eနရ+မH+
အသuB$Cပuခ-6Fကပ3တယ#။
Enum Type Class ကiu eရ$သ+$ဖiuဆiuရင# enum ဆiuတ-6 Keyword ကiu အသuB$CပuရKပ?$ Body ထ-မH+eတ+6 Enum
Type ထ-မH+ အသuB$CပuAiuင#တ-6 Element eတ&ကiu eရ$သ+$Aiuင#ပ3တယ#။
Learning Java 153 မင#$လ&င#
Java Developer Class
Enum Type ကiu eရ$သ+$တ-6 eနရ+မH+ အထက#ပ3အတiuင#$ Source File ရ-I Top Level မH+eရ$သ+$ သ?$Cခ+$
eရ$သ+$Aiuင#သလiu Class ရ-I Body အတ&င#$မH+လ- Nested Member အeနန-9 eရ$သ+$Aiuင#ပ3တယ#။ ဆက#လက#Kပ?$
Enum Type Data eတ&ကiu ဘယ#လiu အသuB$Cပuရမလ- ဆiuတ+ကiu eလ6လ+သ&+$Fကရeအ+င#။
Enum အeနန-9 Constant eတ&ကiu eရ$သ+$ထ+$မယ#ဆiuရင#အ-6ဒ? Constant ကiu Enum Type အeနန-9 eရ$သ+$Aiuင#
မH+ Cဖစ#ပ3တယ#။ အ-6ဒ3eFက+င#6 monday ဆiuတ-6 Variable ကiu DaysOfWeek လiuသတ#မHတ#လiuက#တ-6အတ&က#
monday eနရ+ကiu DaysOfWeek ထ-မH+ သတ#မHတ#ထ+$တ-6 တန#ဖiu$eတ&အCပင# အCခ+$eသ+ တန#ဖiu$eတ&ကiu
သတ#မHတ#လiu မရAiuင#eတ+6ပ3ဘO$။
Enum Type Variable eနရ+ကiu အ-6ဒ? Enum ထ-မH+ Pကiuတင#သတ#မHတ#ထ+$တ-6 Constant Element eတ&အCပင#
အCခ+$eသ+ တန#ဖiu$eတ&ကiu သတ#မHတ#လiu မရAiuင#eတ+6ပ3ဘO$။ Kပ?$eတ+6 System.out.println(monday) လiu eရ$
လiuက#ရင#လ- Enum ရ-I Name ကiu Cပeပ$Aiuင#မH+ Cဖစ#ပ3တယ#။
Enum Constant eတ&ဟ+လ- Static Object eတ& Cဖစ#Fကတ-6 အတ&က# Object ကeန Inheritance လuပ#လ+
တ-6 Behavior eတ&ကiu မPကiuက#လiuQiရင# Override လuပ#Kပ?$eရ$Aiuင#ပ3တယ#
တဖန# JVM Memory eပ2မH+ တစ#ခuထ-Qiတယ#ဆiuတ-6 ထO$Cခ+$ခGက#ကiu အသuB$CပuKပ?$ Enum eတ&ကiu Singleton
Object အeနန-9 အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
for(Field f : student.getClass().getDeclaredFields()) {
NullWithBlank anno =
f.getDeclaredAnnotation(NullWithBlank.class);
if(null != anno) {
f.setAccessible(true);
f.set(student, anno.name());
}
}
System.out.println(student.getName());
}
Default Behavior
Enum eတ&အ+$လuB$အတ&က# အလ&ယ#တကOအသuB$CပuAiuင#eအ+င# Method eတ&ကiu Cပင#ဆင#ထ+$ပ3တယ#။ Cပင#ဆင#
ထ+$တ-6 Method eတ&ထ-မH+ Static Method eတ&လ-ပ3သလiu Instance Method eတ&လ-ပ3ပ3တယ#။ Kပ?$eတ+6
Language Feature eတ&ထ-မH+ အလiuအeလG+က# အသuB$CပueနAiuင#တ+eတ&လ-Qiပ3တယ#။ ဒ?eနရ+မH+eတ+6 Enum
Cဖစ#တ-6အတ&က# ရeနAiuင#တ-6 Default Behavior eတ&ကiu eလ6လ+သ&+$Fကပ3မယ#။
values()
Enum Type တစ#ခuအတ&င#$မH+ Declare လuပ#ထ+$တ-6 Constant Object eတ&အ+$လuB$လiu ရယOလiuတ-6 အခ3မGiu$မH+
အသuB$CပuAiuင#ပ3တယ#။ eရသ+$ထ+$တ-6 Constant Object အ+$လuB$ကiu eရ$သ+$ထ+$တ-6 အစ?အစT#အတiuင#$ Array
Object တစ#ခuအeနန-9 ရQiAiuင#မH+Cဖစ#ပ3တယ#။
On, Off;
အထက#ပ3နမOန+ထ-မH+လiu Status.values() Method ကiu Invoke လuပ#လiuက#တ-6အခ3မH+ Status Enum Type ထ-မH+
Declare လuပ#ထ+$တ-6 Constant Object eတ&ကiu Array ပuBစBန-9 Cပန#ရမH+Cဖစ#ပ3တယ#။ ဒ? Method ကeတ+6 အသuB$Cပu
မည#6 Enum Type ထ-မH+ ဘယ#လiu Constant eတ&Qiတယ#ဆiuတ+ကiu သiခGင#တ-6အခ3မGiu$မH+ အသuB$CပuAiuင#ပ3တယ#။
valueOf(String name)
eရ$သ+$ထ+$တ-6 Enum Type ရ-I Constant Name ကeန Enum Constant ကiu ရယOလiuတ-6အခ3မGiu$မH+ အသuB$Cပu
Aiuင#တ-6 Method Cဖစ#ပ3တယ#။
On, Off;
Parameter Cဖစ#တ-6 String Type န-9 န+မည#တOတ-6 Enum Constant ကiu Q+eဖ&eပ$မH+ Cဖစ#Kပ?$တကယ#လiu မeတ&Jခ-6ပ3
က IllegalArgumentException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
On, Off;
for(Status s : values()) {
System.out.printf("Ordinal : %d, Name : %s%n",
s.ordinal(), s.name());
}
}
}
Ordinal : 0, Name : On
Ordinal : 1, Name : Off
Sorting Enum
Enum Type eတ&ဟ+ Serializable Interface န-9 Comparable<E> Interface တiuကiu Implement လuပ#ထ+$ပ3
တယ#။ ဒ36eFက+င#6 Enum Constance eတ&ကiu Serialize လuပ#Aiuင#သလiu တစ#ခuန-9 တစ#ခu Compare လuပ#Aiuင#မH+ Cဖစ#ပ3
တယ#။ အ-6ဒ?လiuပ- Arrays ဒ3မHမဟuတ# Collections Utility Class eတ&ကiu အသuB$CပuKပ?$ Sort လuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။
Serializable န-9 ပတ#သက#Kပ?$ Essential Java API Cဖစ#တ-6 Java IO အခန#$eရ+က#တ-6အခ3မH+ eဖ2Cပသ&+$မH+ Cဖစ#
ပ3တယ#။ ဒ?eနရ+မH+eတ+6 Comparable<T> န-9 Sorting eတ&အeFက+င#$ကiu eလ6လ+သ&+$Fကရeအ+င#။
Enum Type eတ&ဟ+ Comparable<T> Interface ကiu Implement လuပ#ထ+$ပ3တယ#။ Class တစ#ခuဟ+
Interface တစ#ခuကiu Implement လuပ#ထ+$Kပ?ဆiuတ+န-9 Implement လuပ#ထ+$တ-6 Interface ထ-မH+ ပ3တ-6 Abstract
Method eတ&ကiu Implement လuပ#Kပ?$eရ$သ+$eပ$ရeတ+6မH+ Cဖစ#ပ3တယ#။ ဆiuလiuတ+က Interface ဟ+
Abstraction Cဖစ#တ-6 အတ&က# ဘ+လuပ#လiuရတယ#ပ- သတ#မHတ#eပ$ထ+$ပ3တယ#။ ဘယ#လiu လuပ#ရမယ#ဆiuတ+ကiueတ+6
အ-6ဒ? Interface ကiu Implement လuပ#ထ+$တ-6 Class eတ&မH+ eရ$သ+$eပ$ရမH+ပ3။
Enum Type ကeန compareTo() Method ကiu Implement လuပ#ထ+$တ-6 ကuဒ#eတ&ကeန eလ6လ+Fကည#6Fက
ရeအ+င#။
တကယ#တမ#$ အလuပ#လuပ#eနတ+ကeတ+6 eအ+က#ဆuB$ Return Statement ပ-Cဖစ#ပ3တယ#။ Self ရ-I Ordinal ထ-က
Other ရ-I Ordinal ကiu AHတ#Kပ?$ရတ-6 ရလဒ#ကiu Return Cပန#တယ#ဆiuတ+ကiu eတ&Jရပ3တယ#။ ဆiuလiuတ+က Enum eတ&
ကiu ဘယ#သOကPက?$Kပ?$ ဘယ#သOက ငယ#တယ#ဆiuတ+ကiu သOတiueတ&ရ-I Ordinal (Index Number) န-9A[င#$ယHT#eနတယ#
ဆiuတ+ကiu eတ&Jရပ3တယ#။ Kပ?$eတ+6လ- အ-6ဒ? Method ကiu final လiu eရ$သ+$ထ+$တ-6အတ&က# ဒ? Method ကiu
Override လuပ#Kပ?$eရ$လiu မရAiuင#ဘO$ဆiuတ+ကiu သiAiuင#ပ3တယ#။
Kပ?$eတ+6 Other Enum ရ-I တန#ဖiu$က Pက?$eနရင# အA[တ# (Minus) တန#ဖiu$ရပ3မယ#။ ဒ36eFက+င#6 ရလဒ#ဟ+ အAHတ#
တန#ဖiu$Cဖစ#eနရင# ကiuယ#ကငယ#eနKပ?$ တစ#Cခ+$ Enum Constant ကPက?$eနပ3မယ#။ Kပ?$eတ+6 ရလဒ#ဟ+ သuညထက#
Pက?$eနရင#လ- ကiuယ#က Pက?$တယ#ဆiuတ+ကiu သiAiuင#ပ3တယ#။
Enum eတ&ရ-I compareTo() method ဟ+ final method Cဖစ#တ-6 အတ&က# Override လuပ#လiuမရAiuင#ပ3ဘO$
Equality Operator
Enum Constant eတ&ဟ+ Constant eတ&Cဖစ#တ-6အတ&က# တန#ဖiu$တOမတOဆiuတ+ကiu Object ရ-I equals() Method
သ+မက Equality Operator ကiu အသuB$CပuKပ?$eရ$သ+$Aiuင#ပ3တယ#။
On, Off;
အထက#ပ3အတiuင#$ main method ထ-မH+ status variable ရ-I တန#ဖiu$အeနန-9 Status.On လiu eရ$သ+$ထ+$ပ3တယ#။
ဆiuလiuတ+က status ရ-I တန#ဖiu$ဟ+ On Cဖစ#ပ3တယ#။
eဖ2Cပပ3အတiuင#$ status န-9 အCခ+$eသ+ Constant တန#ဖiu$မG+$ကiu Equality Operator ကiu အသuB$CပuKပ?$ စစ#eဆ$
သ&+$Aiuင#ပ3တယ#$ status == On ရ-I တန#ဖiu$ဟ+ true Cဖစ#မH+ Cဖစ#Kပ?$ status == Off ရ-I တန#ဖiu$ဟ+ false Cဖစ#ပ3မယ#။
အလ+$တOပ- status != On ရ-I တန#ဖiu$ဟ+ false Cဖစ#မH+ Cဖစ#Kပ?$ status != Off ရ-I တန#ဖiu$ဟ+လ- true Cဖစ#မH+ Cဖစ#ပ3
တယ#။ eဖ2Cပပ3 status variable ကeန Reference လuပ#eနတ-6 တန#ဖiu$ဟ+ On Cဖစ#တ-6 အတ&က# On န-9တOတယ#
eCပ+လ+ရင# true Cဖစ#မH+ Cဖစ#Kပ?$ Off န-9တOတယ#ဆiuရင# false Cဖစ#ပ3မယ#။ ဒ?လiuပ- On န-9 မတOဘO$eCပ+တ-6အခ3မH+ false
Cဖစ#မH+ Cဖစ#Kပ?$ Off န-9 မတOဘO$ဆiuရင# true Cဖစ#မH+ Cဖစ#ပ3တယ#။
Enum Object eတ&တOမတOဆiuတ+ကiu အCခ+$eသ+ Object eတ&အတiuင#$ equals method ကiu အသuB$CပuKပ?$ စမ#$သပ#
Aiuင#မH+Cဖစ#Kပ?$ Operator န-9 စစ#eဆ$တ-6 ရလဒ#န-9 အတOတOပ- Cဖစ#ပ3မယ#။
Switch Parameter
Enum eတ&ဟ+ Constant eတ&Cဖစ#တ-6အတ&က# switch statement ရ-I Argument eတ&အeနန-9လ- အသuB$CပuAiuင#ပ3
တယ#။ Java SE 5 မတiuင#ခင#က Enum ကiuလ- အသuB$Cပuလiu မရeသ$ပ3ဘO$။ အ-6ဒ?အတ&က# Switch Statement ရ-I
Parameter အeနန-9 Primitive Type eတ&Cဖစ#Fကတ-6 Character, Byte, Short, Integer eတ&ကiuပ- အသuB$CပuAiuင#ခ-6ပ
တယ#။
Java SE 5 အeရ+က#မH+ Enum ကiu Java Language မH+ အသuB$Cပuလ+Aiuင#Kပ?$ Enum Type eတ&ကiu Switch
Statement ရ-I Parameter အeနန-9 အသuB$Cပuလ+Aiuင#ပ3တယ#။ Java SE 7 အeရ+က#မH+eတ+6 Project Coin န-9
String Type ကiuလ- Switch Statement ရ-I Parameter အeနန-9 အသuB$Cပuလ+Aiuင#ပ3တယ#။
အထက#ပ3အတiuင#$ Enum Type Variable Cဖစ#တ-6 day ကiu switch ရ-I Argument အeနန-ရယOAiuင#Kပ?$ Case
Statement eတ&မH+လ- Enum Constant eတ&ကiu eရ$သ+$ အသuB$CပuAiuင#ပ3တယ#။
အထက#ပ3 Method ရ-I day ဟ+ MON ကeန FRI အထiဆiuရင# Work Day လiueဖ2CပAiuင#မH+ Cဖစ#Kပ?$ SAT န-9 SUN
ဆiuပ3က Off Day လiu eဖ2Cပeပ$Aiuင#မH+ Cဖစ#ပ3တယ#။
Object’s Behaviors
Enum Constant eတ&ဟ+ Pကiuတင#eရ$သ+$ထ+$ရတ-6 Constant Object eတ&Cဖစ#Fကပ3တယ#။ အ-6ဒ3eFက+င#6 Enum
Constatnt တiuင#$မH+ java.lang.Object ရ-I Method eတ&ကiuလ- အသuB$Cပuလiuရပ3တယ#။ Kပ?$eတ+6 Enum Class ထ-
မH+ အခGiu Method eတ&ကiu Override လuပ#ထ+$ပ3တယ#။
equals() method
Enum Class ထ-မH+ equals method ကiu Override လuပ#Kပ?$eရ$သ+$ထ+$ပ3တယ#။ အတ&င#$မH+ equality
Operator ကiu အသuB$CပuKပ?$ ရလ+တ-6 ရလဒ#ကiu Return Cပန#ထ+$ပ3တယ#။ Kပ?$eတ+6 အ-6ဒ? final modifier ကiu အသuB$Cပu
ထ+$တ-6အတ&က# Enum Class eတ&ရ-I equals method ကiu Override လuပ#Kပ?$ eရ$လiuရမH+ မဟuတ#eတ+6ပ3ဘO$။
clone() method
Enum Class ထ-မH+ clone method ကiuလ- Override လuပ#Kပ?$ eရ$သ+$ထ+$ခ-6ပ3တယ#။ Access Modifier အeနန-9
protected Modifier ကiu အသuB$Cပuထ+$တ-6 အတ&က# Sub Class eတ&ကeနသ+ အသuB$CပuAiuင#Kပ?$ Cပင#ပကeနeတ+6
သuB$လiuရမH+ မဟuတ#ပ3ဘO$။ တဖန# Method Body အတ&င#$မH+eတ+6 CloneNoSupportedException ကiu throw
လuပ#ထ+$ပ3တယ#။ အ-6ဒ?အတ&က# Enum eတ&မH+ Clone Operation ကiu Support မလuပ#ဘO$လiuသiAiuင#ပ3တယ#။
eန+က#ဆuB$ final modifier ကiu eရ$သ+$ထ+$တ-6 အတ&က# ဘယ# Enum Type မH+မH clone method ကiu Override
လuပ#လiuမရeတ+6ပ3ဘO$။ ဒ36eFက+င#6 ဘယ# Enum Type မGiu$မH+မဆiu Clone Operation ကiu eရ$လiuရမH+ မဟuတ#eတ+မ
ပ3ဘO$။
toString() method
Object ရ-I toString() method ကiuလ- Enum Class က Override လuပ#Kပ?$eရ$သ+$ထ+$ပ3တယ#။ Method Body
ထ-မH+ name ကiu Return Cပန#eနတ-6 အတ&က# Enum eတ&ရ-I toString method ကiu Invoke လuပ#ရင# Enum
Constant ကiueရ$သ+$ထ+$တ-6 Name ကiu Cပန#ရမH+ Cဖစ#ပ3တယ#။
Kပ?$eတ+6 toString() method ကiu final လiu မeရ$ထ+$တ-6 အတ&က# Enum Class eတ&ထ-ကeန Override လuပ#Kပ?$
eရ$မယ#ဆiuရင#ရAiuင#ပ3တယ#။ ဆက#လက#Kပ?$ Override လuပ#Fကည#6Fကရeအ+င#။
@Override
public String toString() {
return String.format("%d : %s", ordinal(), name());
}
}
Class Body eအ+က#မH+ Override လuပ#ထ+$တ-6 Method eတ&ကiu Enum Constant တiuင#$မH+ အသuB$CပuAiuင#မH+ Cဖစ#
ပ3တယ#။
for(DaysOfWeek d : DaysOfWeek.values()) {
System.out.println(d);
}
}
0 : MON
1 : TUE
2 : WED
3 : THU
4 : FRI
5 : SAT
6 : SUN
@Override
public String toString() {
return String.format("%d : %s", ordinal(), name());
}
}
အထက#ပ3အတiuင#$ DaysOfWeek ရ-I MON Constant ရ-I Body ထ-ကeန toString() Method ကiu Override လuပ#
လiuရပ3တယ#။ MON ရ-I toString() Method ကiu အသuB$Cပuရင# သb Body ထ-မH+ eရ$ထ+$တ-6 Method ကiuပ- အသuB$Cပu
သ&+$တ+ကiu eတ&Jရပ3မယ#။အe^မH+eရ$ခ-6တ-6 Main Method ကiu Run Fကည#6တ-6အခ3မH+ MON Constant တခuပ-
Constant Body ထ-က Override လuပ#ခ-6တ-6 toString() Method ကiu အသuB$Cပuသ&+$တယ#ဆiuတ+ကiu eတ&Jရပ3လiမ#6
မယ#။
Monday
1 : TUE
2 : WED
3 : THU
4 : FRI
5 : SAT
6 : SUN
Enum Class eတ&မH+ Object eတ&ရ-I State eတ&Cဖစ#တ-6 Instance Variable eတ&ကiu eရ$သ+$လiuရAiuင#ပ3တယ#။
eရ$သ+$တ-6 eနရ+မH+ AHစ#သက#ရ+ Access Modifier ကiu eရ$သ+$လiuရAiuင#ပ3တယ#။ Constructor ကiu လ-eရ$သ+$လiu
ရပ3တယ#။ ဒ3eပမ-6 Access Modifier အeနန-9eတ+6 private ဒ3မHမဟuတ# Default ကiuပ- အသuB$CပuလiuရမH+ Cဖစ#ပ3
တယ#။
ဒ3eFက+င#6 Enum Constant eတ&ကiu Enum ရ-I Body ထ-မH+ပ- eရ$သ+$လiuရမH+ Cဖစ#ပ3တယ#။ Enum Class အCပင#
ကeန Enum Constant eတ&ရ-I Object eတ&ကiu တည#eဆ+က#လiu ရAiuင#မH+ မဟuတ#ပ3ဘO$။
Kပ?$eတ+6 Enum Class eတ&မH+ Object ရ-I Behavior ကiu သတ#မHတ#eပ$Aiuင#တ-6 Instance Method eတ&ကiu
eရ$သ+$Aiuင#မH+Cဖစ#Kပ?$ Enum Constant တiuင#$ကeန အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Inheritance
Enum Class eတ&ဟ+ အCခ+$eသ+ Class eတ&ကiu Inheritance လuပ#လiuမရသလiu အCခ+$ Class eတ&ကeနလ-
Enum Class eတ&ကiu Inheritance လuပ#လiuမရပ3ဘO$။ အ-6ဒ?လiuပ- Enum အခGင#$ခGင#$လ- Inheritance လuပ#လiuမရAiuင#
ပ3ဘO$။
Abstraction
Java Class eတ&မH+ Abstraction ကiu Abstract Class eတ&န-9 eရ$သ+$လiuရAiuင#သလiu Interface eတ&န-9လ-
eရ$သ+$လiu ရAiuင#ပ3တယ#။ ဒ3eပမ-6 Enum Class eတ&ဟ+ အCခ+$ Class eတ&ကiu Inherantance လuပ#လiu မရAiuင#တ-6
အတ&က# Abstract Class eတ&ကiu သuB$လiu မရAiuင#ပ3ဘO$။ အ-6ဒ?အစ+$ Enum Class eတ&ထ-မH+ Abstract Method
eတ&ကiu eရ$လiuရAiuင#ပ3တယ#။
ဒ36eFက+င#6 Java မH+ Abstract Method eတ&ကiu Abstract Class eတ&၊ Interface eတ&န-9 Enum Class eတ&မH+
eရ$သ+$လiuရAiuင#တယ#လiu ဆiuAiuင#ပ3တယ#။
}, Approved {
@Override
public boolean isEndOperation() {
return true;
}
}, Cancel {
@Override
public boolean isEndOperation() {
return true;
}
};
အထက#ပ3အတiuင#$ Status Enum Class အတ&င#$မH+ Request, Approved န-9 Cancel ဆiuတ-6 Constant eတ&ကiu
ပiuင#ဆiuင#ပ3တယ#။ Kပ?eတ+6 အ-6ဒ? Constant တiuင#$ကeန မတOည?တ-6 Behavior eတ&ကiu ရQieစလiuတယ#ဆiuရင#
အထက#ပ3အတiuင#$ Abstract Method Cဖစ#တ-6 isEndOperation() Method ကiu eရ$သ+$ထ+$Aiuင#ပ3တယ#။
Enum Class အတ&င#$မH+ Abstract Method ကiu eရ$သ+$လiuက#Kပ?ဆiuတ+န-9 Enum Constant eတ&တiuင#$ကeန
Override လuပ#Kပ?$eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။ ဒ?လiu eရ$သ+$Cခင#$အ+$Cဖင#6 Status Constant တiuင#$ကeန
Operation Kပ?$သ&+$Kပ?လ+$ မKပ?$eသ$ဘO$လ+$ဆiuတ+ကiu သiAiuင#တ-6 isEndOperation() Method ကiu အသuB$CပuAiuင#မH+
Cဖစ#ပ3တယ#။
Interface Implementation
Enum Type eတ&ဟ+ Abstract Class eတ&ကiu Extends မလuပ#Aiuင#eပမ-6 Interafce eတ&ကiueတ+6 Implement
လuပ#Aiuင#ပ3တယ#။
ViewNameSetting ("views.properties"),
TitleSetting ("titles.properties");
@Override
public File generate() {
return new File(fileName);
}
}
Settings Enum ဟ+ FileGenerator Interface ကiu Implement လuပ#ထ+$တ-6အတ&က# Setting ထ-က Constant
eတ&ကiu FileGenerator Object အeနန-9 အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ တဖန# FileGenerator Interface ကiu
Implement လuပ#ထ+$တ-6 အCခ+$ Class eတ&ရ-I Object eတ&န-9 အတOတO Setting Enum Constant eတ&ကiuလ-
FileGenerator အeနန-9 အသuB$CပuလiuရAiuင#မH+ Cဖစ#ပ3တယ#။ ဆiuလiuတ+က Interface ကiu အသuB$CပuCခင#$အ+$Cဖင#6 Enum
Constant eတ&ကiu Polymorphic Cဖစ#eအ+င# eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
generateFile(viewName);
generateFile(title);
generateFile(test);
}
Settings Enum ကiueက+ TestFileGenerator ကiuပ3 FileGenerator Interface ကiu Implement လuပ#ထ+$တ-6
အတ&က# test() Method ထ-မH+ generateFile() Method ထ-ကiu Setting Enum eတ&ကiuလ- Parameter အeနန-9
အသuB$CပuAiuင#သလiu TestFileGenerator Object ကiuလ- အသuB$Cပuလiuရသ&+$ပ3တယ#။
ဒ?eနရ+မH+ eလ6လ+Aiuင#တ+ကeတ+6 Interface eတ&ကiu အသuB$CပuKပ?$ Enum eတ&န-9 အCခ+$eသ+ Object eတ&ကiu
တOည?စ&+ အသuB$CပueစAiuင#မယ# ဆiuတ-6 အခGက#Cဖစ#ပ3တယ#။
ဒ?လiu Enum ရ-I ထO$Cခ+$ခGက#ကiu အသuB$CပuKပ?$ JVM Memory eပ2မH+ တစ#ခuထ-သ+QieနeစခGင#တ-6 Singleton Object
eတ&eနရ+မH+ Enum Constant eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။
instance;
private BookStore() {
books = new ArrayList<>();
}
အထက#ပ3အတiuင#$ BookStore Enum Object ကiu eရ$သ+$ထ+$Kပ?$ instance constant တစ#ခuကiu eရ$သ+$ထ+$
ရင# instance Object ကiu အCခ+$ဘယ#eနရ+ကမH Object ထပ#eဆ+က#လiuရမH+ မဟuတ#eတ+6ပ3ဘO$။ ဒ36eFက+င#6 JVM
Memory ထ-မH+ တစ#ခuထ-သ+Qiတ-6 Singleton Object eတ& Cဖစ#လ+မH+ Cဖစ#ပ3တယ#။
Generics
Generics ဟ+ Java SE 5 အeရ+က#မH+ အသuB$Cပuလ+Aiuင#ခ-6တ-6 Programming eရ$သ+$ပuB eရ$သ+$နည#$အသစ#
Cဖစ#ပ3တယ#။ Generics Programming Concept ကiu Java မH+ eရ$သ+$Aiuင#eအ+င# ထည#6သ&င#$ခ-6တ+လ- Cဖစ#ပ3
တယ#။
ဆiuFကပ3စiu။ က\န#eတ+#တiu Cup တစ#ခuအတ&က# Class တစ#ခueရ$မယ#။ Kပ?$eတ+6 အ-6ဒ?အထ-မH+ Coffee eတ&ကiu
အသuB$Cပuမယ#ဆiuKပ?$ eရ$သ+$ထ+$ခ-6ရင# အ-6ဒ? Cup ဟ+ Coffee Cup ပ- Cဖစ#သ&+$ပ3မယ#။ Tea Cup တစ#ခuကiu လiuခGင#
ရင# eန+က#ထပ# Cup Class တစ#ခuကiu eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။
Coffee Cup ပ- Cဖစ#Cဖစ# Tea Cup ပ-Cဖစ#Cဖစ# Cup Cဖစ#တ-6အတ&က# လuပ#လiuရတ-6 အလuပ#ကeတ+6 အတOတOပ- Cဖစ#ပ3
မယ#။ အသuB$Cပueနတ-6 Data မတOတ+န-9 Class eတ&ကiu eရ$eနရပ3တယ#။ ဒ?လiueနရ+မGiu$မH+ အသuB$CပuAiuင#တ-6 Data
Type ကiu Abstraction Cဖစ#eအ+င# eရ$ထ+$Aiuင#မယ#ဆiuရင# အသuB$Cပueနတ-6 Data Type မတOလiuဆiuKပ?$ eန+က#ထပ#
Class eတ&ကiu ထပ#Kပ?$eရ$စရ+လiuမH+ မဟuတ#eတ+6ပ3ဘO$။ အခuလiu Cပဿန+eတ&ကiu eCဖQင#$Aiuင#eအ+င#ဆiuKပ?$ Java
SE 5 အeရ+က#မH+ Class တစ#ခuမH+ အသuB$Cပueနတ-6 Data Type eတ&ကiu Abstraction Cဖစ#eအ+င# လuပ#eပ$Aiuင#တ-6
Generics ဆiuတ-6 Programming Concept ကiu Java ထ-ကiu ထည#6သ&င#$လ+ခ-6Fကပ3တယ#။
Before Generics
နမOန+အeနန-9 စT#$စ+$Fကည#6Fကရeအ+င#။ က\န#eတ+#တiu Container ဆiu
တ-6 Object တစ#ခueရ$eနတယ#။ အ-6ဒ? Container ထ-မH+ က\န#eတ+#တiu
String တန#ဖiu$တစ#ခuကiu သiမ#$ထ+$Aiuင#တယ#။
ဒ?လiu Class မGiu$ကiu eရ$သ+$Kပ?$၊ မFက+ခင#မH+ပ- Integer eတ&ကiu သiမ#$ထ+$တ-6 Container လiuမGiu$လiuခGင#တယ#တiu၊
မဟuတ#eသ$ဘO$ Date Class eတ&ကiu သiမ#$eပ$ထ+$Aiuင#တ-6 Container လ-လiuခGင#တယ#တiu Cဖစ#လ+Aiuင#ပ3တယ#။ ဒ?
eနရ+မH+ က\န#eတ+#တiueရ&$စရ+လမ#$ AHစ#ခuQiပ3မယ#။ တစ#ခuကeတ+6 လiuခGင#တ-6 Data Type eတ&အလiuက# Container
Class eတ&ကiu eရ$eပ$Cခင#$Cဖစ#ပ3တယ#။ ဟင# ဒ3လ-မနiပ#eသ$ဘO$။ တOည?တ-6 ကuဒ#eတ&ကiu Class eတ&အမG+$Pက?$မH+
လiuက#eရ$eနရတယ#။
Container ထ-ကiu သ&င#$တ-6အခGiန#eတ&မH+eတ+6 အစT#eCပပ3လiမ#6မယ#။ Instance Member Cဖစ#တ-6 Data ရ-I Type ကiu
Object လiuယOထ+$တ-6 အတ&က# ဘယ#လiu Java Object မGiu$မဆiuလ+Kပ?$ အစ+$ထiu$လiuရပ3တယ#။ ဒ?လiuပ- Constructor
ရ-I Argument eနရ+မH+လ- Object လiueရ$ထ+$eတ+6 ဘယ#လiu Object မGiu$မဆiu အသuB$Cပuလiuရပ3မယ#။ Setter
Method Cဖစ#တ-6 setData(Object) method ရ-I Argument ဟ+လ- Object Cဖစ#တ-6အတ&က# ဘယ#လiu Object မGiu$မ
ဆiuလ+Kပ?$ ဒ? Method န-9 အသuB$Cပuလiuရပ3မယ#။ Happy! Cဖစ#သ&+$ပ3Kပ?။ Class eတ&အမG+$Pက?$eရ$eနရတ+eတ&ကiu
Object ကiu အသuB$CပuKပ?$ eCဖQင#$လiuက#Aiuင#Kပ?။ ထင#eက+င#$ထင#ပ3လiမ#6မယ#။
ဒ3eပမ-6 Cပဿန+က Container ကeန သiမ#$ထ+$တ-6 Data ကiu အCပင#ကiu Cပန#ထuတ#eပ$တ-6 getData() Method မH+
Cဖစ#ပ3တယ#။ Member Cဖစ#တ-6 data ရ-I Type ဟ+ Object Cဖစ#တ-6 အတ&က# Return Cပန#တ-6 Type ဟ+လ- Object ပ-
Cဖစ#eနမH+ပ3။ တကယ#သuB$Fကည#6တ-6အခ3ကGမH ဒ?eနရ+က Cပဿန+ Cဖစ#လ+ပ3တယ#။
for(Container c : containers) {
String data = (String) c.getData();
System.out.printf("Data is %s%n", data);
}
}
}
အထက#ပ3နမOန+ထ-က showContents() Method မH+ Container Class ရ-I Verarges Type ကiu Argument
အeနန-9 လက#ခBယOထ+$ပ3တယ#။ အ-6ဒ?အတ&က# main() method ထ-မH+ showContents(c1, c2, c3) ဆ?uKပ?$
Container Object eတ&ကiu Parameter အeနန-9 eပ$လiuရeနပ3တယ#။ ဘ+လiuလ-ဆiueတ+6 c1, c2 န-9 c3 eတ&ဟ+
Container Type Object eတ& Cဖစ#တ-6 အတ&က#Cဖစ#ပ3တယ#။
အ-6ဒ?eတ+6 c ဟ+ Container Object Cဖစ#ပ3တယ#။ c object ရ-I getData() method ကiu သuB$တ-6အခ3မH+ Cပဿန+က
စeတ+6တ+ပ3ပ-။ Container Class ရ-I Member Cဖစ#တ-6 data ရ-I Type ဟ+ Object Cဖစ#တ-6 အတ&က# getData()
method ရ-I Return Type ဟ+လ- Object Type Cဖစ#eနပ3တယ#။ Container Class ရ-I Member Cဖစ#တ-6 data ရ-I
Type ဟ+ Object Cဖစ#eနတ-6 အတ&က# ဘယ#လiu Type မGiu$မဆiu Container န-9 အသuB$CပuAiuင#တယ#။ ဒ3eပမ-6 data ရ-I
Type ဟ+ Object Cဖစ#eနတ-6 အတ&က# getData() ရ-I Return Type ဟ+လ- Object ပ- Cဖစ#eနမH+ပ3။
Container Object ရ-I getData() method ကiu အသuB$Cပuတ-6 အခ3မH+ ရလ+တ-6 ရလဒ#ဟ+ Object Cဖစ#eနတ-6
အတ&က# တကယ#တမ#$ ဘယ#လiu Type Cဖစ#တယ#ဆiuတ+ကiu ဒ?eနရ+မH+ မသiAiuင#eတ+6ပ3ဘO$။ ကiuယ#အသuB$Cပuလiuတ-6
Type Cဖစ#eအ+င#ဆiuရင# Cပန#Kပ?$ Cast လuပ#eပ$eနရမH+ Cဖစ#ပ3တယ#။ Type Casting ဟ+ တကယ#ဆiuရင# အရမ#$ကiu
အA lရ+ယ#Qiတ-6 အလuပ#တစ#ခuCဖစ#ပ3တယ#။
eန+က#က&ယ#မH+Qiတ-6 Object ရ-I Type န-9 Casting လuပ#လiuတ-6 Type တiu မတOဘO$ဆiuရင# Runtime ကGမH Exception
ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။ အထက#ပ3နမOန+မH+eတ+6 String အeနန-9 အသuB$Cပuလiuတ-6 အတ&က# getData() ရ-I
ရလဒ#ကiu (String)getData() လiueရ$သ+$Kပ?$ String Type အeနန-9 Cast လuပ#eနရပ3တယ#။ ဒ?eနရ+မH+ Cပဿန+ စ
eတ+6တ+ပ3ပ-။ c1 မH+eတ+6 String ကiu data အeနန-9 Set လuပ#ထ+$တ-6 အတ&က# Class Cast လuပ#တ-6 အခ3မH+
Cပဿန+မတက#eပမ-6 c2 န-9 c3 မH+eတ+6 အသ?$သ?$ Integer န-9 Date Type တiuကiu အသuB$Cပuထ+$ပ3တယ#။ ဒ36eFက+င#6
for loop ရ-I ဒuတiယအပတ#မH+ ClassCastException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
အiueက၊ ဒ?eနရ+မH+ အe^မH+ eမ$ခ-6တ-6 eမ$ခ&န#$ကiu Cပန#Kပ?$ eCဖFကည#6Fကရeအ+င#။ Type အ+$လuB$ကiu သuB$လiuရတiuင#$
eက+င#$လ+$ဆiuတ+။ အeCဖက သiမ#$ထ+$တuန#$ကeတ+6 Object Cဖစ#တ-6 အတ&က# အကuန#သiမ#$လiuရတယ#။ Cပန#ထuတ#
တ-6အခ3ကGမH Object အeနန-9ပ- ထuတ#လiuရတ-6အတ&က# လiuခGင#တ-6 Type Cဖစ#eအ+င# Cast လuပ#တ-6 eနရ+မH+ Cပဿန+
တက#Aiuင#တယ#။ အ-6ဒ?eတ+6 မeက+င#$ဘO$ ဆiuတ-6 အeCဖထ&က#ပ3တယ#။ ဒ3ဟ+ Java 5 မတiuင#ခင#က Collections
Framework eတ&မH+ Cဖစ#eနတ-6 Cပဿန+Cဖစ#ပ3တယ#။ ဒ?လiu Cပဿန+eတ&ကiu eCဖQင#$ဖiuအတ&က# Java SE 5 မH+
Generics ဆiuတ-6 Programming Concept ကiu Java ထ-ကiu ထည#6eခ2လ+ခ-6ရတ+ Cဖစ#ပ3တယ#။ ဆက#လက#Kပ?$
Generics န-9 ဒ?လiuCပဿန+eတ&ကiu eCဖQင#$ခ-6လ- ဆiuတ+ကiu eလ6လ+သ&+$Fကရeအ+င#။
After Generics
Java ဟ+ အထက#ပ3 Cပဿန+eတ&ကiu Generics ဆiuတ-6 Programming Concept ကiuအသuB$CပuKပ?$ eCဖQင#$ခ-6ပ3
တယ#။ Generics ဆiuတ+ဟ+လ- OOP တiu Functional Programming တiuလiu Programming Paradigm တစ#
မGiu$Cဖစ#ပ3တယ#။ Programming Module eတ&မH+အသuB$Cပueနတ-6 Data Type eတ&ကiu Abstraction Cဖစ#eအ+င#
eရ$သ+$Cခင#$အ+$Cဖင#6 လuပ#eဆ+င#မ[တOတ-6 Module eတ&ကiu အPကiမ#Pကiမ# မeရ$ရeအ+င# အကOအည?eပ$Aiuင#တ-6
Programming Concept တစ#မGiu$Cဖစ#ပ3တယ#။
Generics ရ-I Concept ကiu စ+န-9 Qင#$Cပeနတ+ထက# အထက#ပ3 Cပဿန+မGiu$ကiu Generics န-9 ဘယ#လiu eCဖQင#$သ&+$
တယ#ဆiuတ+ကiu Fကည#6လiuက#တ+က အဆeပ3င#$မG+$စ&+ပiuKပ?$န+$လည#လ&ယ#ပ3လiမ#6မယ#။
ဒ?လiuပ- Constructor Argument eနရ+မH+လ- T ကiu အသuB$CပuAiuင#တယ#။ Method eတ&ရ-I Argument eတ&မH+eက+
Return Type eတ&မH+ T လiueရ$သ+$Aiuင#ပ3တယ#။ Class ကiu eရ$သ+$တ-6 အခGiန#မH+eတ+6 ဘ+ Type ကiu သuB$မH+လ-
ဆiuတ+ကiueတ+6 မသieသ$ဘO$။ eလ+eလ+ဆယ# သeဘ+တရ+$အရသ+Qiတ-6 T ဆiuKပ?$ eရ$သ+$ထ+$မယ#eပ36။
တကယ#တမ#$ Object eဆ+က#တ-6 အခ3ကGမH T ရ-I eနရ+မH+ ဘ+သuB$မလ- ဆiuတ+ကiu သတ#မHတ#eပ$ရမH+ပ3။ Object
eဆ+က#တ-6 အခ3မH+ သတ#မHတ#eပ$လiuက#တ-6 Type Parameter ရ-Iတန#ဖiu$ကiu အ-6ဒ? Object က အသuB$Cပuသ&+$မH+ Cဖစ#ပ3
တယ#။ ကuဒ#eတ&န-9 eရ$Fကည#6Fကရeအ+င#။
private T data;
public T getData() {
return data;
}
}
Container Class ကiu eရ$သ+$တ-6 eနရ+မH+ Generics ကiu အသuB$CပuKပ?$ Type Parameter ကiu eရ$သ+$ခ-6ပ3တယ#။
Type Parameter ဆiuတ+က Class eတ& Interface eတ&ကiu Declare လuပ#တ-6အခ3မH+ eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။
<T> လiueရ$သ+$ထ+$တ+က Type Parameter Cဖစ#ပ3တယ#။ eဒ3င#6က&င#$ထ-မH+ eရ$သ+$ထ+$တ-6 T က Type
Parameter Cဖစ#ပ3တယ#။
ဒ?eနရ+မH+ eရ$သ+$ထ+$တ-6 T ဟ+ Container Class မH+ အသuB$CပuAiuင#တ-6 Data Type ရ-I Abstraction Cဖစ#ပ3
တယ#။ ဒ?လiuမGiu$ Generices ကiu အသuB$CပuKပ?$ Class eတ&မH+ Type Parameter ကiu အသuB$CပuAiuင#တ-6အတ&က# Type
Abstraction ကiu Cဖစ#eပ2eစပ3တယ#။ eရ$သ+$ထ+$တ-6 Abstract Type ကiu Class တစ#ခuလuB$မH+ eရ$သ+$ အသuB$Cပu
Aiuင#ပ3တယ#။
private T data;
ဒ36eFက+င#6 Type Abstraction Cဖစ#တ-6 T ကiu Container Class ရ-I Instance member Cဖစ#တ-6 data ရ-I Type Cဖစ#တ-6
eနရ+မH+လ- အသuB$CပuAiuင#သလiu Constructor Argument မH+လ- အသuB$CပuAiuင#ပ3တယ#$
public T getData() {
return data;
}
ဒ?လiuပ- အထက#ပ3 Setter Method ရ-I Argument eတ&ရ-I Type အeနန-9eက+ getter method ရ-I Return Type မH+
ပ3 Type Parameter ကiu အသuB$CပuလiuရAiuင#ပ3တယ#။ တကယ#တန#$eCပ+ရရင# Class တစ#ခuမH+Type Parameter ကiu
eရ$သ+$ထ+$ရင# အ-6ဒ? Type ကiu အ-6ဒ? Class တစ#ခuလuB$မH+ eရ$သ+$ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
အထက#ပ3အတiuင#$ Generics Type eတ&ကiu Object eဆ+က#တ-6 အခ3မH+ Type Parameter eနရ+မH+ ဘ+ Type
ကiu သuB$မလ-ဆiuတ+ကiu သတ#မHတ#eပ$ရပ3တယ#။ အ-6ဒ?လiu သတ#မHတ#eပ$လiuက#တ-6အခ3မH+ Type Parameter Cဖစ#တ-6 T
ဆiuတ-6 eနရ+eတ&အ+$လuB$ကiu Object eဆ+က#တ-6 အခ3မH+ သတ#မHတ#eပ$လiuက#တ-6 Type က အစ+$ထiu$သ&+$မH+ Cဖစ#ပ3
တယ#။
အ-6ဒ?လiuပ- Method Argument Cဖစ#တ-6 eနရ+မH+လ- Generics Type ကiu သတ#မHတ# အသuB$CပuAiuင#ပ3တယ#။
for(Container<String> c : containers) {
String data = c.getData();
System.out.printf("Data is %s%n", data);
}
}
ဒ?လiuပ- String Type ကiuသ+ အသuB$Cပuတ-6 showContents() method မH+ Integer ကiu အသuB$Cပuတ-6 c2 တiu Date ကiu
အသuB$Cပuတ-6 c3 တiuကiu အသuB$Cပuလiu မရAiuင#eတ+6ပ3ဘO$။ Generics ဟ+ Type Parameter ကiu အသuB$CပuKပ?$ Object
တစ#ခuခGင#$စ?မH+ အသuB$CပuAiuင#တ-6 Data Type ကiuသတ#မHတ#eပ$Aiuင#ပ3တယ#။ Object eဆ+က#တ-6 အခGiန#မH+ ဘ+ Type
ကiu သuB$မH+လ- ဆiuတ+ကiu သတ#မHတ#eပ$Aiuင#Kပ?$ Type Parameter eနရ+ကiu အ-6ဒ? Type က အစ+$ထiu$သ&+$ပ3တယ#။
Generics Type Variable ကiu Declare လuပ#တ-6အခ3မH+ သတ#မHတ#ထ+$တ-6 Type အတiuင#$ Type Parameter
ကiu သတ#မHတ#သ&+$တ-6 အတ&က# Setter eတ&န-9 Constractor eတ&မH+ သတ#မHတ#ခ-6တ-6 Type အCပင# အCခ+$ Type
eတ&ကiu သuB$လiuမရeတ+6ပ3ဘO$။ Container<String> c1 လiueရ$လiuက#တ-6 အတ&က# T QiသမZeနရ+eတ&ဟ+
String Cဖစ#သ&+$ပ3မယ#။
ဒ36eFက+င#6 Constructor ဟ+ Container(String) Cဖစ#သ&+$Kပ?$ String ကလ&-ရင# အCခ+$ Type eတ&ကiu သuB$လiu မ
ရeတ+6ပ3ဘO$။ ဒ?လiuပ- Setter Method Cဖစ#တ-6 setData(String) ရ-I Argument ဟ+လ- String Cဖစ#သ&+$တ-6
အတ&က# String ကလ&-ရင# အCခ+$ Type eတ&ကiu Set လuပ#လiuမရeတ+6ပ3ဘO$။
ဒuတiယအခGက#ကeတ+6 Getter Method eတ&Cဖစ#တ-6 getData() method ရ-I Return Type ဟ+လ- String Cဖစ#
သ&+$ပ3တယ#။ အ-6ဒ?အတ&က# eရ$ထ+$တ-6 Variable ရ-I Return Type ဟ+ သတ#မHတ#Kပ?$သ+$Cဖစ#သ&+$တ-6 အတ&က#
Type Casting eတ&eရ$စရ+မလiueတ+6ပ3ဘO$
တတiယအခGက#က Generics Type eတ&ကiu Argument အeနန-9 အသuB$Cပueနတ-6 Method eတ&၊ Constructor
eတ&မH+လ- သတ#မHတ#ထ+$တ-6 Type ကလ&-ရင# အCခ+$ Type eတ&ကiu အသuB$Cပuတ-6 Object eတ&ကiu အသuB$Cပuလiuရ
eတ+6 မH+မဟuတ#ဘO$။
အထက#ပ3နမOန+ထ-ကလiu showContents(Container<String>) လiu အသuB$CပuAiuင#တ-6 Type ကiu
Container<String> လiueရ$လiuက#တ-6အတ&က# String eတ&ကiu အသuB$Cပueနတ-6 Container eတ&ကလ&-Kပ?$ အCခ+$
Container eတ&ကiu အသuB$Cပuလiu မရeတ+6ပ3ဘO$။ ဒ36eFက+င#6 Integer ကiu အသuB$Cပueနတ-6 c2 Object န-9 Date ကiu
အသuB$Cပuတ-6 c3 Object တiuကiu showContents(Container<String>) method န-9 အသuB$CပuလiuမရAiuင#eတ+6ပ3
ဘO$။
က\န#eတ+#တiu ဆက#လက#Kပ?$ Generics ကiu ဘယ#လiu eရ$လiuရမလ-၊ Kပ?$eတ+6 Generics ကiu အသuB$Cပuတ-6 အတ&က#
eန+က#က&ယ#မH+ ဘယ#လiu အလuပ#လuပ#eနလ- ဆiuတ+ကiu ဆက#Kပ?$ eလ6လ+သ&+$Fကရeအ+င#။
Writing Generics
ဒ?eနရ+မH+eတ+6 Generics ကiu ဘယ#လiu eရ$ရမလ-၊ eရ$သ+$ထ+$တ-6 Generics ကiu ဘယ#လiu အသuB$ခGမလ-ဆiuတ+န-9၊
Generics ကiu ဘယ#လiueနရ+eတ&မH+ eရ$သ+$Aiuင#သလ- ဆiuတ-6 အခGက#eတ&ကiu eလ6လ+သ&+$Fကပ3မယ#။
Generics မH+ အဓiက အeရ$ပ3တ+ကeတ+6 Type Parameter ပ3ပ-။ Type Parameter ဆiuတ+ဘ+လ- Kပ?$eတ+6
Type Parameter ကiu ဘယ#လiueရ$ရလ-၊ Kပ?$eတ+6 Type Parameter ကiu ဘယ#လiu Customize လuပ#လiuရလ- ဆiuတ+
ကiu eလ6လ+တ+ဟ+ Generics ကiu eလ6လ+တ+န-9 အတOတOပ3ပ-။
Type Parameter
Type Parameter ကiu <> ထ-မH+ eရ$သ+$ရတ+မHန#eပမ-6 Class eတ& Interface eတ&မH+ eရ$သ+$ပuB eရ$သ+$နည#$န-9
Method eတ&မH+ eရ$သ+$ပuBeရ$သ+$နည#$က မတOပ3ဘO$။ အရင#ဆuB$ Class eတ& Interface eတ&မH+ eရ$သ+$ပuBကeန
စKပ?$ eလ6လ+သ&+$Fကရeအ+င#။
အထက#ပ3အတiuင#$ Interface ကiu eရ$သ+$တ-6အခ3မH+ Identifier ရ-I Name ရ-Ieန+က#မH+ <> အတ&င#$မH+ အသuB$Cပuလiu
တ-6 Type Parameter ကiu eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ T က Type Parameter ပ3။ eရ$သ+$ထ+$တ-6 Type
Parameter T ကiu Method Arguments eတ&န-9 Return Type eတ&မH+ အသuB$CပuAiuင#ပ3တယ#။ Type Parameter ကiu
တစ#ခGiueသ+ OOP Programming Language eတ&မH+ Type Template လiuလ-eခ2ဆiueလ6Qiပ3တယ#။ UML
Diagram eတ&မH+ Type Parameter eတ&ကiu Type Template ဆiuKပ?$eရ$သ+$အသuB$CပuFကတ+ကiu eတ&Jရပ3တယ#။
တကယ#လiu Reference Type Variable ကiu Declare လuပ#တ-6အခ3မH အသuB$Cပuမည#6 Type ကiu Type Parameter
eနရ+မH+ သတ#မHတ#eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။
အထက#ပ3အတiuင#$ Reference Variable ကiu Declare လuပ#တ-6အခGiန#မH+ Customer Type ကiu Type Parameter
မH+ သတ#မHတ#eရ$သ+$လiuက#တ-6အတ&က# repo.insert() method မH+လ- Customer Object ကiu အသuB$Cပuသ&+$Aiuင#ပ3
တယ#။ Customer Object ကလ&-ရင#လ- အCခ+$ Type eတ&ကiu အသuB$CပuလiuရမH+ မဟuတ#eတ+6ပ3ဘO$။
repo.insert(c);
Customer c1 = repo.findById(1);
အ-6ဒ?လiuပ- repo.findById() method ရ-I Return Type ဟ+လ- Customer Cဖစ#သ&+$တ-6 အတ&က# Type Cast လuပ#
စရ+မလiueတ+6ပ3ဘO$။ အလ+$တO repo.findAll() method ရ-I Return Type ဟ+လ- List<Customer> Cဖစ#သ&+$တ+
ကiu eတ&Jရပ3တယ#။ ဒ36eFက+င#6 Generics ကiu အသuB$CပuခGင#$အ+$Cဖင#6 Argument eတ&ကiu ကန#9သန#9Aiuင#သလiu၊ Return
Type eတ&ကiuလ- Type Cast လuပ#စရ+မလiueတ+6တ+ကiu eတ&Jရပ3တယ#။
Class eတ&မH+ Generics ကiu အသuB$Cပuတ-6 eနရ+မH+ တစ#ခuထ-သ+ Class ထ-မH+ Generics Type အeနန-9 eရ$သ+$
အသuB$Cပuတ+လ-QiAiuင#သလiu Generics Type Class eတ& Generics Type Interface eတ&ကiu Extends ဒ3မHမဟuတ#
Implement လuပ#Kပ?$ eရ$တ-6 အခ3လ-Qiပ3လiမ#6မယ#။
Constructor Argument မH+ရ-Iတ-6 Type eက+ Method Argument eနရ+မH+Qiတ-6 Type eတ&ပ3 Customer Cဖစ#
သ&+$တ-6အတ&က# Customer ကလ&-Kပ?$ အ-6ဒ? Object န-9 အသuB$CပuလiuရမH+ မဟuတ#eတ+6ပ3ဘO$။ ဒ?လiuပ- Method Return
Type မH+ သuB$ထ+$တ-6 Type ဟ+လ- Customer Cဖစ#သ&+$တ-6 အတ&က# တစ#Cခ+$ Type eတ&အeနန-9 Cast လuပ#စရ+မ
လiueတ+6ပ3ဘO$။
Generics Type Interface ကiu Class တစ#ခuက Implement လuပ#eတ+6မယ#ဆiuရင# eရ&$ခGယ#ရမH+က လက#Qi
eရ$သ+$မည#6 Class မH+ Generics ကiu ဆက#ထ+$မလ+$ ဒ3မHမဟuတ# ဒ?eနရ+မH+ Type ကiu သတ#မHတ#သ&+$မလ+$ဆiu
တ+ပ3ပ-။ ပထမဆuB$ Generics ကiu ဆက#Kပ?$သuB$မယ#ဆiuရင# ဘယ#လiu eရ$မယ#ဆiuတ+ကiu eလ6လ+Fကည#6Fကရeအ+င#။
လက#Qieရ$သ+$တ-6 Class ကiu Generics အeနန-9 ဆက#Kပ?$ သuB$လiuတယ#ဆiuရင# Class Name eန+က#မH+ Type
Parameter ကiu ယOKပ?$ Interface Cဖစ#တ-6 eနရ+မH+လ- အ-6ဒ? Type ကiuပ- eရ$သ+$Kပ?$ Class တစ#ခuလuB$မH+ Type
Parameter ကiu အသuB$CပuAiuင#ပ3တယ#။ Reference Variable ကiu eရ$တ-6အခ3ကGမH Type ကiu သတ#မHတ#eပ$ရမH+ပ3။
eန+က#တစ#ခueရ&$ခGယ#စရ+ကeတ+6 လက#Qi Class ကiu eရ$သ+$တ-6 အခ3မH+ Type ကiu သတ#မHတ#လiuရသ&+$Kပ?လ+$ ဆiu
တ-6 အeနအထ+$ပ- Cဖစ#ပ3တယ#။ ဒ3ဆiuရင#eတ+6 လက#Qieရ$သ+$တ-6 Class ကiu Generics အeနန-9 eရ$သ+$စရ+မလiu
eတ+6ပ3ဘO$။
@Override
public void insert(Customer t) {
// TODO Auto-generated method stub
}
@Override
public Customer findById(Object id) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<Customer> findAll() {
// TODO Auto-generated method stub
return null;
}
}
eန+က#တစ#မGiu$QiAiuင#တ+က Generics Type Interface လuပ#တ-6 Class မH+ Type ကiu မသတ#မHတ#eသ$Aiuင#တ-6
အeနအထ+$မGiu$ Cဖစ#ပ3တယ#။
// Override methods
}
ဒ?လiuအခ3မGiu$eတ&မH+ ဆiuရင#eတ+6 Class Declaration Cဖစ#တ-6 BaseRepository မH+ Type Parameter Cဖစ#တ-6
<T> ကiu eရ$သ+$Kပ?$ Interface မH+လ- T Type ကiu ဆက#Kပ?$ အသuB$CပuAiuင#ပ3တယ#။
Generics eတ&ကiu Class eတ&လiu Interface eတ&လiu Type အeနန-9 eရ$သ+$Aiuင#တ-6 eနရ+eတ&မH+လ- eရ$သ+$Aiuင#
သလiu Method eတ&မH+လ- eရ$သ+$Aiuင#ပ3တယ#။ Type eတ&မH+ Generics eတ&ကiu သuB$ထ+$ရင# Generics Type
eတ&လiueခ2ဆiuKပ?$ Method eတ&မH+ Generics eတ&ကiu အသuB$Cပuထ+$ရင# Generics Method eတ&လiu eခ2ဆiueလ6Qiပ3
တယ#။ Static Method eတ&eက+ Instance Method eတ&မH+ပ3 Generics ကiu အသuB$CပuAiuင#ပ3တယ#။
static<T> T hello(T t) {
T local = t;
// other codes
return local;
}
Static Method eတ&မH Generics ကiu အသuB$Cပuမယ#ဆiuရင# static modifier ရ-I အeန+က# Return Type ရ-I အe^မH+
Type Parameter ကiu eရ$သ+$ရပ3မယ#။ Method တစ#ခuမH+ Type Parameter ကiu သတ#မHတ#လiuက#Kပ?ဆiuတ+န-9 အ-6ဒ?
Type Parameter ကiu Methd ရ-I Return Type မH+လ-အသuB$CပuAiuင#သလiu Methd ရ-I Argument eနရ+မH+လ-
အသuB$CပuAiuင#ပ3မယ#။ အ-6ဒ?အCပင# Method ထ-မH+Qiတ-6 Local Variable eတ&ရ-I Type အCဖစ#လ- အသuB$CပuAiuင#ပ3တယ#။
အထက#ပ3အတiuင#$ hello method ကiu Invoke လuပ#တ-6 အခ3မH+ အသuB$Cပuတ-6 Type အတiuင#$ကGန#တ-6 Type eတ&လ-
သတ#မHတ#သ&+$တ+Cဖစ#ပ3တယ#။ ဆက#လက#Kပ?$ Instance Method eတ&မH+လ- Generics ကiu အသuB$CပuFကည#6Fကပ3
မယ#။
<T> T hello(T t) {
T local = t;
return local;
}
Instance Method eတ&မH+ဆiuရင#eတ+6 Return Type ရ-I e^မH+ Type Parameter ကiu eရ$သ+$Aiuင#ပ3တယ#။
Instance Method eတ&Cဖစ#တ-6 အတ&က# Object eတ&ကeန အ-6ဒ? Method ကiu eခ2ယOAiuင#မH+Cဖစ#ပ3တယ#။ ကGန#တ+
eတ&ကeတ+6 Static Method eတ&န-9 အတOတOပ- Cဖစ#ပ3တယ#။
interface Converter<A,B> {
B convert(A a);
}
@Override
public String convert(Integer a) {
return a.toString();
}
}
အထက#ပ3နမOန+ထ-မH+eတ+6 Converter Interface မH+ <A, B> လiueရ$သ+$ထ+$တ-6 အတ&က# Type Parameter
အeနန-9 A န-9 B ကiu အသuB$Cပuမယ#လiu အဓiပW3ယ#ရပ3တယ#။ တဖန# convert() method ရ-I Return Type eနရ+မH+ B
ကiu အသuB$Cပuထ+$Kပ?$ Argument eနရ+မH+ A ကiu အသuB$Cပuထ+$ပ3တယ#။
ဆက#လက#Kပ?$ IntToStringConverter Class ကeန Converter Interface ကiu Implement လuပ#တ-6 eနရ+မH+
<Integer, String> ဆiuKပ?$ Type eတ&ကiu သတ#မHတ#eပ$ထ+$ပ3တယ#။ ဒ36eFက+င#6 A eနရ+eတ&က Integer Cဖစ#သ&+$
Kပ?$ B eနရ+eတ&က String Cဖစ#သ&+$ပ3တယ#။
Generics Type eတ& Generics Method eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ Type Parameter eတ&ကiu အသuB$CပuAiuင#ပ3
တယ#။ ဒ3eပမ-6 ဘယ#လiu Type eတ&ပ- အသuB$CပuAiuင#တယ#ဆiuတ+ကiu သတ#မHတ#မထ+$ခ-6ပ3ဘO$။ ဒ36eFက+င#6 က\န#eတ+#တiu
eရ$ထ+$တ-6 Generics Type eတ&မH+ Pကiuက#တ-6 Type ကiu အသuB$CပuKပ?$eရ$သ+$eနAiuင#မH+ Cဖစ#ပ3တယ#။
ဟuတ#Kပ?။ အထက#ပ3အတiuင#$ Repository ဆiuတ+ကeတ+6 Database ထ-က Table eတ&ရ-I CURD Operation ကiu
eဆ+င#ရ&က#eပ$Aiuင#တ-6 Interface ကiu သတ#မHတ#eပ$ထ+$တ+ပ- Cဖစ#ပ3တယ#။ ဒ?eနရ+မH+ Type Parameter ကiu T လiu
သတ#မHတ#ထ+$တ-6 အတ&က# က\န#eတ+#တiueတ&က Repository ကiu Type အ+$လuB$န-9 အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 Repository Interface ကeန အသuB$CပuခGင#တ+ကလ- အ-6ဒ? Data eတ&ပ- Cဖစ#ပ3တယ#။ ဒ3ဆiuရင# က\န#eတ+#
တiu ဘယ#လiu လuပ#Fကမလ-။ ဘယ#လiu Class eတ&ကiu eရ$Fကမလ- ဆiuတ+ကiu Class Diagram န-9 eလ6လ+Fကည#6Fက
ရeအ+င#။
က\န#eတ+#တiu Database ထ-က Table eတ&ကiu ကiuယ#စ+$Cပuတ-6 Class ကiu သတ#မHတ#နiင#ရင# Kပ?$တ+ပ3ပ-။ အ-6ဒ? Type
န-9 အ-6ဒ? Type ရ-I Sub Class eတ&သ+ အသuB$CပuAiuင#တ-6 Generics Type ကiu က\န#eတ+#တiu Bounded Type ကiu
အသuB$CပuKပ?$ သတ#မHတ#Aiuင#ပ3တယ#$
ဒ?eနရ+မH+ Table ဆiuတ-6 Interface ကiu ဘ+ Method မHမပ3ပ-eရ$သ+$ပ3မယ#။ Kပ?$eတ+6မH Category, Item, Sale န-9
SaleDetails Class eတ&ကeန Implement လuပ#ပ3မယ#။ Class တစ#ခuဟ+ Interface ကiu Implement လuပ#လiuက#
Cခင#$အ+$Cဖင#6 Class န-9 Interface Fက+$မH+ IS - A Relationship ကiu Cဖစ#eပ2eစပ3တယ#။
Category က Table ကiu Implement လuပ#လiuက#Cခင#$အ+$Cဖင#6 Category ကiu Table အeနန-9 အသuB$Cပuသ&+$Aiuင#ပ3
တယ#။ က\န#eတ+#တiu eရ$သ+$ထ+$တ-6 Repository က Database Operation eတ&ကiu လuပ#Aiuင#တ-6 Class eတ&ကiu
ပ- အသuB$CပuခGင#တယ#။ Table ဆiuတ-6 Interface ကလ- Database ထ-က Table eတ&ကiuပ- ကiuယ#စ+$Cပuပ3တယ#။
ဒ?လiuအeနအထ+$မGiu$မH+လ- Interface ကiu အသuB$CပuAiuင#တယ#။ Serializable လiu Marker Interface လiuမGiu$ Table
Interface ကiu Implement လuပ#ထ+$တ-6 Class မHန#သမZကiu Database ထ-က Table ကiu ကiuယ#စ+$CပuAiuင#တ-6 Class
eတ&Cဖစ#eFက+င#$ သတ#မHတ#eပ$Aiuင#ပ3တယ#။ ဘယ# Class eတ&ဟ+ Table eတ&ကiu ကiuယ#စ+$CပuAiuင#တယ#ဆiuတ+ကiu
သတ#မHတ#Kပ?$ရင# Repository ကiu ဒ? Class eတ&ကiuသ+သuB$Aiuင#တ-6 Interface Cဖစ#eအ+င# eရ$eပ$UuBပ3ပ-။
import java.util.*;
interface Table {}
Type Parameter ကiu eရ$သ+$တ-6 eနရ+မH+ T extends Table လiu eရ$သ+$ထ+$တ-6 အတ&က# Repository ကiu
အသuB$Cပueရ$သ+$တ-6 eနရ+မH+ Table န-9 IS - A Relationship Qiတ-6 Type eတ&ကiuပ- အသuB$Cပuလiuရeတ+6မH+ Cဖစ#ပ3
တယ#။
အထက#ပ3အတiuင#$ Upper Bounded ကiu eရ$သ+$လiuက#တ-6 အတ&က# Table Interface ကiu Implement လuပ#ထ+$
တ-6 Category, Item, Sale န-9 SaleDetails Class eတ&ကiuသ+ Repository န-9တ&-ဖက# အသuB$Cပuလiuရeတ+6မH+ Cဖစ#ပ3
တယ#။ Table မဟuတ#တ-6 အCခ+$ Class eတ&ကiu eရ$သ+$မယ#ဆiuရင#eတ+6 Compile Time မH+တင# Error ကiu Cဖစ#
eပ2eစမH+ Cဖစ#ပ3တယ#။ ဒ?လiuနည#$န-9 Upper Bounded ကiu အသuB$CပuKပ?$ အCမင#6ဆuB$အသuB$CပuAiuင#တ-6 Type ကiu
သတ#မHတ#eပ$Aiuင#မH+ Cဖစ#ပ3တယ#။
class Container<T> {
T data;
public T getData() {
return data;
}
}
// After Java SE 7
Container<String> c2 = new Container<>();
}
Reference Variable ကiu Declare လuပ#တ-6eနရ+မH+ Type ကiu သတ#မHတ#eပ$ရမH+ Cဖစ#ပ3တယ#။ Object eဆ+က#
တ-6eနရ+မH+ ဆiuရင#eတ+6 Java SE 7 မတiuင#ခင#တuန#$ကeတ+6 Reference Variable မH+ သတ#မHတ#ခ-6တ-6 Type ကiu
Cပန#Kပ?$ eရ$သ+$eနရပ3တယ#။ ဒ3eပမ-6 Java SE 7 ကiueရ+က#တ-6အခ3မH+ Diamond ဆiuတ-6 eရ$သ+$ပuBအသစ#
eပ2eပ3က#လ+Kပ?$ Constructor ကiu eခ2တ-6eနရ+မH+ Type ကiu eရ$စရ+မလiuပ- <> လiu eရ$သ+$Aiuင#လ+ပ3တယ#။
Wildcards
Generics Type Variable eတ&ကiueရ$သ+$တ-6 eနရ+မH+ Type eတ&ကiu သတ#မHတ#လiu မရAiuင#eသ$ဘO$ဆiuရင#
Wildcard Keyword Cဖစ#တ-6 ? ကiu အသuB$CပuAiuင#ပ3တယ#။ Object eဆ+က#တ+ကeတ+6 အသuB$Cပuမည#6 Type ကiu eပ$
Kပ?$ တည#eဆ+က#လiuရAiuင#သလiu Java 7 ရ-I Diamond ပuBစBန-9လ- တည#eဆ+က#လiu ရAiuင#ပ3တယ#။
eန+က#Kပ?$ Wildcard န-9 eရ$သ+$ထ+$တ-6 Generics Type Reference eတ&ဟ+ Type ကiuမသiတ-6 အတ&က# Set
လuပ#တ-6eနရ+မH+န-9 Get လuပ#တ-6eနရ+မH+ ဘ+ Type Cဖစ#eနတယ#ဆiuတ+ကiuလ- ခ&-Cခ+$သiAiuင#မH+ မဟuတ#ပ3ဘO$။
// compile error
String s = c.getData(); Error
}
Bounded in Wildcards
Wildcard ကiueရ$သ+$တ-6eနရ+မH+လ- Bounded Type eတ&ကiu eရ$သ+$အသuB$CပuAiuင#ပ3တယ#။ Wildcard eတ&ရ-I
eန+က#မH+ extends ကiu eရ$Kပ?$ Upper Bounded ကiu eရ$သ+$Aiuင#သလiu super ကiu eရ$Kပ?$ Lower Bounded eတ&
ကiu eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
class A {}
class B extends A {}
class C extends B {}
class Container<T> {
T data;
public T getData() {
return data;
}
}
အထက#ပ3အတiuင#$ Class A ကiu Class B က Extends လuပ#ထ+$Kပ?$ Class B ကiu Class C က Extends လuပ#ထ+$
ပ3တယ#။ Kပ?$eတ+6 Generics ကiu အသuB$Cပuထ+$တ-6 Container Class Qiပ3တယ#။
Generics Type eတ&ကiu Declare လuပ#တ-6 eနရ+မH+ Wildcard ကiu အသuB$CပuAiuင#Kပ?$ extends keyword ကiu
အသuB$CပuKပ?$ Upper Bound eတ&ကiu သတ#မHတ#Aiuင#ပ3တယ#။
ဒ?လiuပ- useUpper() method ထ-မH+ container ကeနတဆင#6 getData() method ကiu Cပန#eခ2သuB$တ-6အခ3မH+လ-
Type B ကiu Cပန#လည#ရQiမH+ Cဖစ#ပ3တယ#။ တဖန# B ကiu အစ+$ထiu$Kပ?$ အသuB$CပuAiuင#တ-6 A အeနန-9လ- လက#ခB ရယOAiuင#
မH+ Cဖစ#ပ3တယ#။ Wildcard Upper Bounded ကiu အသuB$Cပuတ-6eနရ+မH+ မရတ+eတ&လ-တယ#။
ပထမအခGက#ကeတ+6 Upper Bounded Wildcard ကiu အသuB$Cပuထ+$တ-6 Reference ကeန Type eတ&ကiu
Return အeနန-9 ရယOတ-6 အခ3မH+ Bounded လuပ#ထ+$တ-6 Type ကiuသ+ ရယOAiuင#မH+ Cဖစ#ပ3တယ#။ Sub Type eတ&ကiu
eတ+6 Return အeနန-9 လက#ခBAiuင#မH+ မဟuတ#ပ3ဘO$။ container.getData() ရ-I တန#ဖiu$ကiu C မH+ အစ+$ထiu$လiuမရပ3
ဘO$။ B န-9 A အeနန-9ပ-လက#ခBAiuင#မH+ Cဖစ#ပ3တယ#။
ဒuတiယ အခGက#ကeတ+6 Upper Bounded Wildcard ကiu အသuB$Cပuထ+$တ-6 Reference ကeန တန#ဖiu$eတ&ကiu Set
လuပ#eပ$လiu မရAiuင#ပ3ဘO$။ contaiener.setData() method ကeန ဘယ#လiu Type မGiu$ကiuမH Set လuပ#Aiuင#မH+ မဟuတ#
ပ3ဘO$။ Upper Bounded Wildcard ရ-I Reference eတ&ဟ+ တန#ဖiu$eတ&ကiu ထuတ#ယOတ-6 eနရ+မH+ပ- အသuB$CပuAiuင#မH+
Cဖစ#ပ3တယ#။
useLower(aContainer);
useLower(bContainer);
}
အထက#ပ3 နမOန+ထ-က useLower() method ရ-I Parameter မH+ Container<? super B> လiueရ$သ+$ထ+$တ-6
အတ&က# Lower Bounded ကiu အသuB$Cပuထ+$တ+ပ3။ အ-6ဒ?အတ&က# useLower() method ကiu အသuB$Cပuတ-6 eနရ+မH+
B Type ကiu အသuB$Cပuထ+$တ-6 Container န-9 B ရ-I Super Type eတ&ကiu အသuB$Cပuထ+$တ-6 Container eတ&ကiu
အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ B ရ-I Sub Type Cဖစ#တ-6 A ရ-I Container eတ&ကiu အသuB$Cပuလiu ရeတ+6မH+ မဟuတ#ပ3ဘO$။
တဖန# Lower Bounded Wildcard ကiu အသuB$Cပuထ+$တ-6 Reference eတ&ကeနလ- Input eတ&ကiuပ- လက#ခBAiuင#မH+
Cဖစ#Kပ?$ Output eတ&ကiueတ+6 သတ#မHတ#eပ$Aiuင#မH+ မဟuတ#eတ+6ပ3ဘO$။ Set လuပ#တ-6eနရ+မH+လ- B Type အeနန-9
အသuB$CပuAiuင#တ-6 Type eတ&ကiuသ+ Set လuပ#eပ$Aiuင#မH+ Cဖစ#ပ3တယ#။ အ-6ဒ?အတ&က# B န-9 C Type eတ&ကiueတ+6 Set
လuပ#Aiuင#မH+ Cဖစ#Kပ?$ B ရ-I Super Cဖစ#တ-6 A ကiueတ+6 Set လuပ#လiu မရAiuင#ပ3ဘO$။ Lower Bounded Wildcard ကiu
အသuB$Cပuထ+$တ-6 Reference eတ&ကeန Getter eတ&ကeန Type ကiuသတ#မHတ#eပ$လiu မရeတ+6တ-6 အတ&က#
လက#ခBမယ#ဆiuရင#eတ+6 Object အeနန-9ပ- လက#ခBAiuင#မH+ Cဖစ#ပ3တယ#။
Learning Java 189 မင#$လ&င#
Java Developer Class
အထက#eဖ2Cပပ3 ပuBအတiuင#$ B က A ကiu Extends လuပ#Kပ?$ C က A ကiu Extends လuပ#ထ+$တ-6 အတ&က# B န-9 C ကiu A
အeနန-9 အသuB$CပuAiuင#သလiu C ကiuလ- B အeနန-9 အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
ဒ3eပမ-6 A Type eတ&ကiu အသuB$Cပuထ+$တ-6 Box ရ-Ieနရ+မH+ B Type ကiu အသuB$Cပuထ+$တ-6 Container ကiu eတ+6
အစ+$ထiu$လiu ရAiuင#မH+ မဟuတ#ပ3ဘO$။
Wildcard ကiu အသuB$Cပuထ+$တ-6 Container eနရ+မH+ မည#သည#6 Type မGiu$ကiu အသuB$Cပuထ+$တ-6 Container Object
ကiu အစ+$ထiu$အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ တဖန# Upper Bounded Wildcard ကiu အသuB$Cပuထ+$တ-6 Container ရ-I
eနရ+မH+ Bounded လuပ#ထ+$တ-6 Type န-9 သbရ-I Sub Type eတ&ကiu အသuB$Cပuထ+$တ-6 Container eတ&ကiu အစ+$ထiu$
အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ ဒ?လiuပ- Lower Bounded Wildcard ကiu အသuB$CပuKပ?$ eရ$သ+$ထ+$တ-6 Container ရ-I
eနရ+မH+ Bounded Type န-9 သbရ-I Super Type eတ&ကiu အသuB$Cပuထ+$တ-6 Container eတ&ကiu အသuB$CပuAiuင#မH+ Cဖစ#
ပ3တယ#။
public T getData() {
return data;
}
}
အထက#ပ3 Code eတ&ကiu Compile လuပ#လiuရလ+တ-6 Class eတ&ကiu Decompile လuပ#Fကည#6တ-6အခ3မH+ eအ+က#ပ3
အတiuင#$ eတ&JQiရမH+ Cဖစ#ပ3တယ#။
Object data;
public Container(){}
Container Class မH+eရ$သ+$ထ+$တ-6 Type Parameter eတ&ဟ+ Compile လuပ#လiuရလ+တ-6 Class eတ&မH+ ပ3မ
လ+eတ+6သလiu Type Parameter eတ&ရ-I eနရ+မH+လ- Object eတ& အစ+$ထiu$ဝင#eရ+က#သ&+$တ+ကiu eတ&Jရပ3
တယ#။ ဒ3ကiu Fကည#6Cခင#$အ+$Cဖင#6 Generics ဟ+ Compile Time မH+ စစ#eဆ$eပ$eနတယ#ဆiuတ+ကiu သiCမင#Aiuင#ပ3
တယ#။ Compile လuပ#လiuက#တ-6 အခ3မH+eတ+6 နဂiuမOလ Type eတ&အCဖစ#Cပန#eရ+က#သ&+$တ+ကiu eတ&Jရပ3တယ#။
public T getData() {
return data;
}
}
အထက#ပ3နမOန+မH+eတ+6 Container Class ရ-I Type Parameter ကiu <T extends Number> လiueရ$သ+$ထ+$
တ-6 အတ&က# Number န-9 Number ရ-I Sub Class eတ&ကiu Type Parameter eတ&eနရ+မH+ အစ+$ထiu$အသuB$Cပuလiu
ရမH+ Cဖစ#ပ3တယ#။
public Container() {}
Reverse Engineering န-9 Compile လuပ#လiuရလ+တ-6 Class eတ&ကiu Decompile လuပ#Fကည#6တ-6 အခ3မH+eတ+6
Type Parameter eတ&ဟ+ Bounded လuပ#ထ+$တ-6 Type Cဖစ#တ-6 Number eတ&အCဖစ#eCပ+င#$လ-သ&+$တ+ကiu eတ&J
ရမH+ Cဖစ#ပ3တယ#။
ဒ3ကiu Fကည#6Cခင#$အ+$Cဖင#6 Type Erasure ဟ+ Type Parameter eတ&ကiu Compile လuပ#တ-6အခ3မH+ Upper
Bounded န-9 eရ$သ+$ထ+$ရင# Bounded လuပ#ထ+$တ-6 Type အCဖစ#eCပ+င#$eပ$Kပ?$ Bounded မလuပ#ထ+$ဘO$ဆiuပ3
က အCမင#6ဆuB$ Type Cဖစ#တ-6 Object အCဖစ#eCပ+င#$eပ$တယ#ဆiuတ+ကiu eတ&JရမH+ Cဖစ#ပ3တယ#။
}
}
အထက#ပ3နမOန+မH+eတ+6 Generics Method တစ#ခuန-9 Bounded Type ကiu အသuB$Cပuတ-6 Generics Method တစ#ခu
တiuကiu eရ$သ+$ထ+$ပ3တယ#။ Reverse Engineering ကiu အသuB$CပuKပ?$ Type Erasure က ဘယ#လiu အလuပ#လuပ#
သ&+$တယ#ဆiuတ+ကiu eလ6လ+သ&+$Fကရeအ+င#။
public GenericsMethodDemo() {
}
Generics Method မH+လ- Type Erasure ဟ+ Generics Type eတ&တuန#$ကလiuပ- Bounded လuပ#ထ+$တ-6 Type
Parameter eတ&ကiu Bounded Type အCဖစ#eCပ+င#$eပ$Kပ?$၊ Bounded မလuပ#ထ+$ရင#eတ+6 Object အCဖစ#eCပ+င#$
eပ$တ+ကiu eတ&JရမH+ Cဖစ#ပ3တယ#။
Bridge Method
Generics Type မဟuတ#တ-6 Type eတ&ကeန Generics Type eတ&ကiu Extends လuပ#တ-6အခ3မGiu$မH+ Java
Compiler ကeန Type Erasure Process AHင#6အတOCဖည#6စ&က#eပ$ရတ-6 Synthetic Method eတ&Qiပ3တယ#။ အ-6ဒ?
Method မGiu$ကiu Bridge Method လiueခ2ပ3တယ#။
@Override
public void add(Integer i) {
this.data = i;
}
@Override
public Integer get() {
return data;
}
}
အထက#ပ3နမOန+ထ-မH+ Generics Type Cဖစ#တ-6 Box<T> Interface ကiu Generics Type မဟuတ#တ-6 IntegerBox
ကeန Implement လuပ#ထ+$ပ3တယ#။ Type Erasure Process eFက+င#6ရလ+တ-6 Box Interface ကiu eလ6လ+Fက
ည#6Fကရeအ+င#။
Type Parameter Cဖစ#တ-6 T eနရ+ကiu Object eတ&က အစ+$ထiu$သ&+$တ+ကiu eတ&Jရပ3မယ#။ add() method ရ-I
Parameter ဟ+ Object Cဖစ#သ&+$သလiu get() method ရ-I Return Type ဟ+လ- Object Cဖစ#သ&+$ပ3တယ#။
Box Interface န-9 Sub Class Cဖစ#တ-6 IntegerBox Class တiuရ-I Method eတ&ကiu Override Cဖစ#သလ+$ မCဖစ#ဘO$
လ+$ဆiuတ-6 အCမင#န-9 Fကည#6Fကရeအ+င#။ မHန#ကန#တ-6 Override Rule မH+ Super Type ထ-မH+ပ3တ-6 Method န-9 Sub
Type ထ-မH+ ပ3တ-6 Method eတ&ရ-I Method Signature (Method Name & Parameter List) ဟ+ အတiအကGတO
ရမယ#လiuပ3Qiပ3တယ#။ ဒ3eပမ-6 Box Interface ရ-I add() method ရ-I Parameter Type ဟ+ Object Cဖစ#Kပ?$
IntegerBox မH+eတ+6 Parameter Type ဟ+ Integer Cဖစ#eနပ3တယ#။ Parameter Type eတ&မတOeတ+6တ-6
အတ&က# Override Rule ကiu eဖ+က#ဖGက#သ&+$ပ3Kပ?။
IntegerBox() {}
}
public volatile Object get() {
return get();
}
Bridge Method
public volatile void add(Object obj) {
add((Integer)obj);
}
}
Object ကiu return Cပန#တ-6 get() method န-9 Object ကiu Parameter အeနန-9 လက#ခBထ+$တ-6 add() method eတ&
ဟ+ Compiler ကeန Cဖည#6စ&က#eပ$တ-6 Bridge Method eတ& Cဖစ#Fကပ3တယ#။
Bridge Method Cဖစ#တ-6 add() Method ကeတ+6 Super Type ထ-က Method န-9 Override လuပ#တ-6 Method တiu
ရ-I Method Signature ကiuတOeအ+င# Cဖည#6eပ$ရတ-6 bridge method Cဖစ#ပ3တယ#။ get() method ကeတ+6 Java 5
မH+ စတင#ပ3ဝင#လ+ခ-6တ-6 Covariant Return eFက+င#6Cဖစ#ပ3တယ#။ Java 5 မတiuင#ခင#က Override Rule မH+ Super
Class မH+ Return Cပန#ထ+$တ-6 အတiuင#$ Override လuပ#တ-6 Method ကeန Return မCပန#လiu မရပ3ဘO$။ ဒ?လiuမH
မဟuတ#ရင# Override မCဖစ#eCမ+က#ပ3ဘO$။
Java SE 5 အeရ+က#မH+ Covariant Return ဆiuတ+ကiu Cဖည#6စ&က#လ+Kပ?$ Super Type ထ-မH+ Return Cပန#တ-6
Type ရ-I Sub Type eတ&ကiuလ- Override Method eတ&ကeန Return Cပန#လiuရလ+ပ3တယ#။ ဒ?လiu Cဖစ#ရပ#မGiu$ကiu
Covariant Return လiueခ2ပ3တယ#။ အထက#eဖ2Cပပ3 နမOန+ထ-မH+ပ3တ-6 Object ကiu Return Cပန#eနတ-6 get()
Method ဟ+ Covariant Return ကiu Cဖစ#eCမ+က#eစဖiu Compiler ကeန Cဖည#6စ&က#eပ$ထ+$တ-6 Bridge Method
တစ#ခu Cဖစ#ပ3တယ#။
class Box<T> {
T data;
Box(T t) {
data = t;
}
void setData(T t) {
data = t;
}
}
အထက#ပ3နမOန+ထ-မH+eတ+6 Generics Type Cဖစ#တ-6 Box<T> ကiu IntBox က Extends လuပ#ထ+$ပ3တယ#။ ရလ+
တ-6 IntBox Class ကiu Decompile လuပ#Fကည#6တ-6အခ3 eအ+က#ပ3အတiuင#$ ကuဒ#eတ&ကiu Generate လuပ#သ&+$ပ3
တယ#။
Generate လuပ#လ+တ-6 ကuဒ#ထ-မH+ Object ကiu Parameter အeနန-9 လက#ခBတ-6 setData() method တစ#ခuကiu
Bridge အeနန-9 Generate လuပ#သ&+$တ+ကiu eတ&Jရပ3တယ#။
အထက#ပ3 changeData() method ဟ+ Box<T> ရ-I Raw Type ကiu Parameter အeနန-9 ရယOထ+$ပ3တယ#။ ဒ?လiu
eရ$သ+$ထ+$ရင# Compiler ကeန Raw Types eတ&ကiu သuB$ထ+$ပ3တယ#ဆiuKပ?$ Warning ကiu ထuတ#eပ$ပ3မယ#။
အလ+$တOပ- box.setData() Method ကiu eရ$သ+$တ-6eနရ+မH+လ- Compiler ကeန Check မလuပ#Aiuင#eတ+6ဘO$ဆiu
Kပ?$ Unchecked Called Warning ကiu ထuတ#eပ$ပ3မယ#။ ဒ3eပမ-6 Compile Time Exception eတ+6မCဖစ#သ&+$ပ3
ဘO$။
main() method ထ-မH+eတ+6 IntBox Type box ကiu Object eဆ+က#ထ+$ပ3တယ#။ Kပ?$eတ+6 changeData()
method ရ-I Parameter အeနန-9 IntBox Type Variable ကiu eပ$လiuက#ပ3တယ#။ ဒ3eပမ-6 changeData() method
ထ-က သiတ+ကeတ+6 box ရ-I Type ဟ+ Box ပ-Cဖစ#ပ3တယ#။ Box ဟ+ Raw Type Cဖစ#တ-6 အတ&က# setData() ရ-I
Parameter ဟ+ Object Cဖစ#ပ3မယ#။
ဒ? Bridge Method ထ-မH+ Cပဿန+က စeတ+6တ+ပ3ပ-။ ဒ? Method ထ-မH+ (Integer)obj ဆiuKပ?$ Object ကiu Integer
အeနန-9 Type Cast လuပ#eနပ3တယ#။ Parameter အeနန-9 ရQiလ+တ-6 “Hello” ကiu Integer အCဖစ# Type Cast လuပ#
ဖiuPကiu$စ+$တ-6 အခ3မH+ ClassCastException ကiuCဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
class Box<T> {
T data;
Box(T t) {
data = t;
}
}
BoxDemo Class ရ-I Main Method ထ-မH+ Primitive Type Cဖစ#တ-6 int ကiu Parameter အeနန-9 ထ+$Kပ?$
Compile လuပ#Fကည#6ပ3မယ#။
eအ+က#ပ3အတiuင#$ Compile Error ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
Generics Type eတ&ရ-I Type Parameter eနရ+မH+ Reference Type ကiuသ+ လက#ခBတ-6 အတ&က# Primitive Cဖစ#
ဒ?လiuပ- Generics Type eတ&မH+ အသuB$Cပueနတ-6 Type Parameter eတ&ကeန new Keyword ကiu အသuB$CပuKပ?$
Object ကiu မတည#eဆ+က#Aiuင#ပ3ဘO$။ ဆiuFကပ3စiu၊ Object eတ&ကiu ထuတ#eပ$Aiuင#တ-6 Generics Method တစ#ခuကiu
eရ$FကKပ?ဆiuပ3စiu။
အထက#ပ3အတiuင#$ T Object ကiu လiuခGင#တ-6 အတ&က# new T() ဆiuKပ?$ eရ$မiမယ#ထင#ပ3တယ#။ ဒ3eပမ-6 မရAiuင#ပ3ဘO$။
Compile လuပ#Fကည#6တ-6 အခ3မH+ eအ+က#ပ3အတiuင#$ Compile Error ကiu Cဖစ#eပ2eစပ3တယ#။
လiuခGင#တ-6 Type က Class Cဖစ#Kပ?$ တကယ#သuB$ထ+$တ+က Type Parameter T Cဖစ#တယ#ဆiuKပ?$ Compile Time
Error ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။ ဟuတ#ပ3တယ# Java မH+က ဘ+ Class မHန#$မသiရင# Object eဆ+က#လiu မရ
Aiuင#ပ3ဘO$။ Type Parameter Cဖစ#တ-6 T eနရ+မH+ ဘယ#လiu Class ကeရ+က#လ+မယ#ဆiuတ+ကiu မခန#9မHန#$Aiuင#တ-6
အတ&က# Type Parameter ရ-I Construtor ကiu eခ2Kပ?$ Object eဆ+က#လiu မရAiuင#ပ3ဘO$။
ဒ3eပမ-6 အထက#ပ3အတiuင#$ Class<T> ကiu သiမယ#ဆiuရင#eတ+6 အ-6ဒ? Class ရ-I newInstance() method ကiuအသuB$Cပu
Kပ?$ Object eဆ+က#လiuရမH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 အ-6ဒ? Type ကလ- Object eဆ+က#လiuရတ-6 Type Cဖစ#eနဖiuလiuအပ#
သလiu Argument မပ3တ-6 Default Constructor တစ#ခiuQieနဖiuလ- လiuအပ#ပ3တယ#။ Abstract Class eတ&၊ Interface
eတ&န-9 Enum eတ&ဆiuရင#eတ+6 ဒ?ပuBစBန-9လ- Object ကiu တည#eဆ+က#လiuရမH+မဟuတ#ပ3ဘO$။ Concrete Class Cဖစ#eပ
မ-6 Default Constructor မQiCပန#ရင#လ- ဒ?ပuBစBန-9 Object eဆ+က#လiu မရAiuင#ပ3ဘO$။
အထက#ပ3အတiuင#$ Generics Type Class တစ#ခuကiu eရ$သ+$Kပ?$ Type Parameter Cဖစ#တ-6 T ကiu Static
Variable ရ-I Type အCဖစ# အသuB$CပuFကည#6ပ3မယ#။ အထက#ပ3 ကuဒ#ကiu Compile လuပ#Fကည#6တ-6 အခ3မH+ က&န#ပiuင#$လuပ#
လiu ရမH+ မဟuတ#ပ3ဘO$။
Type Parameter T ကiu Static Context တစ#ခuကeန Reference လuပ#လလiuမရဘO$ဆiuKပ?$ Compile Error ကiu
Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။ တကယ#တမ#$ကGeတ+6 Static Variable eတ&ဟ+ Class Loader ကeန Class ကiu
JVM Memory eပ2ကiu ဆ&-တင#လiuက#ကထ-က သတ#မHတ# ထ+$ဖiuလiuအပ#ပ3တယ#။ Kပ?$eတ+6 Static Variable eတ&ဟ+
JVM Memory eပ2မH+ တစ#ခuထ-eသ+ Variable eတ&Cဖစ#eနပ3တယ#။ ဒ36eFက+င#6 Type Parameter ကiu Type
အမGiu$မGiu$န-9 လ+သတ#မHတ#eနရင# Static Variable ကiu ဘယ# Type န-9 သတ#မHတ#ရမလ- ဆiuတ+ကiu eဝခ&-လiu ရမH+
မဟuတ#eတ+6ပ3ဘO$။
Generics Type eတ&ကiu Compile လuပ#တ-6 အခ3မH+ Type Erasure eFက+င#6 Generics Type eတ&ဟ+ Raw
Type eတ&Cဖစ#သ&+$Fကပ3တယ#။ Compile လuပ#Kပ?$တ-6 အခ3မH+ရလ+တ-6 Raw Type ဟ+ တစ#ခuထ-Cဖစ#တ-6 အတ&က#
ခ&-Cခ+$လiu မရAiuင#eတ+6ပ3ဘO$။ ဒ36eFက+င#6 Generis Type eတ&မH+ Casting ကiuလ- eရ$သ+$လiu မရAiuင#တ+ Cဖစ#ပ3တယ#။
checkType(b1);
checkType(b2);
}
အထက#ပ3 အတiuင#$ eရ$သ+$Kပ?$ Run Fကည#6မယ#ဆiuရင# Box<String> eက+ Box<Integer> ပ3 တOည?တ-6 ရလဒ#ကiu
ရမH+ Cဖစဒ#ပ3တယ#။ အထက#မH+ eဖ2Cပထ+$တ-6 အတiuင#$ Generics Type eတ&ကiu Compile လuပ#Kပ?$တ-6 အခ3မH+
အ+$လuB$ဟ+ Object ကiu အသuB$Cပuတ-6 Raw Type eတ& Cဖစ#သ&+$မH+ Cဖစ#တ-6 အတ&က# အ+$လuB$ရ-I Type ဟ+ အတOတO
ပ-လiu သတ#မHတ#သ&+$တ+ Cဖစ#ပ3တယ#။ ရသ+ရတ+ပ3 တကယ#တမ#$ကGeတ+6 ဘ+မH အဓiပW3ယ#မQiပ3ဘO$။
class Box<T> {}
Generics Type eတ&ရ-I Sub Type eတ&အeFက+င#$ကiu eလ6လ+ခ-6တuန#$က Type Parameter Fက+$မH+ Qiတ-6 IS- A
Relationship ဟ+ Generics Type eတ&Fက+$ကiu သယ#မသ&+$Aiuင#ဘO$ဆiuတ+ကiu eလ6လ+ခ-6ပ3တယ#။ ဆiuFကပ3စiu
Integer ဟ+ Number ရ-I Sub Type Cဖစ#eပမ-6 Box<Integer> ဟ+ Box<Number> ရ-I Sub Type Cဖစ#မလ+ပ3
ဘO$။ ဒ36eFက+င#6 Is - A Relationshp မQiတ-6 eနရ+မH+ Type Casting ကiu အသuB$Cပueနတ-6 အတ&က# Compile Time
Error ကiu Cဖစ#eပ2eစတ+ Cဖစ#ပ3တယ#။
ဒ?လiuပ- Generics Type အခGင#$ခGင#$ Inheritance Qiတ-6 eနရ+eတ&မH+ ဆiuရင#eတ+6 Type Casting ကiu အသuB$Cပuလiuရ
မH+ Cဖစ#ပ3တယ#။ ဒ3eFက+င#6 Container<Integer> b4 = (Container<Integer>)b3; ဆiuKပ?$ Casting ကiu eရ$သ+$
လiu ရeနတ+ Cဖစ#ပ3တယ#။
အထက#ပ3 Class ကiu Compile လuပ#Fကည#6တ-6 အခ3မH+ Generics Type eတ&ဟ+ Throwable ကiu Extends လuပ#
လiuမရဘO$ဆiuKပ?$ Compile Error ကiu Cဖစ#eစပ3တယ#။ Throwable ကiu Extends လuပ#လiuမရဘO$ဆiueတ+6မH Generics
Class eတ&ဟ+ Exception အeနန-9 eရ$သ+$လiuရမH+ မဟuတ#eတ+6ပ3ဘO$။
import java.util.*;
Overload ဆiuတ+က Class တစ#ခuအတ&င#$မH+ Method Name တOKပ?$ Argument List မတOတ-6 Method eတ&ကiu
ထပ#ခ3 ထပ#ခ3eရ$သ+$Cခင#$ကiu ဆiuလiuပ3တယ#။ အထက#ပ3 ကuဒ#eတ&ထ-မH+ showList() method AHစ#ခuကiu eရ$သ+$
ထ+$Kပ?$ Generics Type Cဖစ#တ-6 List<Stirng> န-9 List<Date> တiuကiueရ$သ+$ထ+$ပ3တယ#။ Parameter List မတO
ဘO$လiu Cမင#ရပ3မယ#။ ဒ3eပမ-6 Compile လuပ#Kပ?$ရလ+တ-6 Raw Type eတ&ဟ+ အတOတOCဖစ#တ-6 အတ&က# ဒuတiယ
Method ကiu Compile လuပ#တ-6 အခ3မH+ Compile Error ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
အ-6ဒ?လiu လiuအပ#ခGက#eတ&မH+ ကiuယ#6ဘ+သ+ကiuယ# Low Level အထi ဝင#eရ$စရ+မလiueအ+င# Java SE မH+ Standard
API eတ&ကiu Cပင#ဆင#eပ$ထ+$ပ3တယ#။ Java SE 8 မH+တင# JRE ထ-မH+ Class eပ3င#$ ၄၂၄၀ ခu eရ$သ+$Cပင#ဆင#
eပ$ထ+$ပ3တယ#။ တစ#ခGiu Class eတ&ကeတ+6 API eတ&ရ-I အတ&င#$ပiuင#$မH+သ+ အသuB$Cပuတ-6 Class eတ& Cဖစ#FကKပ?$၊
တစ#ခGiuကGeတ+6လ- Framework eရ$သ+$သOeတ& အသuB$CပuAiuင#တ-6 Class eတ&Cဖစ#FကKပ?$၊ က\န#eတ+#တiuလiu
Application Developer eတ&မH+ အသuB$Cပuသင#6တ-6 API eတ&ဆiuKပ?$QiAiuင#ပ3တယ#။
Exceptions Handling
Java မH+eတ+6 Exception ဆiuတ-6 Mechanism ကiu အသuB$CပuKပ?$ Error အCဖစ#မG+$တ-6 eနရ+eတ&ကiu Pကiuတင#
Cပင#ဆင#ထ+$Aiuင#eအ+င#န-9၊ Error eတ&Cဖစ#လ+တ-6အခ3မH+လ- Handle လuပ#Aiuင#eအ+င# eဆ+င#ရ&က#ထ+$ပ3တယ#။
Application တစ#ခuရ-I တန#ဖiu$ဟ+ ဘယ#eလ+က#အထiမHန#ကန#မ[ကiuအ+မခBAiuင#သလ-၊ ဘယ#eလ+က#အထi အသuB$Cပuတ-6
သOကiu အစT#eCပeCပန-9 eဆ+င#ရ&က#နiင#eအ+င# စ?စT#ထ+$Aiuင#သလ- ဆiuတ-6 အeပ2မH+ မOတည#eနပ3တယ#။ ဒ36eFက+င#6 မiမi
ရ-I Application ကiu မHန#ကန#မ[Qieအ+င# ဘယ#လiuလuပ#မလ-န-9 အမH+$eတ&န-9 FကuBeတ&Jတ-6eနရ+မH+ ဘယ#eလ+က#အထi
အသuB$CပuသOအတ&က# န+$လည#လ&ယ#eအ+င# eဆ+င#ရ&က#eပ$ရမလ- ဆiuတ+ကiu Application ကiu စတင#eရ$သ+$ကထ-
က Pကiuတင#Cပင#ဆင#ထ+$ဖiuလiuအပ#ပ3တယ#။
What is Exception?
Method Invocation eတ&ကiu လuပ#eဆ+င#eနစT# eမZ+#Jလင#6မထ+$တ-6 အမH+$တစ#ခuခuန-9 eတ&JFကuBတ-6အခ3 Java
Runtime ဟ+ ဘ+ဆက#လuပ#ရမHန#$ eဝခ&-မရeတ+6ပ- ကGန#တ+eတ&ကiu ဆက#မလuပ#eတ+6ပ- Event Object တစ#မGiu$ကiu
Create လuပ#က+ Runtime ကiu Cပန#eပ$လiuက#ပ3တယ#။
အ-6ဒ? Event Object eတ&ဟ+ Exception eတ&Cဖစ#Fကပ3တယ#။ Exception Object ထ-မH+ Cဖစ#eပ2eစတ-6 Error န-9
ပတ#သက#တ-6 အခGက#အလက#eတ&၊ အ-6ဒ? Exception ရ-I အမGiu$အစ+$န-9 အ-6ဒ? Exception ကiu Cဖစ#eပ2eနစT#Qieနတ-6
Program ရ-I State eတ&ကiu eဖ2Cပeပ$Aiuင#တ-6 အခGက#အလက#eတ&ကiu eဖ2Cပထ+$ပ3တယ#။
က\န#eတ+#တiu eရ$သ+$ထ+$တ-6 Application eတ&ထ-မH+ Exception Cဖစ#လ+Kပ?ဆiuရင# အ-6ဒ? Exception Object ကiu
Fကည#6Cခင#$အ+$Cဖင#6၊ ဘ+eFက+င#6 ဘယ#eနရ+မH+ ဘယ#လiuအမH+$မGiu$ကiu Cဖစ#eစတယ#ဆiuတ+ကiu သiQieစAiuင#မH+ Cဖစ#ပ3
တယ#။ က\န#eတ+#တiu Java ကiu စတင#eလ6လ+Kပ?$ Java Program eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ မFက+ခဏဆiu
သလiu Exception eတ&န-9 eတ&JFကရမH+ Cဖစ#ပ3တယ#။ eရ$Kပ?$ Run လiuက#တ-6 Program မH+ Exception Cဖစ#သ&+$Kပ?ဆiu
ရင# စ+eတ&အမG+$Pက?$ထ&က#လ+တတ#ပ3တယ#။ Uuတ#တရက# အ-6ဒ?လiuအeနအထ+$န-9 FကuBeတ&Jတ-6 အခ3မH+ က\န#eတ+#တiu
eတ&ဟ+ Cပ+eလ+င#သ&+$Kပ?$ ဘ+လuပ#လiu လuပ#ရမHန#$မသiပ- Cဖစ#သ&+$တတ#ပ3တယ#။
ဆက#လက#Kပ?$ Java Runtime မH+ ဘယ#လiu Exception ကiu Cဖစ#ပ&3$eစKပ?$၊ အ-6ဒ? Exception ကiu Runtime မH+
ဘယ#လiu Handle လuပ#သ&+$တယ#ဆiuတ+ကiu eလ6လ+သ&+$Fကရeအ+င#။
Call Stacks
Program eတ&ကiu လuပ#eဆ+င#eနစT# Error Cဖစ#eပ2လ+Kပ?$ Exception Object ကiu Create လuပ#Kပ?$ Runtime ကiu
Cပန#eပ$တ+ကiu Exception ကiu Throw လuပ#တယ#လiu eခ2ဆiuပ3တယ#။
Java Application eတ&ကiu Run မယ#ဆiuရင# အKမ-တမ#$ Main Method ကeန စတင# အလuပ#လuပ#ခiuင#$ရမH+ Cဖစ#ပ3
တယ#။ Hospital မH+ Qiတ-6 eဆ$eတ&ကiu Cပန#Cပတ-6 Application ကiu eရ$eနFကတယ#ဆiuFကပ3စiu။ Hospital Object မH+
showAllMedicine() ဆiuတ-6 Method ကiu eရ$သ+$ထ+$ပ3မယ#။ Hospital ထ-မH+ MedicalBox ဆiuတ-6 Object ကiu
ပiuင#Kပ?$ အ-6ဒ? Object ထ-မH+ Medicine eတ&ကiu သiမ#$ထ+$ပ3မယ#။ အ-6ဒ? MedicalBox Object မH+eတ+6
getAllMedicine() ဆiuတ-6 Method ကiu ပiuင#ဆiuင#Kပ?$၊ Hospital ရ-I showAllMedicine() ကiu လuပ#ခiuင#$တ-6 အခ3မH+
Hospital က သOပiuင#တ-6 MedicalBox ရ-I getAllMedicine() ကiu အသuB$CပuKပ?$ ရလ+တ-6 Medicine eတ&ကiu Cပန#Cပeပ$
မH+ Cဖစ#ပ3တယ#။
အထက#ပ3အတiuင#$ Main Program ရ-I main() method ထ-ကeန Hospital Object ရ-I showAllMedicine() ကiu
လHမ#$eခ2ပ3မယ#။ အ-6ဒ?အခ3မH+ Hospital ရ-I showAllMedicine() Method ထ-ကeန MedicalBox Object ရ-I
getAllMedicine() ကiu ဆက#eခ2ပ3မယ#။ MedicalBox ရ-I getAllMedicine() Method ရ-I Return တန#ဖiu$Cဖစ#တ-6
Medicine List ကiu အသuB$CပuKပ?$ Hospital Object က သbရ-I ကiuယ#ပiuင# Method Cဖစ#တ-6 showAll() Method ကiu Cပန#
eခ2ပ3လiမ#6မယ#။ အ-6ဒ? လuပ#eဆ+င#မ[Kပ?$သ&+$တ-6 အခ3ကGမH Main Method ကiu Control ကiuCပန#eပ$မH+ Cဖစ#ပ3တယ#။
ဒ?လiuမGiu$ Main Method ကeန စKပ?$ အCခ+$eသ+ Method eတ&ကiu အဆင#6ဆင#6 Invoke လuပ#သ&+$တ+ကiu Call
Stack လiueခ2ဆiuပ3တယ#။
အ-6ဒ? Call Stack အတ&င#$ တစ#eနeနရ+မH+ Exception ကiu Cဖစ#eပ2eစခ-6ရင# Java Runtime ဟ+ e^ကiuဆက# မ
လuပ#eတ+6ပ-၊ Call Stack တစ#eလG+က# Cဖစ#eပ2လ+တ-6 Exception ကiu Handle လuပ#Aiuင#မည#6 Exception Handler
ကiu လiuက#Q+ပ3တယ#။ Handler ကiu eတ&Jခ-6ရင#eတ+6 အ-6ဒ? Handler ကiu Handle လuပ#ခiuင#$ပ3တယ#။ ဒ?လiuမGiu$ သင#6eတ+#
တ-6 Exception handler ကiueတ&JKပ?$ Handler ကeန Exception ကiu လက#လ&-ယOလiuက#တ+ကiueတ+6 Exception ကiu
Catch လuပ#တယ#လiueခ2ပ3တယ#။
မeတ&Jခ-6ဘO$ဆiuပ3က Call Stack အတiuင#$ Main Method ကiu eရ+က#တ-6အထi တဆင#6ခGင#$ Handler ကiu ဆက#Q+
သ&+$ပ3တယ#။ Call Stack ရ-I အစCဖစ#တ-6 Main Method ကiueရ+က#တ-6အထi Exception Handler ကiu မeတ&Jခ-6ဘO$
ဆiuပ3က Cဖစ#eပ2လ+တ-6 Exception အeFက+င#$ကiu Console eပ2မH+ eဖ2CပKပ?$ System ကiu Error Status န-9 Kပ?$ဆuB$
eစမH+ Cဖစ#ပ3တယ#။
class MedicalBox {
private List<String> medicines;
ဒ?eနရ+မH+ Exception ကiu Cဖစ#eပ2eစeအ+င# getAllMedicine() Method ထ-မH+ Null တန#ဖiu$ရ-Iတ-6 medicines ကiu
ArrayList Constructor ရ-I parameter အeနန-9 အသuB$Cပuထ+$ပ3တယ#။ ဒ36eFက+င#6 ဒ?eနရ+ကiueရ+က#တ-6အခ3မH+ null
တန#ဖiu$Qiတ-6 medicines ကiu သ&+$သuB$မiတ-6 အတ&က# NullPointerException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
Learning Java 208 မင#$လ&င#
Java Developer Class
class Hospital {
Hospital() {
box = new MedicalBox();
}
အထက#ပ3 Class ကeတ+6 MedicalBox ကiu အသuB$Cပuမည#6 Hospital Class Cဖစ#ပ3တယ#။ Hospital ရ-I
showAllMedicine() method ထ-ကeန MedicalBox ရ-I getAllMedicine() ကiu Cပန#Kပ?$ Invoke လuပ#eနပ3တယ#။
အထက#ပ3 Class ကeတ+6 Program ကiu စတင#eစမည#6 MainProgram Class Cဖစ#ပ3တယ#။ main() method က
eနစKပ?$ Hospital ရ-I showAllMedicine() ကiu eခ2တယ#။ အ-6ဒ? Method ထ-ကeန ဆက#လက#Kပ?$ MedicalBox ရ-I
getAllMedicine() method ကiu eခ2ပ3မယ#။ အ-6ဒ? getAllMedicine() method ထ-မH+ ArrayList ရ-I Constructor
ကiuသuB$Cပu Object eဆ+က#တ-6eနရ+မH+ Exception ကiu Cဖစ#eပ2 eစမH+ Cဖစ#ပ3တယ#။
Constructor Invocation
showAllMedicine()
getAllMedicine()
MainProgram
MedicalBox
ArrayList
Hospital
main()
Call Stack တeလG+က#မH+ ဘ+ Exception Handler ကiu မeရ$သ+$ထ+$ခ-6တ-6 အတ&က# eန+က#ဆuB$ Main Thread
ကiu Kပ?$ဆuB$eစKပ?$ Exception ကiu ဘယ#လiu Cဖစ#ခ-6eFက+င#$ကiu eဖ2Cပeပ$eနတ+ပ- Cဖစ#ပ3တယ#။ Message ကiu Fကည#6
Cခင#$အ+$Cဖင#6 ArrayList ကiu Initialize လuပ#တ-6 eနရ+မH+ NullPointerException ကiu Cဖစ#eပ2eစခ-6eFက+င#$ကiu သiရ
Aiuင#ပ3တယ#။ Exception Cဖစ#eပ2ပuBအဆင#6ဆင#6ကiu Program ကiu စတင#ခ-6တ-6 eနရ+အထi တဆင#6Cခင#$ Line Number
AHင#6တက& eဖ2Cပeပ$eနတ+ကiu eတ&Jရပ3တယ#။
Types of Exception
Exception eတ&ကiu အeCခခBအ+$Cဖင#6 Checked Exception န-9 Unchecked Exception ဆiuKပ?$ခ&-Cခ+$Aiuင#ပ3တယ#။
Checked Exception eတ&ကeတ+6 ကuဒ#eရ$သ+$တ-6နရ+မH+ အမH+$မG+$တ-6အတ&က# Pကiuတင#စစ#eဆ$Kပ?$ ဘယ#လiu
Handle လuပ#မယ#ဆiuတ+ကiu ဆuB$Cဖတ#ဖiuလiuအပ#တ-6 Exception အမGiu$အစ+$eတ&Cဖစ#Fကပ3တယ#။ Unchecked
Exception eတ&ကeတ+6 အKမ-eတ+6မH+$တ+မဟuတ#ဘO$၊ ပတ#ဝန#$ကGင#eFက+င#6ဒ3မHမဟuတ# User Operation eFက+င#6
မH+$တ-6 အမH+$eတ&ဆiuရင#eတ+6 Unchecked Exception eတ&ကiu အသuB$Cပueလ6QiFကပ3တယ#။
✓ Exception
Checked Exception အမGiu$အစ+$Cဖစ#Kပ?$ Exception Class န-9 RuntimeException အမGiu$အစ+$မဟuတ#တ-6
Exception ရ-I Sub Class eတ&ဟ+ Exception eတ&Cဖစ#Fကပ3တယ#။ FileNotFoundException,
IOException န-9 SQLException တiuဟ+ ထင#Q+$တ-6 Checked Exception အမGiu$အစ+$eတ& Cဖစ#Fကပ3တယ#။
✓ RuntimeException
Unchecked Exception အမGiu$အစ+$တစ#မGiu$Cဖစ#Kပ?$ RuntimeException Class န-9 RuntimeException ရ-I
Sub Class eတ&အ+$လuB$ဟ+ Runtime Exception အမGiu$အစ+$eတ& Cဖစ#Fကပ3တယ#။
✓ Error
Unchecked Exception အမGiu$အစ+$တစ#မGiu$Cဖစ#Kပ?$ Application eတ&ကeန Catch လuပ#Kပ?$ Handle မလuပ#
သင#6တ-6 အမH+$မGiu$eတ&ကiu Error အeနန-9 eရ$သ+$ အသuB$Cပueလ6QiFကပ3တယ#။ Error Class န-9 Error eအ+က#
က Sub Class eတ&အ+$လuB$ဟ+ Error အမGiu$အစ+$eတ& Cဖစ#Fကပ3တယ#။ NoClassDefFoundError,
OutOfMemoryError န-9 StackOverflowError တiuဟ+ ထင#Q+$တ-6 Error eတ& Cဖစ#Fကပ3တယ#။ Error eတ&က
လ- Unchecked Exception အမGiu$အစ+$Cဖစ#ပ3တယ#။
Handling Exceptions
က\န#eတ+#တiu e^မH+ Java Runtime ကeန Method Invocation eတ&ရ-I Statement eတ&ကiu လuပ#eဆ+င#eနစT#
အeFက+င#$eFက+င#$eFက+င#6 ဆက#လuပ#လiuမရတ-6 အeနအထ+$န-9 FကuBeတ&ရတတ#ပ3တယ#။ အ-6ဒ?အခ3မGiu$မH+ Method
Invocation eတ&ကiu ဆက#မလuပ#eတ+6ပ- Event Object တစ#ခuကiu Create လuပ#Kပ?$ Runtime ကiu Cပန#eပ$လiuက#ပ3
တယ#။ ဒ3ကiu Exception ကiu Throw လuပ#တယ#လiueခ2လiuက#ပ3တယ#။
Runtime ကeန Cဖစ#eပ2လ+တ-6 Exception Object ကiu အမGiu$အစ+$အလiuက# Handle လuပ#Aiuင#မည#6 Handler eတ&
ကiu Call Stack eတ+က#eလG+က#လiuက#Q+Kပ?$ eတ&Jတ-6 အခ3မH+ အ-6ဒ? Handler ကiu Exception Object ကiu eပ$Kပ?$
Handle လuပ#ခiuင#$ပ3တယ#။ ဒ?လiu အCဖစ#အပGက#ကiu Exception ကiu Catch လuပ#တယ#လiu eခ2Cပန#တယ#။
တဖန# Checked Exception eတ&ကiu Throw လuပ#ထ+$တ-6 Method eတ& Constructor eတ&ကiu အသuB$Cပuမiတ-6အခ3
မGiu$မH+လ- Exception eတ&ကiu Handle လuပ#ဖiuCပင#ဆင#ထ+$ဖiuလiuအပ#ပ3တယ#။ ဒ?eနရ+မH+ Catch လuပ#Kပ?$ Handle
လuပ#မလ+$ လတ#တeလ+ Handle မလuပ#ပ- Throw လuပ#မလ+$ ဆiuတ+ကiu eရ&$ခGယ#ရeတ+6မH+ Cဖစ#ပ3တယ#။
Catching Exception
Exception eတ&ကiu Catch လuပ#ဖiuအတ&က# Statement eတ&ကiu Cပင#ဆင#ထ+$ပ3တယ#။ အသuB$CပuAiuင#တ-6 Statement
eတ&ကeတ+6 TRY - CATCH Statement, TRY - CATCH - FINALLY Statement, TRY - MULTI CATCH
Statement န-9 TRY - WITH - RESOURCE Statement တiu Cဖစ#Fကပ3တယ#။
TRY - CATCH
Try - Catch Statement ဟ+ Java မH+ Exception ကiu Handle လuပ#ဖiuအတ&က# eရ$သ+$ရeသ+ အeCခခB eရ$သ+$
ပuB Statement တစ#ခuCဖစ#ပ3တယ#။ Try - Catch Statement တစ#ခuမH+ အeCခခBအ+$Cဖင#6 Try Clause န-9 Catch
Clause တiuပ3ဝင#Fကပ3တယ#။ တစ#ခuသတiCပuဖiuလiuတ+က Try Catch Statement ကiu ဘယ#လiu eရ$သ+$ရမယ#ဆiuတ-6
အပiuင#$န-9 Try Catch Statement ကiu ဘယ#eနရ+မH+eရ$သ+$သင#6တယ#ဆiuတ+က တစ#ပiuင#$စ?Cဖစ#ပ3တယ#။
ဒ?eနရ+မH+eတ+6 ဘယ#လiueရ$သ+$ရမယ#ဆiuတ+ကiuပ- အဓiထ+$Kပ?$eလ6လ+သ&+$Fကရeအ+င#။
try {
// code that can happen exceptions
} catch (Exception e) {
// code that handle exception
}
Catch Clause ကeတ+6 Exception Handler အပiuင#$Cဖစ#ပ3တယ#။ Catch Clause ကiu eရ$သ+$တ-6eနရ+မH+
catch(Exception) {} ကiu eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ catch ရ-Ieန+က#က () အထ-မH+eတ+6 Handle လuပ#Aiuင#တ-6
Exception ကiu Argument အeနန-9 eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။
Try Catch Statement ထ-မH+ Try ကiueတ+6 တစ#Pကiမ#သ+eရ$သ+$Aiuင#eပမ-6 Catch Clause ကiueတ+6 အPကiမ#Pကiမ#
eရ$သ+$Aiuင#မH+ Cဖစ#ပ3တယ#။
try {
// code that can happen exceptions
} catch (NullPointerException e) {
// code that handle NullPointerException
} catch (Exception e) {
// code that handle Exception
}
အထက#ပ3အတiuင#$ Try - Catch Statement မH+ NullPointerException ကiu Handle လuပ#မည#6 Exception
Handler န-9 Exception ကiu Handle လuပ#မည#6 Handler တiuကiu eရ$သ+$ထ+$Aiuင#ပ3တယ#။ ဒ?လiueရ$သ+$တ-6eနရ+မH+
Exception Object ရ-I Inheritance Hierarchy ကiu သတiCပuဖiueတ+6 လiuအပ#ပ3တယ#။ Inheritance Hierarchy ထ-
မH+ အCမင#6ဆuB$ Type ကiu eအ+က#ဆuB$မH+eရ$သ+$ထ+$ဖiuလiuအပ#ပ3တယ#။
Try - Catch Clause eတ&န-9 အတO Finally Clause ကiu တ&-ဖက#eရ$သ+$လiuရပ3တယ#။ Finally Clause ဟ+ အ-6ဒ?
Statement ကiuလuပ#eဆ+င#Kပ?$ eန+က#ဆuB$မH+ eသCခ+eပ3က# လuပ#eဆ+င#eစလiuတ-6 ကuဒ#eတ&ကiueရ$သ+$လiuတ-6 eနရ+
မH+ အသuB$CပuAiuင#ပ3တယ#။ Exception Cဖစ#Cဖစ# မCဖစ#Cဖစ# Finally Clause ထ-ကကuဒ#eတ&ကiueတ+6 eန+က#ဆuB$မH+
လuပ#eဆ+င#eပ$မH+ Cဖစ#ပ3တယ#။ တကယ#လiu Try Block ထ-မH+ Return Cပန#ထ+$မယ#ဆiuရင#eတ+င#မH eန+က#ဆuB$မH+
Finally Clause ထ-က ကuဒ#eတ&ကiu လuပ#eဆ+င# eစမH+ Cဖစ#ပ3တယ#။
try {
// code that can happen exceptions
} catch (NullPointerException e) {
// code that handle NullPointerException
} catch (Exception e) {
// code that handle Exception
} finally {
// eန+က#ဆuB$မH+ eသCခ+eပ3က#လuပ#eဆ+င#eစလiuတ-6 ကuဒ#eတ&ကiu eရ$သ+$ရပ3မယ#
}
Finally Clause ကiueရ$သ+$တ-6eနရ+မH+ Catch eတ&ရ-I eန+က#ဆuB$မH+ eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ Finally Clause
ရ-Ieန+က#မH+ Catch Clause eတ&ကiu eရ$သ+$လiu မရAiuင#ပ3ဘO$။
Try With Multi Catch ဆiuတ+ကeတ+6 အeCခခBအ+$Cဖင#6 Try - Catch Statement န-9 အတOတOပ- Cဖစ#ပ3တယ#။
ထO$Cခ+$တ+ကeတ+6 Catch Block eတ&မH+ Exception Type eတ&ကiu တစ#ခuထက#မက eရ$သ+$လ+Aiuင#တ+ပ- Cဖစ#
ပ3တယ#။ ဒ?eနရ+မH+လ- Exception Type eတ&ရ-I Class Hirarechy ကiuလ- သတiCပuဖiuလiuအပ#ပ3တယ#။ Exception
Type eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ Super Type eတ&ကiu e^မH+ eရ$သ+$လiu မရAiuင#ပ3ဘO$။
try {
// code that can happen exceptions
} catch(NullPointerException | IOException e) {
// Exception Handling Codes
}
Try - With - Resource Statement ဟ+ AutoClosable Interface ကiu Implement လuပ#ထ+$တ-6 Object eတ&
ကiu အသuB$Cပuတ-6 အခ3မH+ eရ$သ+$Aiuင#တ-6 Statement အမGiu$အစ+$Cဖစ#ပ3တယ#။
// Database Operation
} catch (Exception e) {
// codes for handeling
AutoClosable Interface ကiu Implement လuပ#ထ+$တ-6 Object eတ&ကiu try eန+က#က () ထ-မH+ ထည#6သ&င#$
eရ$သ+$ထ+$ရပ3မယ#။ ထiuသiueရ$သ+$ထ+$Cခင#$အ+$Cဖင#6 မiမiကiuယ#တiuင# Resource eတ&ကiu Close လuပ#စရ+မ
လiuအပ#eတ+6ပ3ဘO$။ Statement Kပ?$ဆuB$တ-6 အခ3မH+ အလiuအeလG+က# Close လuပ#eပ$Aiuင#မH+ Cဖစ#ပ3တယ#။
Close လuပ#eစလiuတ-6 Resource Object eတ& တစ#ခuထက#မက Qiတ-6အခ3မGiu$မH+ အထက#ပ3အတiuင#$ Seme
Column (;) ကiuအသuB$CပuKပ?$ eရ$သ+$Aiuင#ပ3မယ#။
Throwing Exceptions
Checked Exception eတ&ကiu Throw လuပ#ထ+$တ-6 Method eတ&၊ Constructor eတ&ကiu အသuB$CပuမiKပ?$
လတ#တeလ+ မeCဖQင#$Aiuင#eသ$တ-6 အခ3၊ မiမieရ$သ+$ထ+$တ-6 Application eတ&ရ-I မHန#ကန#မ[ကiu ထiမ#$သiမ#$လiuတ-6
အတ&က# eန+က#က Code eတ&ကiu ဆက#မလuပ#eစလiuတ-6အခ3မGiu$မH+ Application eတ&ထ-ကeနလ- Exception eတ&
ကiu Throw လuပ#Aiuင#ပ3တယ#။
Exception eတ&ကiu Throw လuပ#တ-6အခ3မH+ Checked Exception eတ&ကiu Throw လuပ#တ+န-9 Unchecked
Exception eတ&ကiu Throw လuပ#တ+က မတOည?ပ3ဘO$။
မiမieရ$သ+$ထ+$တ-6 Application ကiu မHန#ကန#မ[Qieစရန# Cပင#ပ3မH Data မG+$ကiu Set လuပ#တ-6eနရ+မGiu$မH+ စစ#eဆ$Kပ?$
မH+$ယ&င#$eနပ3က Unchecked Exception eတ&ကiu Throw လuပ#Kပ?$ က+က&ယ#Aiuင#ပ3တယ#။
if(age <= 0) {
throw new IllegalArgumentException(
“Age must be greater than 0");
}
this.name = name;
this.age = age;
}
}
အထက#ပ3အတiuင#$ Person Class ထ-မH+ name န-9 age ကiu ယOတ-6 Constructor တစ#ခuကiu eရ$သ+$ထ+$ပ3တယ#။ ဒ?
eနရ+မH+ eရ$သ+$ထ+$တ-6 Person Class ရ-I Data eတ&ကiu မHန#ကန#မ[Qieအ+င# စစ#eဆ$ဖiuလiuအပ#ပ3တယ#။ အသက#
က Minus တန#ဖiu$Qiတ-6 Person တiuဆiuတ+ အဓiပW3ယ#မQiပ3ဘO$။
ဒ36eFက+င#6 Constructor ထ-မH+ age <= 0 ဆiuရင#လ- IllegalArgumentException ကiu Throw လuပ#ထ+$ပ3တယ#။
IllegalArgumentException ဟ+ Runtime Exception အမGiu$အစ+$Cဖစ#တ-6 အတ&က# Unchecked Exception
အမGiu$အစ+$Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 Throw လuပ#ထ+$eပမ-6 အ-6ဒ? Constructor Body ထ-မH+ Handle လuပ#ထ+$စရ+မ
လiuအပ#ပ3ဘO$။
ဒ36eFက+င#6ဒ?eနရ+မH+ Try Catch တiu Method Declaration eတ&မH+ Throw eတ&ကiu eရ$ထ+$စရ+မလiuအပ#ပ3ဘO$။
အလ+$တOပ- Error eတ&ဟ+လ- Unchecked Exception အမGiu$အစ+$eတ& Cဖစ#Fကတ-6 အတ&က# Handle လuပ#စရ+မ
လiuအပ#ပ3ဘO$။
if(age <= 0) {
throw new Exception(
"Age must be greater than 0");
}
this.name = name;
this.age = age;
}
}
အထက#ပ3 Class ကiu Compile လuပ#တ-6eနရ+မH+ Checked Exception ကiu Throw လuပ#ထ+$တ-6 အတ&က# catch
ဒ3မHမဟuတ# throws declaration ကiu eရ$သ+$ထ+$ဖiuလiuအပ#တယ#ဆiuKပ?$ Compiler မH+ စစ#eဆ$eပ$eနတ+ကiu eတ&J
ရပ3တယ#။
e^မH+ Exception eတ&ကiu ဘယ#လiu Catch လuပ#မယ#ဆiuတ+ကiu eဖ2CပKပ?$ Cဖစ#တ-6 အတ&က# ဒ?eနရ+မH+eတ+6 ဘယ#လiu
Throw Declaration ကiu eရ$သ+$ရမယ#ဆiuတ+ကiuပ- eဖ2Cပသ&+$ပ3မယ#။
if(age <= 0) {
throw new Exception(
"Age must be greater than 0");
}
this.name = name;
this.age = age;
}
}
Throw Declaration ကiu eရ$သ+$မယ#ဆiuရင# Constructor ဒ3မHမဟuတ# Method Declaration eတ&ရ-I eန+က#မH+
throws ဆiuKပ?$ Throw လuပ#လiuတ-6 Exception eတ&ကiu eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ Exception တစ#ခuထက#မက
Throw လuပ#ခGင#တယ#ဆiuရင# Comma (,) ကiu ခBKပ?$eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။
တကယ#လiu IOException န-9 SQLException ကiu Method ထ-ကeန Throw လuပ#ခGင#တယ#ဆiuရင# အထက#ပ3
အတiuင#$ throws IOException, SQLException ဆiuKပ?$ eရ$သ+$eပ$ရမH+ Cဖစ#ပ3တယ#။
Throw Declaration eတ&မH+ Unchecked Exception eတ&ကiu eရ$သ+$ထ+$ရင#လ- ရပ3တယ#။ ဒ3eပမ-6 မeရ$ထ+$
ရင#လ- Cပဿန+မQiတ-6 အတ&က# eရ$ထ+$ထ+$ မeရ$ထ+$ထ+$ အတOတOပ- Cဖစ#ပ3မယ#။
ဒ3ကလ- Checked Exception eတ&ကiu ဒ?အတiuင#$ Throw လuပ#ပစ#ရင# eCဖQင#$Aiuင#တ-6 အစ&မ#$မQiပ- Catch လuပ#Kပ?$
eဖG+က#ပစ#မH+စiu$တ-6 အတ&က# Fက+$ထ-မH+ Catch လuပ#စရ+မလiuအပ#တ-6 Runtime Exception အeနန-9 Cပန#Kပ?$ Throw
လuပ#ပစ#ခGင#တ-6 အခ3မGiu$မH+ အသuB$CပuAiuင#ပ3တယ#။ ဒ3က API eတ&ကiu eရ$သ+$တ-6eနရ+မH+eတ+6 အသuB$မCပuသင#6ပ3ဘO$။
Application eတ&ကiu eရ$သ+$တ-6 eနရ+မH+eတ+6 အသuB$Cပuသင#6ပ3တယ#။
// Business Codes
} catch (SQLException e) {
throw new RuntimeException("Database Error", e);
}
}
အထက#ပ3နမOန+က JDBC API ကiu အသuB$Cပueနတ-6 Insert Method eလ$တစ#ခuCဖစ#ပ3တယ#။ DriverManager န-9
Connection Object ကiu ရယOKပ?ဆiuတ+န-9 SQLException ကiu Cဖစ#eပ2eစပ3တယ#။ SQLException ဟ+
Checked Exception Cဖစ#တ-6 အတ&က# Handle လuပ#ဖiuလiuပ3တယ#။ ဒ?eနရ+မH+ SQLException ကiu Catch လuပ#Kပ?$
Handle မလuပ#ပ- eန+က#ထပ# RuntimeException တစ#ခuအeနန-9 Throw လuပ#လiuက#ပ3တယ#။
RuntimeException Cဖစ#တ-6 အတ&က# insert method မH+ throw declaration ကiu eရ$သ+$စရ+မလiueတ+6ပ3ဘO$။
Kပ?$eတ+6လ- insert method ကiu အသuB$Cပueနတ-6 Call Site မH+လ- မလiuအပ#ပ- Handle လuပ#စရ+မလiuအပ#ပ3ဘO$။
Custom Exception
e^မH+eလ6လ+ခ-6Fကသလiu Exception eတ&ကiu Developer eတ&က Create လuပ#Kပ?$ Throw လuပ#Aiuင#ပ3တယ#။ ဒ?လiu
Throw လuပ#တ-6eနရ+မH+ QiKပ?$သ+$ Exception တစ#ခuကiu Throw လuပ#လiuက#ရင#လ-ရသလiu မiမiကiuယ#ပiuင# Custom
Exception တစ#ခuကiu eရ$သ+$Kပ?$ Throw လuပ#ရင#လ- ရAiuင#ပ3တယ#။
Platform မH+ပ3တ-6 Exception eတ&န-9 မiမiရ-I Application ထ-ကeန Cဖစ#တ-6 Exception eတ&ကiuခ&-Cခ+$လiuတ-6အခ3၊ ဒ3မH
မဟuတ# Exception ထ-မH+ အCခ+$eသ+ State eတ&ကiu ပiuင#ဆiuင#ထ+$eစလiuတ-6 အခ3မGiu$မH+ Custom Exception eတ&
ကiu eရ$သ+$အသuB$CပuAiuင#ပ3တယ#။
// Data Validation
if(null == c.getName()) {
throw new HotelAppException(
"Customer Name must not be null!");
}
// Business Codes
} catch (SQLException e) {
throw new HotelAppException("Database Error", e);
}
}
Custom Exception Cဖစ#တ-6 HotelAppException ကiu Throw လuပ#ထ+$တ-6အတ&က# Handle လuပ#တ-6eနရ+မH+ မiမi
Application ကeန Throw လuပ#တ-6 Exception န-9 Platform ကeန Throw လuပ#တ-6 Exception eတ&ကiu ခ&-Cခ+$Kပ?$
Handle လuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။
အeCခခBအ+$Cဖင#6 Exception တစ#ခuထ-မH+ String message န-9 Throwable cause တiuကiu သတ#မHတ#eပ$Aiuင#ပ3
တယ#။ String message ကeတ+6 ဘ+eFက+င#6ဘယ#လiuCဖစ#တယ#ဆiuတ+ကiu eဖ2Cပတ-6eနရ+မH+ အသuB$Cပuသင#6Kပ?$
Exception Object ကeန getMessage() Method ကiu အသuB$CပuKပ?$ Cပန#လည#ရယOAiuင#ပ3တယ#။ Exception ကiu
Create လuပ#တ-6eနရ+မH+ Message ကiu သတ#မHတ#eပ$ထ+$ခ-6ရင#၊ Exception ကiu Handle လuပ#တ-6eနရ+မH+ Cပန#Kပ?$
အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ Throwable cause ကeတ+6 လက#Qi Exception ကiu Cဖစ#eစတ-6 မOရင#$ Exception
Object ကiu သတ#မHတ#eပ$တ-6eနရ+မH+ အသuB$CပuAiuင#ပ3တယ#။
} catch (SQLException e) {
throw new HotelAppException("Database Error", e);
}
}
အCခ+$ Exception တစ#ခuကiu Catch လuပ#Kပ?$ Custom Exception ကiu Throw လuပ#တ-6 အeနအထ+$မGiu$မH+ဆiuရင#၊ ဒ?
Exception ကiu Cဖစ#eစတ-6 Root Cause Exception ကiu သတ#မHတ#eပ$သင#6ပ3တယ#။ ဒ3မHသ+ Handle လuပ#တ-6
eနရ+မH+ ဒ? Exception ကiu Cဖစ#eပ2eစတ-6 အeFက+င#$အရင#$အCပည#6အစuBကiu သiAiuင#မH+ Cဖစ#ပ3တယ#။ အထက#ပ3
အတiuင#$ HotelAppException ကiu တည#eဆ+က#တ-6eနရ+မH+ SQLException Object Cဖစ#တ-6 e ကiuထည#6eပ$လiuက#
တ+ဟ+ Root Cause ကiu သတ#မHတ#eပ$လiuက#တ+ပ- Cဖစ#ပ3တယ#။ အ-6ဒ?အတ&က# HotelAppException ကiu Cဖစ#eစ
တ+ဟ+ SQLException ဆiuတ+ကiu သieစAiuင#မH+ Cဖစ#ပ3တယ#။
// Data Validation
if(null == c.getName()) {
throw new HotelAppException(
"Customer Name must not be null!");
}
Customer ကiu Insert လuပ#တ-6eနရ+မH+ Name မပ3ဘO$ဆiuတ+ဟ+ မQiသင#6ပ3ဘO$။ အ-6ဒ?လiu မCပည#6စuBတ-6 Information
eတ&ကiu Database ထ-ကiu Insert မလuပ#eအ+င# Exception eတ&ကiu Throw လuပ#Aiuင#ပ3တယ#။ Handle လuပ#တ-6
eနရ+ကeန ဘ+eFက+င#6 Exception ကiu Cဖစ#eစတယ#ဆiuတ+ကiu သiQiAiuင#eအ+င# Message eတ&န-9 Exception ကiu
Create လuပ#Aiuင#ပ3တယ#။ ဒ3မHသ+ User ဆ?ကiu ဘ+eFက+င#6 Insert လuပ#လiuမရဘO$ဆiuတ+ကiu eဖ2Cပeပ$Aiuင#မH+ Cဖစ#ပ3
တယ#။
အထက#ပ3အတiuင#$ needToAlert ဆiuတ-6 boolean variable တစ#ခuကiu State အeနန-9ထ+$Kပ?$၊ Exception Object
ကiu eဆ+က#တ-6အခ3မH+ သတ#မHတ#ခiuင#$မH+ Cဖစ#ပ3တယ#။ Exception ကiu Handle လuပ#တ-6အခ3ကGမH ဒ? State ကiuFကည#6
Kပ?$ Alert န-9Cပမလ+$ ဆiuတ+ကiu ဆuB$Cဖတ#Aiuင#မH+ Cဖစ#ပ3တယ#။
Benefit of Exception
Exception ကiu အသuB$CပuKပ?$ ရQiAiuင#တ-6 အကGiu$eတ&ကeတ+6 eအ+က#ပ3အတiuင#$Cဖစ#ပ3တယ#။
✓ Error အမGiu$အစ+$အ+$ခ&-Cခ+$သiQiAiuင#
Exception eတ&ကiu Inheritance Hirarechy အလiuက#ခ&-Cခ+$ထ+$Aiuင#Cခင#$၊ မiမiကiuယ#ပiuင# Custom Exception
တiuကiu eရ$သ+$ထ+$Aiuင#Cခင#$တiueFက+င#6 ဘ+eFက+င#6ဒ? Exception ကiu Cဖစ#eစတယ#ဆiuတ+ကiu အလ&ယ#တကOသiQi
eစAiuင#ပ3တယ#
Method Overriding
OOP ရ-I Inheritance အeFက+င#$ကiu eလ6လ+ခ-6တuန#$က Super Class ကeန Inheritance လuပ#လ+တ-6 Method
eတ&ကiu Sub Class ကeန Override လuပ#Aiuင#တယ#ဆiuတ+ကiu eလ6လ+ခ-6Fကပ3တယ#။ Exception ကiu Throw လuပ#
ထ+$တ-6 Method တစ#ခuကiu Override လuပ#eတ+6မယ#ဆiuရင# သတiCပuစရ+တစ#ခuQiပ3တယ#။ ဒ?eနရ+မH+လ- Checked
Exception န-9 Unchecked Exception တiuရ-I အeCခအeနeတ&ဟ+ မတOFကပ3ဘO$။
အeCခခBအ+$Cဖင#6 Unchecked Exception eတ&ဟ+ Compiler ကeန Check လuပ#စရ+မလiuတ-6 အတ&က# Throw
လuပ#ထ+$ရင#လ- Call Site မH+ အeထ&အထO$ Handle လuပ#စရ+မလiuအပ#ပ3ဘO$။ ဒ36eFက+င#6 Unchecked Exception
eတ&ကiu Super Class မH+ပ-Cဖစ#Cဖစ# Override လuပ#မည#6 Sub Class မH+ပ-Cဖစ#Cဖစ# Throw လuပ#လiuရပ3တယ#။ အ-6ဒ?
အတ&က# Override Rule ကiu ခGiu$eဖ3က#သ&+$တယ#ဆiuတ+ မQiAiuင#ပ3ဘO$။
ဒ3eပမ-6 Checked Exception eတ&ကeတ+6 မတOပ3ဘO$။ Checked Exception eတ&ကiu Throw လuပ#ထ+$တ-6
Method eတ&ကiu အသuB$Cပuမယ#ဆiuရင# Call Site မH+ Handle လuပ#ထ+$တယ# မလuပ#ထ+$ဘO$ဆiuတ+ကiu Compiler
ကeန စစ#eဆ$eနပ3တယ#။ Kပ?$eတ+6 Inheritance Cဖစ#Kပ?ဆiuကထ-က IS - A Relationship ကiu Cဖစ#eပ2eစKပ?$ Sub
Type eတ&ကiu Super Type အeနန-9 အသuB$CပuAiuင#ရပ3မယ#။ ဒ3eFက+င#6မiuလiu Override လuပ#မည#6 Method eတ&ဟ+
Super Type မH+ Throw လuပ#မထ+$တ-6 Checked Exception eတ&ကiu Throw လuပ#လiu မရAiuင#ပ3ဘO$။
Unchecked Exception
✓ Unchecked Exception eတ&ဟ+ Compiler ကeန စစ#eဆ$စရ+မလiuတ-6 Exception eတ& Cဖစ#Fကတ-6 အတ&က#
Override မH+ အကGiu$သက#eရ+က#မ[မQiပ3ဘO$
✓ Super Class ရ-I Method ထ-မH+ Unchecked Exception ကiu Throw လuပ#ထ+$တယ#၊ Override လuပ#မည#6
Method မH+ Throw မလuပ#လ-ရပ3တယ#။
✓ Super Class ရ-I Method ထ-မH+ Unchecked Exception ကiu Throw လuပ#ထ+$တယ#၊ Override လuပ#မည#6
Method မH+ အCခ+$ Unchecked Exception တစ#ခuကiu Throw ခGင#ရင#လ-ရပ3တယ#။
✓ Super Class ရ-I Method မH+ ဘ+ Exception ကiuမH Throw မလuပ#ထ+$တ-6 အခ3မGiu$မH+လ- Override လuပ#မည#6
Method ထ-ကeန Unchecked Exception ကiu Throw လuပ#လiuလ-ရမH+ Cဖစ#ပ3တယ#။
Checked Exception
✓ Super Class ရ-I Method ထ-က Throw လuပ#မထ+$ပ- Override လuပ#မည#6 Method ထ-ကeန Checked
Exception တစ#ခuကiu Throw လuပ#လiu မရAiuင#ပ3ဘO$
✓ Super Class ရ-I Method ထ-မH+ Checked Exception တစ#ခuကiu Throw လuပ#ထ+$eပမ-6 Override လuပ#မည#6
Method မH+ Exception ကiu Throw လuပ#မထ+$ရင#လ- ရပ3တယ#
✓ Super Class ရ-I Method ထ-က Throw လuပ#ထ+$တ-6 Checked Exception န-9 ထပ#တO ဒ3မHမဟuတ# Sub Type
မGiu$ကiu Override လuပ#တ-6 Method ကeန Throw လuပ#ပiuင#ခ&င#6Qiပ3တယ#
✓ Super Class ရ-I Method ထ-က Throw လuပ#ထ+$တ-6 Checked Exception ရ-I Super Type ဒ3မHမဟuတ# မ
ဆiuင#တ-6 အCခ+$ Checked Exception တစ#မGiu$မGiu$ကiu Override လuပ#မည#6 Method ထ-ကeန Throw လuပ#လiu မ
ရAiuင#ပ3ဘO$
Using Strings
About String
String ဟ+ အသuB$အမG+$ဆuB$ Data Type Cဖစ#Kပ?$၊ Object တစ#မGiu$Cဖစ#ပ3တယ#။ Java မH+က Charactor တစ#လuB$စ?
ကiu ကiuယ#စ+$Cပuဖiuအတ&က# Primitive data type Cဖစ#တ-6 char ကiu အသuB$CပuAiuင#ပ3တယ#။ String ဆiuတ+ကeတ+6
charactor array ကiu ကiuယ#စ+$CပuAiuင#တ-6 Object Cဖစ#Kပ?$၊ ထည#6သ&င#$ထ+$တ-6 charactor တစ#လuB$စ?ရ-I အစ?အစT#ကiu
သiမ#$ထ+$eပ$Aiuင#ပ3တယ#။
အသuB$အမG+$ဆuB$ Data Type Cဖစ#တ-6 အeလG+က# String eတ&မH+ အCခ+$eသ+ Object eတ&န-9 မတOတ-6 အခGက#eတ&ပ3
ထည#6သ&င#$eရ$သ+$ထ+$ခ-6Fကပ3တယ#။ က\န#eတ+#တiu ဒ?eနရ+မH+ String ဟ+ ဘယ#လiu သဘ+ဝQiတယ#ဆiuတ+ကiu
eလ6လ+သ&+$Fကရeအ+င#။
int intData = 0;
char charData = 'c';
Object objData = null;
အထက#eဖ2Cပပ3 Assignment Statement eတ&ထ-မH+ 0 တiu ‘c’ တiu null တiuဟ+ ကuဒ#eတ&မဟuတ#ပ3ဘO$။
Assignmrny eတ&မH+ အစ+$ထiu$မည#6 Value eတ&Cဖစ#ပ3တယ#။ ဤက-6သiu Source Code eတ&ထ-မH+ Value eတ&ကiu
eရ$သ+$ထ+$တ+eတ&ကiu Literals လiu eခ2Fကပ3တယ#။
ဟuတ#ပ3တယ# String eတ&ဟ+ Reference Type eတ&Cဖစ#eပမ-6 Primitive Type eတ&လiuပ- ကiuယ#ပiuင# literals eတ&
ကiu ပiuင#ဆiuင#ပ3တယ#။ က\န#eတ+#တiu String Type Variable တစ#ခuကiu အသuB$CပuKပ?$ Assignment Statement eတ&ကiu
eရ$သ+$တ-6 eနရ+မH+ Source Code eတ&ထ-မH+ Value ကiu တiuက#Uiuက#eရ$သ+$Aiuင#ပ3တယ#။
String Literals eတ&ကiu eရ$သ+$တ-6eနရ+မH+ Double Quotation (“) ကiu အသuB$CပuKပ?$ eရ$သ+$Aiuင#ပ3တယ#။
အထက#ပ3 Statement ထ-မH+ name ဟ+ String Type Variable Cဖစ#Kပ?$ “Mike” ဟ+ name eနရ+မH+ အစ+$ထiu$မ
ည#6 တန#ဖiu$Cဖစ#ပ3တယ#။
တကယ#လiu က\န#eတ+#တiu Program ထ-မH+ Literal န-9 eရ$သ+$ထ+$တ-6 String Value တစ#ခuကiu eတ&JKပ?ဆiuတ+န-9
String Pools ထ-မH+ အ-6ဒ?တန#ဖiu$န-9 String Object Qiလ+$ဆiuတ+ကiu သ&+$Q+ပ3တယ#။ Qieနရင#eတ+6 အ-6ဒ? String
Object ရ-I Referrence ကiu String Variable eနရ+မH+ အသuB$Cပuပ3တယ#။ မQiဘO$ဆiuရင#eတ+6 String Pools ထ-မH+
Literal Value Qiတ-6 String Object ကiuတည#eဆ+က#Kပ?$ String Variable eနရ+မH+ Reference ကiu အစ+$ထiu$ပ3
တယ#။
// true
System.out.println(string1 == string2);
// false
System.out.println(string1 == string3);
// true
System.out.println(string1.equals(string3));
}
အထက#ပ3 ကuဒ#နမOန+ထ-မH+ “Hello Java” ဆiuတ-6 တန#ဖiu$Qiတ-6 String Variable သuB$ခuကiu eရ$သ+$ထ+$ပ3တယ#။
string1 န-9 string2 ကiueတ+6 Literals န-9 eရ$သ+$ထ+$Kပ?$ string3 ကiueတ+6 String Constructor ကiu အသuB$CပuKပ?$
eရ$သ+$ထ+$ပ3တယ#။
အထက#eဖ2Cပပ3ပuBထ-မH+လiu string1 န-9 string2 ဟ+ String Pools ထ-မH+Qiတ-6 “Hello Java” ကiu လHမ#$Kပ?$
Reference လuပ#eနတ-6 အတ&က# string1 == string2 ရ-I တန#ဖiu$ဟ+ true Cဖစ#ပ3မယ#။ ဒ3eပမ-6 string3 ဟ+ String
Constructor ကiu အသuB$CပuKပ?$ တည#eဆ+က#ထ+$တ-6 အတ&က# Heap Memory eပ2မH+ Object တစ#ခuကiu
တည#eဆ+က#သ&+$ပ3တယ#။ ဒ36eFက+င#6 string1 == string3 ရ-I တန#ဖiu$ဟ+ false Cဖစ#eနမH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6
String eတ&ရ-I Equality ကiu စမ#$စစ#ခGင#ရင# equals() method ကiu အသuB$Cပuသင#6ပ3တယ#။
အထက#ပ3ကuဒ#နမOန+ထ-မH+ hello န-9 java ဆiuတ-6 String Type Variable eတ&ကiu eရ$သ+$ထ+$ပ3တယ#။ Code 1 ဆiu
တ-6 eနရ+မH+ hello.concat(java) ဆiuတ-6 Method Invocation ကiu Print လuပ#ခiuင#$eနပ3တယ#။ concat(String)
method ဟ+ String Object ရ-I Member Method Cဖစ#Kပ?$ String AHစ#ခuကiu eပ3င#$တ-6 eနရ+မH+ အသuB$CပuAiuင#ပ3
တယ#။ Console eပ2မH+ “Hello Java” ဆiuKပ?$ Print လuပ#သ&+$တ+ကiu eတ&Jရပ3မယ#။
Kပ?$တ-6eန+က#မH+ Code 2 န-9 Code 3 တiuမH+ hello န-9 java တiuကiu Print လuပ#ခiuင#$eနပ3တယ#။ hello န-9 java ကiu
concat လuပ#ထ+$eပမ-6 ဒ?eနရ+မH+eတ+6 သOတiueတ&ဟ+ နဂiuတန#ဖiu$အတiuင#$Qieနတ+ကiu eတ&Jရပ3မယ#။ ဘ+လiuလ- ဆiu
eတ+6 hello.concat(java) လiueခ2လiuက#eပမ-6 String eတ&ဟ+ Immutable Cဖစ#တ-6 အတ&က# သOတiueတ&ရ-I တန#ဖiu$
eတ&ဟ+ eCပ+င#$မသ&+$ပ- “Hello Java” ဆiuတ-6 eန+က#ထပ# String Object တစ#ခuကiu တည#eဆ+က#eပ$လiuက#တ-6
အတ&က# Cဖစ#ပ3တယ#။
String eတ&ဟ+ Immutable Object eတ&Cဖစ#တ-6 အတ&က# String ရ-I ဘယ#လiu Method မGiu$ကiu သuB$သuB$ String
Variable eတ&ရ-I တန#ဖiu$ဟ+ eCပ+င#$လ-သ&+$မH+ မဟuတ#ပ3ဘO$။
// Code 3
String str3 = "10" + 1 + 1;
System.out.println(str3);
Code 2 ကeတ+6 “10” ဆiuတ-6 String န-9 1 ဆiuတ-6 int ကiueပ3င#$ထ+$တ+ပ3။ ဒ?eနရ+မH+ 1 ဟ+ int Cဖစ#eပမ-6 +
Operator ရ-I တစ#ဘက#ဘက#က String Cဖစ#eနတ-6 အတ&က# 1 ကiuလ- String အeနန-9 eCပ+င#$Kပ?$ အလuပ#လuပ#eစပ3
တယ#။ အ-6ဒ? အတ&က# ရလဒ#ဟ+ “101” ဆiuတ-6 String တစ#ခuCဖစ#လ+ပ3တယ#။
Code 1 န-9 Code 2 တiuမH+လiu Operator တစ#ခuန-9 Variable AHစ#ခuပ3တ-6 Simple Expression eတ&မH+ဆiuရင#eတ+6
Cပဿန+မQiပ3ဘO$။ တစ#ဘက#ဘက#မH+ String ပ3eနရင# ကGန#တ-6 Number ကiu String အeနန-9 eCပ+င#$သ&+$တ+ကiu
မHတ#ရလ&ယ#ပ3တယ#။ ဒ3eပမ-6 Expression တစ#ခuမH+ Operator တစ#ခuထက#မက အသuB$Cပuလ+Kပ?ဆiuရင#eတ+6
Operator Precedence ကiu သတiCပuဖiuလiuအပ#ပ3တယ#။
Arithmetic Operator eတ&ကiu တစ#ခuထက#မက အသuB$CပuKပ?$ Expression eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ Operator
eတ&ရ-I Precedence အeပ2မOတည#Kပ?$ Evaluate လuပ#တ-6 အစ?အစT#eတ&က မတOည?Fကပ3ဘO$။ အeပ3င#$ (+) န-9 အ
AHတ# (-) ဟ+ Precedence တOည?Kပ?$ အeCမq+က# (*) န-9 အစ+$ (/) ဟ+ တOည?Fကပ3တယ#။ ပ3ဝင#တ-6 Operator eတ&
ဟ+ Precedent ခGင#$တOeနရင# ဘယ#ဘက# Expression ကeန စKပ?$ Evaluate လuပ#Fကပ3တယ#။ Code 3 မH+ “10”
+ 1 + 1 လiueရ$ထ+$တ-6 Expression မH+ ဘယ#ဘက#က Operator ကiu အရင# Evaluate လuပ#တ-6 အခ3မH+ “101” +
1 ဆiuKပ?$ အeCဖရပ3တယ#။ အ-6ဒ?အတ&က# ရလဒ#ဟ+ “1011” Cဖစ#သ&+$ပ3တယ#။
Manipulating Strings
String eတ&ကiu အသuB$Cပuမယ#ဆiuရင# အeCခခBအ+$Cဖင#6 eအ+က#ပ3 လuပ#eဆ+င#မ[eတ&ကiu လuပ#eဆ+င#Aiuင#မH+ Cဖစ#ပ3
တယ#။
String eတ&ဟ+ Character eတ&ကiu Array အeနန-9 သiမ#$ဆည#$ထ+$eပ$Aiuင#တ-6 Object eတ&Cဖစ#တ-6 အတ&က#
သiမ#$ထ+$တ-6 Character eတ&ကiu Index Number eတ&န-9 Cပန#လည# ထuတ#ယOAiuင#ပ3တယ#။ အသuB$Cပuရမ-6 method
ကeတ+6 charAt(int) method Cဖစ#ပ3တယ#။ အထက#ပ3ပuBထ-မH+လiu charAt(0) ဆiuရင# Index Number 0 မH+Qiတ-6 ‘H’
ကiu Cပန#လည#ရQiမH+ Cဖစ#Kပ?$ charAt(6) ဆiuရင#eတ+6 ‘J’ ကiu ရQieစမH+ Cဖစဒ#ပ3တယ#။
substring(1,5)
String Object eတ&ကiu Cဖတ#eတ+က#လiuတ-6အခ3မGiu$မH+ substring(int) န-9 substring(int, int) Method တiuကiu
အသuB$CပuAiuင#ပ3တယ#။ Integer Argument တစ#ခuပ3တ-6 subString() method ဟ+ Argument ရ-I eနရ+ကeန စKပ?$
String ကiu အဆuB$အထi Cဖတ#eတ+က#eပ$မH+ Cဖစ#ပ3တယ#။ Argument AHစ#ခuပ3တ+ကeတ+6 From Index န-9 To
Index eတ&Cဖစ#FကKပ?$ From ကeန To ရ-I အe^eနရ+အထi Cဖတ#eတ+က#eပ$မH+ Cဖစ#ပ3တယ#။ substring(1, 5) လiu
eရ$သ+$ထ+$ရင# 1 eနရ+ကeန 5 ရ-I အe^အထiCဖတ#eတ+က#eပ$မH+ Cဖစ#တ-6 အတ&က# “ELLO” ကiu ရQiမH+ Cဖစ#ပ3
တယ#။
Searching Character
String Object ထ-မH+ပ3တ-6 Character eတ&ကiu Q+eဖ&တ-6eနရ+မH+ eအ+က#ပ3 Method eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။
if(fileName.contains(".")) {
int indexOfLastDot = fileName.lastIndexOf('.');
return fileName.substring(indexOfLastDot + 1);
}
return null;
}
}
အထက#ပ3နမOန+ထ-က getExtension(String) Method ဟ+ File Name eတ&ကeန Extension Type ကiu Q+eပ$
Aiuင#တ-6 Method Cဖစ#ပ3တယ#။ contains(“.”) ကiu အသuB$CပuKပ?$ Dot Qiလ+$ဆiuတ+ကiu စစ#ပ3တယ#။ eတ&Jခ-6ရင#
lastIndexOf(‘.’) ကiu အသuB$CပuKပ?$ Dot ရ-I eန+က#ဆuB$eနရ+ကiu Q+Kပ?$ substring(indexOfLastDot + 1) ကiu
အသuB$CပuKပ?$ Dot eန+က#က Extension Type ကiu Cဖတ#ယOKပ?$ Return Cပန#eပ$eနပ3တယ#။
Learning Java 228 မင#$လ&င#
Java Developer Class
Replacing Characters
String Object ထ-မH+ပ3တ-6 Character eတ&၊ ဒ3မHမဟuတ#ရင# String အစiတ#အပiuင#$eတ&ကiu အCခ+$ တန#ဖiu$eတ&န-9
အစ+$ထiu$Kပ?$ eန+က#ထပ# String Object တစ#ခuကiu တည#eဆ+က#eပ$Aiuင#တ-6 Method eတ&ကeတ+6 eအ+က#ပ3
အတiuင#$ Cဖစ#Fကပ3တယ#။
Code 1 ကeတ+6 Character ကiu အသuB$CပuKပ?$ Replace လuပ#တ+Cဖစ#Kပ?$၊ Code 2 ကeတ+6 Character
Sequence ကiu အသuB$CပuKပ?$ Replace လuပ#တ+ Cဖစ#ပ3တယ#။ Code 1 eက+ Code 2 ပ3 Replace လuပ#ခGင#တ-6
စ+လuB$န-9 တOသမZ စ+လuB$eတ&အ+$လuB$ကiu Replace လuပ#Aiuင#တ+ကiu eတ&Jရပ3တယ#။
Code 3 န-9 Code 4 ကeတ+6 Regular Expression ကiu အသuB$CပuKပ?$ Pattern Match Cဖစ#တ-6 String eတ&ကiu
Replace လuပ#တ+Cဖစ#ပ3တယ#။ Code 3 မH+ replaceAll() Method ကiu အသuB$Cပuထ+$တ-6 အတ&က# Match Cဖစ#သမZ
String eတ&အ+$လuB$ကiu Replace လuပ#သ&+$Kပ?$၊ Code 4 မH+eတ+6 replaceFirst() Function ကiu အသuB$Cပuထ+$တ-6
အတ&က# ပထမဆuB$ Match Cဖစ#တ-6 String ကiuသ+ Replace လuပ#သ&+$တယ#ဆiuတ+ကiu eတ&JAiuင#ပ3တယ#။
Comparing Strings
Compare လuပ#တယ#ဆiuတ+ဟ+ ဘယ#သOPက?$သလ- ဘယ#သOငယ#သလ-ဆiuတ+ကiu Ai[င#$ယHT#တ+Cဖစ#ပ3တယ#။
Compare လuပ#Aiuင#မHသ+ ငယ#စT#Pက?$လiuက#၊ Pက?$စT#ငယ#လiuက# အစQiတ-6 Sorting လuပ#တ+eတ&ကiu eဆ+င#ရ&က#Aiuင#မH+
Cဖစ#ပ3တယ#။ Java မH+က Collection eတ&န-9 Array eတ&ထ-က Element eတ&ကiu Sort လuပ#Aiuင#ဖiu Collections
Framework ထ-မH+ Utility Class eတ&ကiu Cပင#eပ$ထ+$ပ3တယ#။ Utility Class eတ&ကiu အသuB$CပuKပ?$ Sort လuပ#Aiuင#ဖiu
အတ&က# Comparable Interface ကiu Implement လuပ#ထ+$ဖiuလiuအပ#ပ3တယ#။
String ဟ+လ- Comparable Interface ကiu Implement လuပ#ထ+$တ-6 အတ&က# compareTo() Method ကiu
eရ$သ+$ထ+$Kပ?$ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 String eတ&ကiuလ- Collection Framework ရ-I Utility Class eတ&ကiu
အသuB$CပuKပ?$ Natural Ordering အလiuက# Sort လuပ#လiuရပ3တယ#။ Sort လuပ#တ+န-9 ပတ#သက#Kပ?$ Collection
Framework အeFက+င#$ကiu eရ$သ+$တ-6အခ3မH+ အeသ$စiတ# eဖ2Cပသ&+$ပ3မယ#။
String မH+က String Cဖစ#သည#အeလG+က# Compare လuပ#တ+န-9 ပတ#သက#Kပ?$ အသuB$မG+$Aiuင#တ-6 Method eတ&ကiu
လ- ထပ#မBCပင#ဆင#ထ+$ပ3eသ$တယ#။
String တစ#ခuဟ+ သတ#မHတ#ထ+$တ-6 String တစ#ခuန-9 စသလ+$ ဆuB$သလ+$ဆiuတ+ကiu သiQiAiuင#ဖiu startsWith() န-9
endsWidth() Method eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။
// Code 2 -> 0
int result2 = "Java".compareToIgnoreCase("java");
System.out.println(result2);
}
Compare လuပ#တ-6 Method eတ&ရ-I Return Type ဟ+ Integer eတ&Cဖစ#Fကပ3တယ#။ သuညဆiuရင# String AHစ#ခuဟ+
တOတယ#လiu အဓiပW3ယ#ရKပ?$၊ အeပ3င#$ကiန#$ဆiuရင#eတ+6 ဘယ#ဘက#က String ဟ+ Pက?$တယ#လiu အဓiပW3ယ#ရပ3တယ#။
Return တန#ဖiu$ အAuတ#ကiန#$ဆiuပ3က ဘယ#ဘက#က String က ငယ#တယ#လiu အဓiပW3ယ#ရပ3တယ#။
အထက#ပ3 ကuဒ#ထ-က Code 1 မH+ “Java”.compareTo(“java”) လiu Compare လuပ#eနပ3တယ#။ “J” ဟ+ “j” ထက#
ငယ#တ-6 အတ&က# ရလဒ#ဟ+ -32 အAuတ#ကiန#$Cဖစ#ပ3တယ#။ တဖန# Code 2 မH+eတ+6 e^မH+ပ3တ-6 String AHစ#ခuကiuပ-
compareToIgnoreCase() Method ကiu အသuB$CပuKပ?$ Compare လuပ#ပ3တယ#။ Case eတ&ကiu ထည#6မတ&က#ပ-
Compare လuပ#တ-6 အတ&က# “Java” န-9 “java” ဟ+ တOပ3တယ#လiu အeCဖရပ3တယ#။
တဖန# String AHစ#ခuကiu တOမတO စစ#eဆ$Aiuင#ဖiuအတ&က# equals() န-9 equalsIgnoreCase() Method တiuကiu Cပင#eပ$
ထ+$ပ3တယ#။ အတiအကGတOမတOကiu သiခGင#ရင#eတ+6 equals() method ကiu အသuB$Cပuသင#6Kပ?$၊ စ+လuB$ အPက?$အeသ$
ကiu ထည#6မတ&က#ပ- တOမတOစစ#ခGင#ရင#eတ+6 equalsIgnoreCase() method ကiu အသuB$Cပuသင#6ပ3တယ#။
toOffset int String Object ရ-I Match လuပ#ခGင#တ-6 Region ရ-I အစ Index
offset int အCခ+$ String Object ရ-I Match လuပ#ခGင#တ-6 Region ရ-I အစ Index
Region Match ကiu အသuB$Cပuဖiuအတ&က# regionMatch() Method AHစ#ခuကiu Overload လuပ#Kပ?$ eရ$သ+$ထ+$ပ3
တယ#။ Case ကiu Ignore လuပ#Kပ?$ Match လuပ#မယ#ဆiuရင#eတ+6 ignorecase Argument ပ3တ-6 method ကiu
အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
Code 1 န-9 Code 2 တiuကeတ+6 ignorecase Argument မပ3တ-6 regionMatches() method ကiu အသuB$Cပuထ+$
Fကတ+ပ3။ Code 1 မH+ self ရ-I 11 လuB$eCမ+က# စ+လuB$ဟ+ P Cဖစ#Kပ?$ other ရ-I ၅ လuB$eCမ+က# စ+လuB$ဟ+လ- P Cဖစ#ပ3
တယ#။ အ-6ဒ?အစစ+လuB$eတ&ကeန ၅ လuB$အထiတiuက#စစ#လiuက#တ-6အခ3မH+ AHစ#ခuစလuB$ Progr Cဖစ#eနတ-6 အတ&က# ရလဒ#
ဟ+ true Cဖစ#ပ3တယ#။
Case 2 မH+ကGeတ+6 self ရ-I ၆ လuB$eCမ+က# စ+လuB$ဟ+ J Cဖစ#Kပ?$ ၄ လuB$အထiယOရင# JAVA Cဖစ#ပ3မယ#။ otherr ရ-I 0
ကeန စ+လuB$ ၄ လuB$ယOရင# Java Cဖစ#eနပ3တယ#။ Case မတOတ-6 အတ&က# regionMatch() Method ရ-I ရလဒ#ဟ+
false Cဖစ#ပ3မယ#။ Case 3 ကeတ+6 Case 2 န-9 ကGန#တ-6 တန#ဖiu$eတ&ကeတ+6 အတOတOပ-။ caseignore Argument
ကiu true လiueပ$ထ+$တ-6 အတ&က# JAVA န-9 Java ကiu Case ကiu Ignore လuပ#Kပ?$ Match လuပ#ပ3မယ#။ ဒ36eFက+င#6
ရလဒ#ဟ+ ture Cဖစ#သ&+$တ+ Cဖစ#ပ3တယ#။
String Object တစ#ခuကeန သတ#မHတ#ထ+$တ-6 eန+က# String တစ#ခuန-9 Split လuပ#လiuတ-6 အခ3မH+ split() Method
ကiu အသuB$CပuAiuင#ပ3တယ#။ System တစ#ခuကeန အCခ+$ System တစ#ခuကiu Data eတ&eပ$ပiuတ-6 အခ3မGiu$eတ&မH+
Comma Sperated File eတ& Tabb Sperrated File eတ&ကiu အသuB$Cပueလ6Qiပ3တယ#။ ထiu File eတ&ထ-က Data
eတ&ကiu Cပန#Kပ?$ ထuတ#ယOတ-6 အခ3မGiu$မH+ split() Method ကiu အသuB$CပuAiuင#ပ3တယ#။ String ရ-I split() method မH+
Overload လuပ#ထ+$တ-6 Method AHစ#ခuQiပ3တယ#။ ပထမတစ#ခuကeတ+6 String တစ#ခuကiu Argument အeနန-9
ယOထ+$တ-6 Method Cဖစ#Kပ?$ အ-6ဒ? Argument န-9 Split လuပ#မH+ Cဖစ#ပ3တယ#။ eအ+က#ပ3နမOန+ထ-ကလiu csvData ကiu
“,” န-9 Split လuပ#မယ#ဆiuရင# [“Yangon”, “Mandalay”, “Taungyi”,”Pathein”] Array ကiu Cပန#လည#ရQiမH+ Cဖစ#ပ3
တယ#။
ဒuတiယ Method ကeတ+6 String တစ#ခuန-9 Integer တစ#ခuကiu Argument အeနန-9 ယOထ+$တ-6 Method ပ3။ String
Argument ကeတ+6 Split လuပ#မည#6 String Cဖစ#Kပ?$ ဒuတiယ Integer Argument ကeတ+6 မOလ String Object ကiu
ဘယ#AHစ#ပiuင#$ပiuင#$မH+လ- ဆiuတ+ကiu သတ#မHတ#eပ$Aiuင#တ-6 Parameter Cဖစ#ပ3တယ#။ အထက#ပ3 နမOန+ထ-မH+လiu
csvData.split(“,”, 2) လiueရ$ထ+$ရင# [“Yangon”, “Mandalay,Taungyi,Pathein”] ဆiuတ-6 String AHစ#ခuပ3တ-6
Array Object ကiu ရQiမH+ Cဖစ#ပ3တယ#။
String Object ရ-I e^eန+က#မH+Qiတ-6 Space eတ&ကiu trim() method ကiu အသuB$CပuAiuင#Kပ?$၊ String ထ-မH+Qiတ-6 စ+လuB$
eတ&အ+$လuB$ကiu Lower Case ကiu eCပ+င#$ခGင#ရင# toLowerCase() ၊ Upper Case ကiu eCပ+င#$ခGင#ရင#
toUpperCase() Method တiuကiu အသuB$CပuAiuင#ပ3တယ#။
တစ#ခuမHတ#ထ+$ဖiuလiuတ+က String ဟ+ Immutabble Object Cဖစ#တ-6 အတ&က# ဘယ#လiu Method ကiuပ- သuB$သuB$ eန+
ကက#ထပ# String Object အသစ#တစ#ခuကiu Create လuပ#eပ$မH+ Cဖစ#Kပ?$ မOလ Object ရ-I တန#ဖiu$ဟ+ eCပ+င#$သ&+$မH+
မဟuတ#ပ3ဘO$။
Composing String
String eတ&ကiu eပ3င#$ခGင#ရင# + Operator ဒ3မHမဟuတ# concat() Method ကiu အသuB$CပuAiuင#တယ#လiu e^မH+ eလ6လ+
ခ-6Fကပ3တယ#။ ဒ3eပမ-6 မiမieရ$သ+$eနတ-6 Application ထ-မH+ အPကiမ#Pကiမ# String eတ&ကiu Compose လuပ#eနရမယ#
ဆiuရင#eတ+6 Memory Usage န-9 ပတ#သက#Kပ?$ သတiထ+$ဖiuလiuအပ#ပ3တယ#။
static String add(String s1, String s2, String s3, String s4) {
return s1 + s2 + s3 + s4;
}
နမOန+ထ-မH+ String 4 ခuကiuယOKပ?$ eပ3င#$eပ$eနတ-6 add() Method QiKပ?$၊ Main Method ထ-ကeန add() Method
ကiu AHစ#Pကiမ#eခ2eနတ+ကiu eတ&Jရပ3မယ#။ ဘ+မH Cပဿန+မQiသလiuCမင#ရပ3မယ#။ ဒ3eပမ-6 + eတ&ကiu အသuB$CပuKပ?$
String eတ&ကiu eပ3င#$တ-6 အခ3မH+ ဘယ#လiu အလuပ#လuပ#တယ#ဆiuတ+န-9 eန+က#က&ယ#မH+ String Pools Qieနတယ#ဆiu
တ-6 အခGက#ကiu eခ3င#$ထ-မH+ ထည#6Kပ?$ လuပ#eဆ+င#ပuBeတ&ကiu တဆင#6ခGင#$eလ6လ+Fကည#6Fကရeအ+င#။
Main Method ထ-ကeန Code 1 Statement ကiu Evaluate လuပ#တ-6 အခ3မH+ “Hello “, “Java “, “World” န-9
“Champion” ဆiuတ-6 String Object eလ$ခuကiu String Pools ထ-မH+ သ&+$eဆ+က#ပ3လiမ#6မယ#။ Kပ?$eတ+6 add()
Method ကiu Invoke လuပ#တ-6အခ3မH+ s1 + s2 + s3 + s4 လiueရ$ထ+$ပ3တယ#။ က\န#eတ+#တiu စiတ#ထ-မH+eတ+6
အ+$လuB$ကiu eပ3င#$Kပ?$ “Hello Java World Champion” ဆiuKပ?$ အeCဖရမယ#လiu တ&က#ပ3မယ#။
ဒ3eပမ-6 Computer က အလuပ#လuပ#သ&+$မH+က အရင#ဆuB$ s1 န-9 s2 ကiu eပ3င#$ပ3တယ#။ အ-6ဒ?eတ+6 “Hello Java “ ဆiu
တ-6 String Object တစ#ခuကiu String Pools ထ- ထပ#တiu$ပ3မယ#။ Kပ?$မH ရလ+တ-6 ရလဒ#န-9 s3 ကiu ဆက#eပ3င#$eတ+6
“Hello Java World “ String Object အသစ#တစ#ခuထပ#ရလ+Kပ?$ String Pools ထ-ကiu ထပ#Kပ?$ ထည#6ပ3တယ#။ Kပ?$မH
s4 န-9eပ3င#$Kပ?$ “Hello Java World Champion” ဆiuတ-6 String တစ#ခuကiu String Pools ထ-ကiu ထပ#ထည#6ပ3မယ#။
+ Operator ကiu အသuB$CပuKပ?$ String eတ&ကiu Compose လuပ#မယ#ဆiuရင# ဘယ#ကမH Reference လuပ#မeနတ-6
String Object eတ&ကiu String Pools ထ-ကiu eရ+က#Qiသ&+$eစမH+ Cဖစ#ပ3တယ#။ Kပ?$eတ+6 String Pools ထ-က
String eတ&ဟ+ Application မKပ?$ဆuB$မခGင#$ ဒ?အတiuင#$ပ-တည#QieနမH+ Cဖစ#တ-6 အတ&က# မလiuလ+$အပ#ပ- Memory
eပ2မH+ eနရ+eတ&ကiu ယOသ&+$eစAiuင#ပ3တယ#။ ဒ36eFက+င#6 မiမiရ-I Appliation ထ-မH+ အPကiမ#Pကiမ# String eတ&ကiu eပ3င#$
eနရတ-6 Operation eတ&ပ3eနရင# + တiu concat() တiuကiu အသuB$မCပuသင#6ပ3ဘO$။
String eတ&ကiu Compose လuပ#တ-6eနရ+မH+ အသuB$Cပuဖiuအတ&က# Java မH+ Class AHစ#မGiu$ကiu Cပင#eပ$ထ+$ပ3တယ#။
အ-6ဒ3eတ&ကeတ+6 StringBuffer န-9 StringBuilder တiuပ- Cဖစ#ပ3တယ#။ သOတiueတ&ဟ+ Constructor eတ&လ-အတOတO
Cဖစ#သလiu ပ3တ-6 Method eတ&လ- အတOတOပ- Cဖစ#ပ3တယ#။ အ-6ဒ?အတ&က# လuပ#လiuရတ+eတ&လ- အတOတOပ- Cဖစ#ပ3တယ#။
မတOတ+ကeတ+6 StrringBuffer ဟ+ Thread Safe Cဖစ#Kပ?$ StringBuilder ဟ+ Thread Safe မCဖစ#ဘO$ဆiuတ+ပ3
ပ-။ Multi Thread ပတ#ဝန#$ကGင#မH+ဆiuရင# StringBuffer ကiu အသuB$Cပuသင#6Kပ?$၊ Multi Thread ပတ#ဝန#$ကGင#မဟuတ#
ဘO$ဆiuရင#eတ+6 StringBuilder ကiu အသuB$Cပuသင#6ပ3တယ#။
Append Method
အသuB$အမG+$ဆuB$ Method Cဖစ#Kပ?$ Argument ထ-က တန#ဖiu$eတ&ကiu StringBuilder ထ-က eန+က#ဆuB$eနရ+ကeန စ
Kပ?$ ထည#6သ&င#$eပ$Aiuင#ပ3တယ#။ Primitive Data Type eတ&န-9 Char Array eတ&အCပင# String eတ&ကiuလ- Append
လuပ#Aiuင#eအ+င# Method Overload လuပ#Kပ?$eရ$သ+$ထ+$ပ3တယ#။ Return Type ဟ+ StringBuilder မiမi
ကiuယ#တiuင#ပ- Cဖစ#တ-6အတ&က# Dot (.) ကiu အသuB$CပuKပ?$ Method Invocation Chain ပuBစBန-9 eရ$သ+$Aiuင#ပ3တယ#။
Insert Method
String eတ&ကiu Build လuပ#eနရင#$၊ Index eနရ+ကiu သတ#မHတ#Kပ?$ Insert လuပ#လiuတ-6 အခ3မH+ အသuB$CပuAiuင#ပ3တယ#။
Append Method eတ&လiuပ- Insert Method eတ&မH+ Method Overload ကiuအသuB$CပuKပ?$ eရ$သ+$ထ+$တ-6
အတ&က# Primitive Data Type eတ&၊ Char Array eတ&န-9 String eတ&ကiu Insert လuပ#Aiuင#ပ3တယ#။
Index Number ကiu သတ#မHတ#Kပ?$ Insert လuပ#တ-6eနရ+မH+ သတiCပuစရ+အခGက#Qiပ3တယ#။ Index Number မQiတ-6
eနရ+ကiu သတ#မHတ#Kပ?$ Insert လuပ#မiရင#eတ+6 StringIndexOutOfBoundsException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3
တယ#။
Delete Methods
StringBuilder eတ&မH+ Index Number ကiu သတ#မHတ#Kပ?$ အ-6ဒ? Index မH+Qiတ-6 Character eတ& Index From န-9 To
ကiu သတ#မHတ#Kပ?$ အ-6ဒ?Fက+$ထ-က Character eတ&ကiu Delete လuပ#Aiuင#eအ+င# Method eတ&ကiu Cပင#ဆင#eပ$ထ+$ပ3
တယ#။ Index Number ကiu အသuB$Cပueနတ+Cဖစ#တ-6 အတ&က# မQiတ-6 Index Number ကiu သတ#မHတ#မiမယ#ဆiuရင#
StringIndexOutOfBoundsException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
Replace Methods
b1.replace(5, 6 , "11");
// "Java 11 is interesting"
System.out.println(b1.toString());
StringBuilder ထ-က From န-9 To Index ကiu သတ#မHတ#Kပ?$ အCခ+$eသ+ String တန#ဖiu$တစ#ခuန-9အစ+$ထiu$လiuတ-6အခ
ခ3မH+ replace() Method ကiu အသuB$CပuAiuင#ပ3တယ#။ ထiuအCပင# StringBuilder Object န-9 Compose လuပ#ထ+$တ-6
String ကiueတ+6 toString() Method ကiu အသuB$CပuKပ?$ ရယOAiuင#ပ3တယ#။ Composed လuပ#ထ+$တ-6 String eတ&ကiu
eCပ+င#$Cပန#Cပန#လiuတ-6 အခ3မGiu$မH+ reverse() Method ကiu အသuB$CပuAiuင#ပ3တယ#။
Formatting Strings
Application eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ String eတ&ကiu Input အeနန-9 လက#ခBKပ?$ Data အeနန-9 သiမ#$ထ+$UuBသ+
မက၊ သiမ#$ထ+$တ-6 အမGiu$မGiu$eသ+ Data eတ&န-9 User ကiuန+$လည#လ&ယ#eအ+င# Cပန#Cပရတ-6 အခ3လ-Qiပ3တယ#။
Hello World Program eလ$ကiu စeရ$စT#ကထ-က Console ကeန User Input ကiuလက#ခBKပ?$ Hello ဆiuKပ?$
Console မH+ Cပန#Cပခ-6FကဘO$ပ3လiမ#6မယ#။
// Create Console
Console console = System.console();
• PrintWriter, PrintOutputStream န-9 Console eတ&မH+ format() န-9 printf() Method eတ&ကiu Cပင#eပ$ထ+$ပ3
တယ#။
• String Class မH+ format() method ကiu Cပင#ဆင#eပ$ထ+$ပ3တယ#။
• TextFormat Class မH+လ- Message eတ&ကiu Format ခGAiuင#ဖiu Cပင#ဆင#eပ$ထ+$ပ3တယ#။
• DateFormat န-9 NumberFormat Class eတ&န-9လ- Date eတ&န-9 Number eတ&ကiu Format ခGAiuင#eအ+င#
Cပင#ဆင#eပ$ထ+$ပ3တယ#။
Date Format န-9 Number Format eတ&န-9 ပတ#သက#Kပ?$ သက#ဆiuင#ရ+ အခန#$eတ&မH+ eဖ2Cပသ&+$မH+ Cဖစ#တ-6
အတ&က# ဒ?အခန#$မH+eတ+6 String eတ&ကiu Format ခGတ+န-9ပတ#သက#တ+eတ&ကiuပ- eလ6လ+သ&+$Fကပ3မယ#။ String
eတ&ကiu Format ခGတ+န-9 ပတ#သက#Kပ?$ Output eတ&ကiu Format ခGတ-6 အပiuင#$၊ String eတ&ကiu Format ခGတ-6 အပiuင#$
န-9 Message eတ&ကiu Format ခGတ-6 အပiuင#$ဆiuKပ?$ အပiuင#$ ၃ ပiuင#$ခ&-Kပ?$ eလ6လ+သ&+$Fကပ3မယ#။
Output eတ&ကiu Format ခGတ-6 အပiuင#$န-9 String eတ&ကiu Format ခGတ-6 အပiuင#$ကeတ+6 အeCခခBအ+$Cဖင#6 Format
eရ$သ+$ပuBခGင#$ ဆင#တOKပ?$ Message eတ&ကiu Format ခGတ-6 အပiuင#$ကeတ+6 e^က AHစ#ပiuင#$န-9 မတOပ3ဘO$။
Formatting Outputs
Output String eတ&ကiu Format လuပ#ဖiuအတ&က# PrintStream, PrintWriter န-9 Console Class eတ&မH+ Method
eတ&ကiuCပင#eပ$ထ+$ပ3တယ#။ System.out ဆiuတ+ကလ- System Class ထ-မH+ပ3တ-6 Static Variable တစ#ခuCဖစ#Kပ?$
Type ဟ+ PrintStream Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 System.out.printf() န-9 System.out.format() Method eတ&ကiu
အသuB$Cပuလiuရeနတ+ Cဖစ#ပ3တယ#။
Arguments
Arguments Description
format String
String Format Specifier eတ&ကiu အသuB$CပuKပ?$ Format ခGမည#6ပuBစBကiu
သတ#မHတ#eပ$ထ+$eသ+ String Object
args Object …
Format String မH+ပ3တ-6 String Format Specifier eတ&eနရ+မH+
အစ+$ထiu$မည#6 Data Object Varargs
l Locale
Format String မH+ပ3တ-6 Aiuင#ငBဆiuင#ရ+သတ#မHတ#ခGက#ကiu သတ#မHတ#eပ$Aiuင#
eသ+ Locale Object
// String format
String format = "My name is %s and I am %d' years old.%n";
String format ထ-မH+ပ3တ-6 “%s” , “%d” န-9 “%n” တiuဟ+ Format Specifier eတ&Cဖစ#FကKပ?$ Method Arguments
eတ&Cဖစ#Fကတ-6 “Mike” န-9 20 တiuဟ+ Format Specifier eတ&မH+ အစ+$ထiu$မည#6 Argument eတ&Cဖစ#Fကပ3တယ#။
Specifier eတ&ကiu % န-9စeရ$Kပ?$ %s ဆiuရင#eတ+6 String ကလ+Kပ?$ အစ+$ထiu$Aiuင#တယ#လiu အဓiပW3ယ#ရKပ?$ String
Cဖစ#တ-6 “Mike” က အစ+$ထiu$ပ3မယ#။ %d ဆiuရင#eတ+6 Digit eတ&ကiu အစ+$ထiu$Aiuင#Kပ?$ ဒ?eနရ+မH+ 20 က အစ+$ထiu$ပ3
Formatting String
Format လuပ#ထ+$တ-6 String eတ&ကiu ရယOဖiuအတ&က# String Class မH+ Static Method eတ&Cပင#eပ$ထ+$ပ3တယ#။
Arguments eတ&ကeတ+6 OutputStream eတ&မH+ပ3တ-6 Argument eတ&န-9 အတOတOပ3ပ-။ Locale ကiu သတ#မHတ#Aiuင#
တ-6 Method န-9 သတ#မHတ#စရ+မလiuတ-6 Method eတ&ကiu Overload လuပ#Kပ?$ eရ$သ+$eပ$ထ+$ပ3တယ#။
// String format
String format = "My name is %s and I am %d' years old.";
System.out.println(formattedStr);
String Format eရ$သ+$ပuB၊ Argument eတ&န-9 Formatted String ကiu တည#eဆ+က#ပuBeတ&ကeတ+6 PrintStream
eတ&မH+ပ3တ-6 Method eတ&န-9 အတOတOပ- Cဖစ#ပ3တယ#။ ဒ3eပမ-6 String ရ-I format() method မH+က Formatted
String ကiu Return Cပန#eပ$Aiuင#ပ3တယ#။ Format ခGထ+$Kပ?$သ+$ String eတ&ကiu ရယOလiuတယ#ဆiuရင#eတ+6 ဒ?
Method ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ ဆက#လက#Kပ?$ Format String eတ&ကiu ဘယ#လiueရ$ရသလ- ဆiuတ+ကiu
eလ6လ+သ&+$Fကရeအ+င#။
Calendar c = Calendar.getInstance();
String today = String.format("Today is %1$tm %1$te %1$tY", c);
Format Method မH+ပ3တ-6 ပထမဆuB$ Parameter ဟ+ format string Cဖစ#ပ3တယ#။ Format String ကiu Format ခG
ခGင#တ-6 String Fက+$မH+ “%1$™” , “%1$te” , “%1$tY” အစQiတ-6 Embedded Format Specifier eတ&န-9 ထည#6
သ&င#$eရ$သ+$ထ+$ပ3တယ#။ String တစ#ခuကiu Format ခGတ-6 eနရ+မH+ Format String ထ-မH+ပ3တ-6 Embedded
Format Specifier eတ&eနရ+မH+ Argument eတ&န-9 အစ+$ထiu$တည#eဆ+က#eပ$သ&+$မH+ Cဖစ#ပ3တယ#။
Format Specifier eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ % န-9 conversion eတ&ဟ+ မပ3မCဖစ#ပ3ရပ3မယ#။ ဆiuလiuတ+က %
န-9 conversion မပ3ပ-န-9 Format Specifier အeနန-9 မသuB$Aiuင#ပ3ဘO$။ ကGန#တ-6 [ ] န-9ပiတ#Kပ?$eရ$သ+$ထ+$တ-6 အရ+eတ&
ကeတ+6 လiuအပ#ပ3မH eရ$သ+$ရမည#6 အစiတ#အပiuင#$eတ&Cဖစ#Fကပ3တယ#။
Argument Index
Format Specifier eနရ+မH+ အသuB$Cပuမည#6 Argument List ထ-က Argument ရ-I eနရ+ကiu သတ#မHတ#လiuတ-6 eနရ+
မH+ အသuB$CပuAiuင#Kပ?$ Digit eတ&န-9 $ ကiuတ&-ဖက#eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။ Digit eတ&ကeတ+6 အသuB$Cပuမည#6
Argument ရ-I Index Number ကiu ရည#ညpန#$ပ3တယ#။ တဖန# < ကiu အသuB$CပuKပ?$ e^မH+ အသuB$Cပuခ-6တ-6 Argument
Index ကiuCပန#Kပ?$ အသuB$CပuAiuင#ပ3တယ#။
Code 3 မH+eတ+6 ဒuတiယ Format Specifier eနရ+မH+ 1$ ကiu eရ$သ+$ထ+$တ-6အတ&က# Argument 1 ကiu
အသuB$CပuKပ?$ “A A B C” လiuထ&က#ပ3တယ#။
Code 4 မH+eတ+6 တတiယ Format Specifier eနရ+မH+ < ကiu eရ$သ+$ထ+$တ-6 အတ&က# အe^က Argument
Index Cဖစ#တ-6 2 ကiu အသuB$Cပuသ&+$ပ3တယ#။ ဒ36eFက+င#6 “A B B C” ဆiuKပ?$ Format ခGeပ$မH+ Cဖစ#ပ3တယ#။
Conversions
Format Specifier ကiueရ$သ+$တ-6 eနရ+မH+ မCဖစ#မeန eရ$သ+$ရမည#6 အစiတ#အပiuင#$Cဖစ#Kပ?$၊ ဘယ#လiu Data Type
မGiu$အeနန-9 Format လuပ#တ-6eနရ+မH+ အသuB$Cပuမယ#ဆiuတ+ကiu သတ#မHတ#eပ$Aiuင#ပ3တယ#။ အသuB$CပuAiuင#တ-6
Conversion Category eတ&ကeတ+6 General, Character, Numeric, Date / Time, Percent န-9 Line
Separator တiuပ- Cဖစ#ပ3တယ#။
// "null 1 42 84567C67"
String str2 = String.format("%h %H %h %H", null, 1, "B", new Date());
အထက#ပ3နမOန+ကeတ+6 Boolean န-9 Hash String ကiu အသuB$Cပuတ-6 နမOန+Cဖစ#ပ3တယ#။ Boolean eတ&မH+က
Argument တန#ဖiu$က null Cဖစ#eနရင# false လiueဖ2CပKပ?$၊ Hash String မH+ကeတ+6 null Cဖစ#eနရင# null လiuပ- eဖ2
CပမH+ Cဖစ#ပ3တယ#။
// "10%"
String result = String.format("%d%%", 10);
Percent Character ‘%’ ဟ+ Format Specifier eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ သuB$eနတ-6 အတ&က# Format
String eတ&Fက+$ထ-မH+ ဒ?အတiuင#$eရ$သ+$ထ+$လiu မရAiuင#ပ3ဘO$။ ဥပမ+အ+$Cဖင#6 10% လiu Format မH+CပခGင#ရင#
“%d%” လiueရ$သ+$လiuမရAiuင#ပ3ဘO$။ ဒuတiယ % ကiueတ&Jရင#6 eန+က#မH+ Conversion မQiလiuဆiuKပ?$
UnknownFormatConversionException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။ အထက#ပ3 နမOန+မH+ %d ဟ+ Digit ကiu
eဖ2Cပဖiu Format Specifier တစ#ခuCဖစ#Kပ?$ %% ဟ+ % ကiu eဖ2Cပဖiuအတ&က# အသuB$Cပuရတ-6 Format Specifier တစ#
ခuCဖစ#ပ3တယ#။
e, E Floating Number Floating Number eတ&ကiu Scientific Notation န-9 Format လuပ#eပ$မH+ Cဖစ#ပ3
တယ#
f Floating Number Floating Number eတ&ကiu Decimal Number အeနန-9 Format လuပ#eပ$မH+ Cဖစ#ပ3
တယ#
g, G Floating Number Precision န-9 Rounding Number အeပ2မOတည#Kပ?$ Floating Number eတ&ကiu
Scientific Notation န-9 Format လuပ#eပ$Aiuင#မH+ Cဖစ#ပ3တယ#
a, A Floating Number Floating Number eတ&ကiu Hexadecimal Number အeနန-9 Format လuပ#eပ$မH+
Cဖစ#ပ3တယ#
// Decimal : 10
String result1 = String.format("Decimal : %d", 10);
// Octal : 12
String result2 = String.format("Octal : %o", 10);
// Hexa : a
String result3 = String.format("Hexa : %x", 10);
// Hexa : A
String result4 = String.format("Hexa : %X", 10);
// Floating : 3.141593e+00
String result1 = String.format("Floating : %e", Math.PI);
// Floating : 3.141593E+00
String result2 = String.format("Floating : %E", Math.PI);
// Floating : 3.141593
String result3 = String.format("Floating : %f", Math.PI);
tS Time စက€ န#9ကiu 00 - 60 အထi (60 ကiu Leap Seconds မH+သ+ အသuB$Cပu)
အထက#ပ3အတiuင#$ Date / Time eတ&ကiu String Format အတ&င#$ ထည#6သ&င#$eရ$သ+$Aiuင#ပ3တယ#။ Date Time
Format န-9ပတ#သက#Kပ?$ Date & Calendar အခန#$န-9 Date & Time API အခန#$တiuမH+ ဆက#လက#eဖ2Cပသ&+$ပ3ဦ$
မည#။
Width
Code 1 ထ-မH+ %10s လiueရ$ထ+$တ+ဟ+ Format Specifier တစ#ခuCဖစ#Kပ?$ 10 ဟ+ Width Cဖစ#ပ3တယ#။ String
Argument တစ#ခuကiu Character 10 လuB$စ+ Format ခGမယ#လiu အဓiပW3ယ#ရပ3တယ#။ တကယ#လiu Argument String
ရ-I Length ဟ+ ၁၀ လuB$မCပည#6ခ-6ရင# ဘယ#ဘက#Cခမ#$မH+ Space eတ&ကiu Cဖည#6Kပ?$ Format ခGသ&+$မH+ Cဖစ#ပ3တယ#။
တကယ#လiu Argument String ဟ+ 10 လuB$eကG+#ခ-6မယ#ဆiuရင# Qiသeလ+က# အeရအတ&က#ကiu Cပန#Cပeပ$မH+ Cဖစ#ပ3
တယ#။
Code 2 ကeတ+6 Integer ကiu Format ခGeနတ+ပ3။ %10d လiueရ$ထ+$တ-6 အတ&က# ၁၀ လuB$မCပည#6တ-6 eနရ+eတ&
ကiu Space န-9 ဘယ#ဘက#မH+ Cဖည#6Kပ?$ Format ခGသ&+$ပ3တယ#။
Code 3 မH+eတ+6 %010d Cဖစ#တ-6 အတ&က# ၁၀ မCပည#6တ-6 eနရ+eတ&ကiu 0 အစ+$ထiu$Cဖည#6Kပ?$ Format ခGeပ$Aiuင#ပ3
တယ#။ အလ+$တOပ- Floating Number eတ&ကiuလ- Width သတ#မHတ#Kပ?$ Format ခGလiuရပ3တယ#။
General Conversion eတ&န-9 Precision ကiu eရ$သ+$ထ+$ရင# အမG+$ဆuB$eဖ2CပAiuင#တ-6 Character Count ကiu
သတ#မHတ#eပ$Aiuင#ပ3တယ#။
// “Mike Is Te"
System.out.format("%.10s%n", "Mike Is Test Data");
Floating Number Conversion eတ&န-9 Precision ကiu eရ$သ+$ရင#eတ+6 အဓiပW3ယ#တစ#မGiu$ရပ3တယ#။ “e”, “E” န-9
“f” မH+ဆiuရင# ဒဿမကiန#$ရ-I အမG+$ဆuB$eဖ2CပAiuင#တ-6 အeရအတ&က#ကiu သတ#မHတ#eပ$မH+ Cဖစ#ပ3တယ#။
// “3.142"
System.out.format("%.3f%n", Math.PI);
Conversion “g” န-9 “G” eတ&မH+ဆiuရင# Round လuပ#Kပ?$တ-6အခ3မH+ Qieနတ-6 Digit အeရအတ&က# စuစueပ3င#$ကiu
သတ#မHတ#eပ$Aiuင#ပ3တယ#။
// “3.14"
System.out.format("%.3g%n", Math.PI);
Flags
Format Specifier eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ Default Format eတ&ကiu Customize လuပ#ဖiuအတ&က# Flag eတ&
ကiu အသuB$CပuAiuင#ပ3တယ#။ Flag eတ&ဟ+ Conversion eတ&ရ-I အeထ+က#အကOeတ&Cဖစ#တ-6 အတ&က# Conversion
အမGiu$အစ+$အeပ2မOတည#Kပ?$ eရ$သ+$လiu ရAiuင#တယ# မရAiuင#ဘO$ဆiuတ+Qiပ3တယ#။ String Format eတ&မH+ အသuB$Cပu
Aiuင#တ-6 Flag တ&ကeတ+6 Minus (‘-‘), Hash (‘#’), Plus (‘+’) , Space (‘ ‘) , Comma (‘,’) န-9 Left Parenthesis
‘(‘ တiuပ-Cဖစ#ပ3တယ#။
Width eတ&ကiu သတ#မHတ#ထ+$တ-6 eနရ+မH+ တကယ#လiu Argument ရ-I တန#ဖiu$သ+ သတ#မHတ#ထ+$တ-6 Width တန#ဖiu
ထက# ငယ#eနခ-6မယ#ဆiuရင# Code 1 ထ-က အတiuင#$ မeလ+က#တ-6 အeရအတ&က#အလiuက# ဘယ#ဘက#မH+ Space eတ&
ကiu Cဖည#6Kပ?$ ည+ဘက#ကiu ကပ#Kပ?$ ည?eအ+င# စ?eပ$မH+ Cဖစ#ပ3တယ#။ ဒ3eပမ-6 Code 2 မH+လiu Minus Flag ကiu
အသuB$Cပuလiuက#တ-6 အခ3မH+ (“%-10s”) ဘယ#ဘက#ကiu ကပ#Kပ?$ ည?eအ+င#စ?eပ$မH+Cဖစ#ပ3တယ#။ မeလ+က#တ-6 eနရ+
eတ&ကiueတ+6 Space eတ&ကiu အသuB$CပuKပ?$ သတ#မHတ#ထ+$တ-6 Width Cဖစ#eအ+င# စ?eပ$ပ3မယ#။
// "1750"
System.out.format("%o%n", 1000);
// "01750"
System.out.format("%#o%n", 1000);
// "3E8"
System.out.format("%X%n", 1000);
// "0x3E8"
System.out.format("%#x%n", 1000);
// "0X3E8"
System.out.format("%#X%n", 1000);
Hash (‘#’) Flag ကiueတ+6 ‘o’, ‘x’ န-9 ‘X’ Conversions တiuန-9 တ&-ဖက#အသuB$CပuAiuင#Kပ?$ အCခ+$eသ+ ပuBစBတစ#မGiu$န-9 Cပ
eပ$Aiuင#ပ3တယ#။ Octal Decimal eတ&ဆiuရင#eတ+6 ရလဒ#ရ-I e^မH+ 0 ကiu Cဖည#6Kပ?$ eဖ2Cပeပ$မH+ Cဖစ#Kပ?$
Hexadecimal eတ&မH+ဆiuရင#eတ+6 e^မH+ ‘0x’ ဒ3မHမဟuတ# ‘0X’ ကiu Cဖည#6စ&က#Kပ?$eဖ2Cပeပ$မH+ Cဖစ#ပ3တယ#။
// "-11"
System.out.format("%+d%n", new BigInteger("-11"));
// "+13"
System.out.format("%+o%n", new BigInteger("11"));
// "+B"
System.out.format("%+X%n", new BigInteger("11"));
// "+11"
System.out.format("%+d%n", 11);
// "-3.141593"
System.out.format(“%+f%n", 0 - Math.PI);
Plus Flag ကiu BigInteger eတ&န-9 ‘d’, ‘o’, ‘x’, ‘X’ Conversions eတ&န-9 တ&-ဖက# အသuB$Cပuတ-6 eနရ+မGiu$မH+ အသuB$Cပu
Aiuင#ပ3တယ#။ Kပ?eတ+6 byte, short, int, long အစQiတ-6 Integral Data Type eတ&န-9 သက#ဆiuင#ရ+ Wrapper Type
eတ&န-9 ‘d’ conversions eတ&ကiuတ&-ဖက#eရ$သ+$တ-6 eနရ+မH+ အသuB$CပuAiuင#ပ3တယ#။ တဖန# Floating Numberr eတ&
ကiu Format ခGတ-6 eနရ+မH+ အသuB$CပuAiuင#ပ3တယ#။
// " 100"
System.out.format("% d%n", 100);
// "-3.141593"
System.out.format("% f%n", 0 - Math.PI);
Space (‘ ‘) Flag eတ&ကiueတ+6 ‘d’ န-9 ‘f’ Conversions တiuန-9 တ&-ဖက#အသuB$CပuAiuင#Kပ?$ အeပ3င#$ကiန#$eတ&eနရ+မH+
အe^မH+ Space တစ#လuB$ကiuခBKပ?$ Format လuပ#eပ$Aiuင#ပ3တယ#။
// "18,985"
System.out.format("%,d%n", 18985);
// "181,715.098000"
System.out.format("%,f%n", 181715.098);
Comma (‘,’) Flag ကiueတ+6 ‘d’ conversion န-9 Floating Number Conversion eတ&မH+ eရ$သ+$Aiuင#ပ3တယ#။
အသuB$Cပueနတ-6 Locale အလiuက# ကiန#$eတ&ကiu ခ&-Kပ?$eရ$သ+$eပ$Aiuင#ပ3တယ#။
// "100"
System.out.format("%(d%n", 100);
// "(100)"
System.out.format("%(d%n", -100);
// "10.019"
System.out.format("%(.3f%n", 10.019);
// "(10.019)"
System.out.format("%(.3f%n", -10.019);
Left Parenthesis ‘(‘ Flag ကiuလ- BigInteger eတ&န-9 ‘d’, ‘o’, ‘x’, ‘X’ Conversions eတ&န-9 တ&-ဖက# အသuB$Cပuတ-6
eနရ+န-9၊ byte, short, int, long အစQiတ-6 Integral Data Type eတ&န-9 သက#ဆiuင#ရ+ Wrapper Type eတ&န-9 ‘d’
conversions eတ&ကiuတ&-ဖက#eရ$သ+$တ-6 eနရ+မH+ အသuB$CပuAiuင#ပ3တယ#။ တဖန# Floating Numberr eတ&ကiu
Format ခGတ-6 eနရ+မH+လ- အသuB$CပuAiuင#ပ3တယ#။ အဆiuပ3 Conversions eတ&မH+ Left Parenthesis ‘(‘ Flag ကiu
eရ$သ+$ထ+$ရင# အAuတ#ကiန#$eတ&eနရ+မH+ () န-9ပiတ#Kပ?$eဖ2Cပeပ$မH+ Cဖစ#ပ3တယ#။
Formatting Message
Application eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ End User eတ&ဆ?ကiu Message eတ&ကiu eဖ2Cပရမည#6 အခ3မGiu$eတ&န-9
FကuBeတ&Jရတတ#ပ3တယ#။ အ-6ဒ?လiuအခ3မGiu$မH+ String Message eတ&ကiu အeသeဖ2Cပလiuရတ-6 အခ3မGiu$လ- Qiသလiu၊
Program ထ-မH+ပ3တ-6 Data eတ&န-9 Message eတ&ကiuတည#eဆ+က#Kပ?$Cပရတ-6 အခ3လ-Qiပ3တယ#။
“Hello Min Lwin, you have to enter phone number!” ဆiuတ-6 Message ကiueဖ2Cပမယ#ဆiuရင# “Min Lwin” ဆiu
တ-6 eနရ+ကiu အeသeရ$ထ+$ခ-6ရင# အCခ+$ User eတ&အတ&က#ဆiuရင# eန+က#ထပ# Message ကiu အသစ#
တည#eဆ+က#eနရမH+ Cဖစ#ပ3တယ#။ Kပ?$eတ+6 “phone number” ဆiuတ-6 eနရ+ကiu အeသeရ$ထ+$ခ-6ရင# “email
address” မပ3ခ-6လiu Message Cပန#Cပမယ#ဆiuရင#eတ+င# eန+က#ထပ# Message eတ&ကiu eရ$သ+$eနရပ3မယ#။
Name န-9 Input Fields eတ&ကiu Parameter အeနန-9 ရယOAiuင#တ-6 Template တစ#ခuကiu eရ$သ+$ထ+$ခ-6ရင#
Message eတ&ကiu အမGiu$မGiu$ Format ခGKပ?$ အသuB$CပuAiuင#မH+Cဖစ#ပ3တယ#။ Java Language မH+ Message eတ&ကiu
Format ခGAiuင#ဖiuအတ&က# MessageFormat ဆiuတ-6 Class ကiuCပင#ဆင#eပ$ထ+$ပ3တယ#။
MessageFormat Class မH+ သတ#မHတ#ထ+$တ-6 Message Format Pattern န-9 အသuB$Cပuမည#6 Parameter Set
တiuကiu အသuB$CပuKပ?$ အလ&ယ#တကO Format လuပ#ထ+$တ-6 Message eတ&ကiu eရ$သ+$ဖiuအတ&က# format() ဆiuတ-6
Static Method တစ#ခuကiu Cပင#eပ$ထ+$ပ3တယ#။
Argument အeနန-9 Format Pattern ကiu eရ$သ+$ထ+$တ-6 String တစ#ခuန-9 Object Varargs Type တစ#ခuတiuကiu
အသuB$Cပuပ3တယ#။ Format Pattern ကeတ+6 String Object Cဖစ#Kပ?$ String Fက+$ထ-မH+ Format Element eတ&ကiu
ညqပ#Kပ?$eရ$သ+$ထ+$ပ3တယ#။ အထက#နမOန+ထ-မH+ပ3တ-6 {0} န-9 {1} တiuဟ+ Format Template eတ&Cဖစ#ပ3တယ#။
ဒuတiယ Argument ကeတ+6 Verarges Type Cဖစ#တ-6 အတ&က# Format Element eတ&မH+ အစ+$ထiu$eရ$သ+မည#6
Object eတ&ကiu အသuB$Cပuလiuသeလ+က# Comma ခBKပ?$eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။
အထက#နမOန+ထ-က “Min Lwin”, “Phone Number” ဆiuတ+ကeတ+6 Arguments eတ&ပ- Cဖစ#ပ3တယ#။ Format ခG
Kပ?$တ-6 eန+က#မH+ Format Element {0} eနရ+ကiu ပထမ Argument ကအစ+$ထiu$သ&+$Kပ?$ {1} eနရ+ကiu ဒuတiယ
Argument က အစ+$ထiu$သ&+$တ-6 အတ&က# “Hello Min Lwin, You have to enter Phone Number!” ဆiuတ-6
String Message ကiu တည#eဆ+က#eပ$Aiuင#တ+ပ- Cဖစ#ပ3တယ#။
Message Format ကiu အသuB$CပuCခင#$အ+$Cဖင#6 သတ#မHတ#ထ+$တ-6 Message Pattern တစ#ခuန-9 Argument အမGiu$
မGiu$ကiu အသuB$CပuKပ?$ မတOည?တ-6 Message eတ&ကiu အလ&ယ#တကOတည#eဆ+က#Aiuင#မH+ Cဖစ#ပ3တယ#။
Format Elements
Format Element eတ&ကiu Message Format Pattern eတ&ထ-မH+ eရ+Kပ?$eရ$သ+$Aiuင#ပ3တယ#။ Format
Element eတ&ကiu Argument Index, Format Type န-9 Format Style တiuန-9 ဖ&-Jစည#$တည#eဆ+က#ထ+$ပ3တယ#။
Format Element eတ&ကiu eအ+က#ပ3 ပuBစB ၃ မGiu$န-9 eရ$သ+$Aiuင#ပ3တယ#။
1. {Argument Index}
2. {Argument Index, Format Type}
3. {Argument Index, Format Type, Format Style}
Argument Index
// Code 1 -> A, B, C
String m1 = MessageFormat.format("{0}, {1}, {2}", arguments);
// Code 2 -> C, B, A
String m2 = MessageFormat.format("{2}, {1}, {0}", arguments);
// Code 3 -> A, A, A
String m3 = MessageFormat.format("{0}, {0}, {0}", arguments);
Message eတ&ကiu Format ခGတ-6eနရ+မH+ Format Element ရ-I Argument Index eတ&န-9 Arguments Array
ထ-က Object ကiuယOKပ?$ Message eတ&ကiu တည#eဆ+က#eပ$တ+ပ- Cဖစ#ပ3တယ#။ Format Index eတ&အတiuင#$
Argument eတ&ထ-မH+ တန#ဖiu$ကiu Q+မeတ&Jရင#eတ+6 Code 4 ထ-မH+လiu Format မခGeတ+6ပ- Format Pattern ထ-မH+
ပ3တ-6 အတiuင#$ပ- Cပန#eဖ2Cပပ3တယ#။
Format Type
Format Type eတ&ဟ+ Format Element eတ&ရ-I ဒuတiယeနရ+မH+ eရ$သ+$ရKပ?$ အသuB$Cပuမည#6 Argument ရ-I
Type ကiu သတ#မHတ#eပ$Aiuင#ပ3တယ#။ number, date, time န-9 choice တiuထ-က တစ#ခuခuကiu eရ&$ခGယ# အသuB$CပuAiuင#ပ3
တယ#။
Format Style eတ&ကiu Format Type eတ&န-9 တ&-ဖက#eရ$သ+$ရမH+ Cဖစ#Kပ?$၊ Format Type အလiuက# eရ$သ+$Aiuင#တ-6
Format Style eတ&ဟ+ မတOည?Fကပ3ဘO$။ တကယ#eတ+6 Format Element eတ&မH+ Format Type eတ&ပ3လ+ရင#
Format Style အလiuက# သက#ဆiuင#ရ+ Sub Format Object eတ&ကiu Create လuပ#Kပ?$ Format Element ရ-I တန#ဖiu$
ကiu Format လuပ#eပ$မH+ Cဖစ#ပ3တယ#။ တည#eဆ+က#သ&+$မည#6 Sub Format Object eတ&ကeတ+6 eအ+က#ပ3
အတiuင#$Cဖစ#ပ3တယ#။
Number Format Type eတ&န-9 Integer Format Style ကiu အသuB$CပuKပ?$ Floating Number eတ&ကiuလ- Integer
အeနန-9 eဖ2Cပeပ$Aiuင#မH+ Cဖစ#ပ3တယ#။ Number Separated Character eတ&ကiueတ+6 လiuအပ#သလiu အသuB$Cပueန
တ-6 Locale အလiuက# သတ#မHတ#eပ$သ&+$မH+ Cဖစ#ပ3တယ#။
Currency Format Style ကiu အသuB$Cပမယ#ဆiuရင# သက#ဆiuင#ရ+ Locale အလiuက# Currency eတ&န-9 တ&-ဖက#eဖ2Cပ
eပ$Aiuင#ပ3မယ#။ အထက#ပ3 အတiuင#$ “MMK100,000.00” ဆiuKပ?$eဖ2Cပeပ$သ&+$Aiuင#ပ3တယ#။ Percent Format Style
ကiu အသuB$Cပuမယ#ဆiuရင# Argument တန#ဖiu$ကiu 100 န-9 eCမq+က#Kပ?$ % ပuBစBန-9 eဖ2Cပeပ$သ&+$မH+ Cဖစ#ပ3တယ#။ မiမi
ကiuယ#ပiuင# Format ကiu eရ$သ+$မယ#ဆiuရင#eတ+6 Decimal Format eရ$သ+$ပuBအတiuင#$eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။
Format Type date န-9 time eတ&မH+ short, medium, long န-9 full တiuကiu အသuB$CပuAiuင#ပ3တယ#။ အသuB$Cပueနတ-6
Locale အလiuက# သတ#မHတ#ထ+$တ-6 Format Style eတ&န-9 အသ?$သ?$eပ2Cပeပ$Aiuင#ပ3တယ#။ Simple Date Format
ရ-I Style ကiu အသuB$CပuKပ?$ AHစ#သက#ရ+ Custom Format eတ&ကiu eရ$သ+$အသuB$CပuAiuင#ပ3တယ#။ Date Format န-9
ပတ#သက#Kပ?$ Date & Calendar အခန#$မH+ အeသ$စiတ#eဖ2Cပထ+$ပ3တယ#။
MessageFormat Object
Message eတ&ကiu Format ခGတ-6 eနရ+မH+ Database ထ-က Select လuပ#လ+တ-6 Data eတ&န-9 String eတ&အမG+$
Pက?$ကiu Format ခGဖiuလiuတ-6 အခ3လ- Qiတတ#ပ3တယ#။ အ-6ဒ? Message eတ&ကiu အPကiမ#Pကiမ# Format ခGဖiuလiuတ-6 အခ3
မGiu$မH+ Static Method ကiu အသuB$Cပuတ+ထက# MessageFormat Object ကiu တည#eဆ+က#Kပ?$ အသuB$Cပuတ+ပiuKပ?$
သင#6eတ+#ပ3တယ#။
ဒ3eFက+င#6 အPကiမ#Pကiမ# Message eတ&ကiu Format လuပ#Kပ?$သuB$တ-6 eနရ+မGiu$မH+ဆiuရင# format() method ကiu သ+
အသuB$Cပueနခ-6ရင# MessageFormat Object ကiu အPကiမ#Pကiမ# Create လuပ#eနမiမH+ Cဖစ#ပ3တယ#။ Garbage
Collector က မသuB$eတ+6တ-6 Object eတ&ကiu ဖGက#eပ$တ+မHန#eပမ-6 ခGက#ခGင#$Pက?$ဖGက#eပ$တ+ မဟuတ#ပ3ဘO$။ ဒ36
အCပင# Object eတ&ကiu မလiuပ-အPကiမ#Pကiမ# Create လuပ#တယ#ဆiuတ+ကလ- Performance ကiu အထiuက#အeလG+က#
ထiခiuက#eစAiuင#ပ3တယ#။
String pattern = "{1} is Roll Number {0} and take {2} Course.";
MessageFormat Object ရ-I format() ကiu အသuB$CပuKပ?$ အPကiမ#Pကiမ# Message eတ&ကiu တည#eဆ+က#Aiuင#ပ3တယ#။
ဒ? Looping Kပ?$တ-6 အထi MessageFormat Object တစ#ခuထ-ကiuသ+ အသuB$Cပuသ&+$မH+ Cဖစ#ပ3တယ#။
Choice Format
Message eတ&ကiu Format ခGတ-6 eနရ+မH+ အeနအထ+$eပ2မOတည#Kပ?$ ခ&-Cခ+$Cပလiuတ-6 အခ3မG+$လ- Qiတတ#ပ3တယ#။
ဘယ#လiuလ- ဆiuတ+ကiu Cမင#သ+eအ+င# နမOန+ကuဒ#eလ$eတ&န-9 eလ6လ+Fကည#6Fကရeအ+င#။
ChoiceFormat Object ကiu တည#eဆ+က#မယ#ဆiuရင# double array တစ#ခuန-9 String array တစ#ခuကiu အသuB$CပuKပ?$
eရ$သ+$ထ+$ဖiuလiuအပ#ပ3တယ#။ Array AHစ#ခuစလuB$ Langth eတ&တOeနဖiuလiuအပ#ပ3တယ#။ Format လuပ#မည#6
Argument ရ-I တန#ဖiu$ဟ+ 0 Cဖစ#eနတယ#ဆiuရင# Limits Array ရ-I Index ဟ+လ- 0 Cဖစ#ပ3တယ#။ အ-6ဒ? Index
Number န-9 ကiuက#ည?တ-6 formats Arrray ထ-က String ကiu Format Pattern အeနန-9 သuB$သ&+$မH+ပ- Cဖစ#ပ3တယ#။
အ-6ဒ3eFက+င#6 “not any Apple” ကiu eဖ2Cပeပ$ပ3မယ#။
// ChoiceFormat ကiuတည#eဆ+က#ပ3တယ#
double [] limits = {0, 1, 2};
String [] formats = {"not any Apple", "an Apple",
"{1, number} Apples"};
ChoiceFormat choices = new ChoiceFormat(limits, formats);
// MessageFormat ကiuတည#eဆ+က#ပ3တယ#
MessageFormat format = new MessageFormat("{0} has {1}.") ;
API ကiu မeလ6လ+ခင# က\န#eတ+#တiu eရ$မည#6 Program ထ-မH+ Date ကiu ဘယ#လiuသuB$ခGင#တ+လ- ဆiuတ+ကiu စKပ?$
eလ6လ+Fကည#6Fကရeအ+င#။
Creation Of Date
Date Object ကiu ဘယ#လiu တည#eဆ+က#မလ-။ ဒ3ဟ+ အeရ$Pက?$တ-6 အခGက#Cဖစ#ပ3တယ#။ က\န#eတ+#တiu Date
Object ကiu တည#eဆ+က#တ-6 eနရ+မH+ Current Time န-9 ယOKပ?$ eဆ+က#ခGင#တ+Qiသလiu၊ အခGiန# သတ#မHတ#Kပ?$
eဆ+က#ခGင#တ-6အခ3လ- Qiပ3မယ#။ အရင#ဆuB$ Current Time ကiu သuB$Kပ?$ eဆ+က#တ-6နည#$ကiu Fကည#6ပ3မယ#။
// Current Date
// By Default Constructor
Date date1 = new Date();
// By Calendar
Calendar cal = Calendar.getInstance();
Date date2 = cal.getTime();
အလ&ယ#ဆuB$ကeတ+6 java.utils.Date ရ-I Default Constructor ကiu သuB$Kပ?$ Instantiate လuပ#တ-6နည#$ပ3ပ-။ လက#Qi
Runtime ရ-I Current Time ကiu သuB$Kပ?$ Date Object ကiu တည#eဆ+က#eပ$ပ3လiမ#6မယ#။
ဒuတiယနည#$ကeတ+6 Calendar Object ကiu သuB$တ-6 နည#$ပ3ပ-။ အထက#မH+ eဖ2Cပထ+$တ-6 အတiuင#$ Calendar
Object ကiu Calendar.getInstance() method န-9တည#eဆ+က#ပ3တယ#။ Kပ?$ရင# getTime() ကeန Date Object
ကiu ရယOAiuင#ပ3တယ#။ အ-6ဒ?လiu eခ2လiuက#ရင# Current Time န-9 Date Object ကiu Cပန#ရမH+ Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 အခGiန# သတ#မHတ#Kပ?$ Date Object ကiu eဆ+က#ခGင#တယ#ဆiuရင#eတ+6 သuB$Aiuင#ပ3မယ#။ ဒ3eပမ-6 epoch
ကeန အခGiန#ဘယ#eလ+က# က&+လ- ဆiuတ+ကiu milliseconds န-9 တ&က#Kပ?$Cပဖiuဆiuတ+ လ&ယ#တ-6 ကiစ{eတ+6 မဟuတ#ပ3
ဘO$။
// Target Date
// By Constructor
Date date1 = new Date(1473874200000L);
// By Calendar
Calendar cal = Calendar.getInstance();
cal.set(2018,07,11);
Date date2 = cal.getTime();
// By Formatting String
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date date3 = df.parse("2018/07/11");
ပထမဆuB$နည#$ကeတ+6 Date Constructor မH+ epoch time ကiu eပ$တ-6 နည#$ပ3ပ-။ ဒ3eပမ-6ဗG+ Epoch Time ကiu
Milliseconds န-9 တ&က#ထuတ#ရမယ#ဆiuတ+က လက#eတ&Jမဆန#ပ3ဘO$။
ဒuတiယနည#$ကeတ+6 Calendar Object ကiu သuB$တ-6နည#$ပ3။ Calendar Object ရ-I သက#ဆiuင#ရ+ Fields eတ&ကiu လiu
သလiu Update လuပ#Kပ?$မH Date Object ကiu ရယOတ-6နည#$ပ3။ သOလ-ပ- Calendar ကiu eဆ+က#Kပ?$eတ+6 တန#ဖiu$eတ&ကiu
eCပ+င#$eနရတ-6အတ&က# Step eတ& မG+$ပ3တယ#။ Kပ?$eတ+6 လတန#ဖiu$ဟ+ 0 ကeန စတ+ကiu သတiထ+$ဖiuလiuပ3တယ#။
၁ လပiuင#$ဆiuရင# တန#ဖiu$က 0 Cဖစ#Kပ?$ ၂ လပiuင#$ဆiuရင# တန#ဖiu$က 1 လiueပ$ရမH+ Cဖစ#ပ3တယ#။
eန+က#ဆuB$နည#$ကeတ+6 DateFormat Object ကiu သuB$Kပ?$ parse လuပ#တ-6နည#$ပ3။ DateFromat Object ကiu
SimpleDateFormat Class ကeန တည#eဆ+က#ပ3မယ#။ Constructor Arguments အeနန-9 yyyy-MM-dd ကiu
eပ$ထ+$Kပ?$ အ-6ဒ? Format န-9 eရ$ထ+$တ-6 String Object ကeန Date ကiu ရယOAiuင#မH+ Cဖစ#ပ3တယ#။
Calendar Class မH+ Calendar Fields eတ&ကiu Get / Set လuပ#ဖiuအတ&က# Method eတ&ကiu Cပင#ထ+$ပ3တယ#။
Calendar Object ရ-I သက#ဆiuင#ရ+ Calendar Field တန#ဖiu$eတ&ကiu CပuCပင#Aiuင#ဖiuအတ&က# set method ကiu အသuB$Cပu
ရမH+ Cဖစ#ပ3တယ#။ set method မH+ Parameter ၂ ခuကiu ရယOeနKပ?$ ပထမ Parameter ဟ+ Calendar Field ကiu
ကiuယ#စ+$CပuKပ?$၊ ဒuတiယ Parameter ဟ+ အ-6ဒ? Field ရ-I တန#ဖiu$ကiu ကiuယ#စ+$Cပuပ3တယ#။
Calendar Class မH+ Calendar Field eတ&ကiu ကiuယ#စ+$CပuAiuင#ဖiu Static Variable မG+$ကiu Cပင#ဆင#ထ+$Kပ?$ အ-6ဒ?
Fields eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။
တဖန# get method မH+လ- int parameter တစ#ခuကiu ရယOeနKပ?$ မiမiက ရယOလiueသ+ Calendar Field ကiu eပ$ရမH+
Cဖစ#ပ3တယ#။ အ-6ဒ?eနရ+မH+လ- Calendar ရ-I Static Variable မG+$ကiu အသuB$CပuAiuင#ပ3တယ#။
// set fields
Calendar c2 = Calendar.getInstance();
c1.set(2018, 7, 20);
}
Calendar Object ရ-I AHစ#၊ လ၊ ရက#တiuကiu သတ#မHတ#လiuပ3က int parameter ၃ ခuပ3တ-6 Method ကiu သuB$မယ#ဆiuလ-ရ
ပ3တယ#။ သတiCပuရမH+က လတန#ဖiu$ဟ+ သuညကeန စတယ#ဆiuတ+ပ3ပ-။ int တန#ဖiu$ကiu တiuက#Uiuက#မeပ$ပ- Calendar
Class ရ-I Month အတ&က# eရ$သ+$ထ+$တ-6 Static Variable eတ&ကiu သuB$မယ#ဆiuလ- ရပ3တယ#။ Calendar Class
မH+ တစ#AHစ#တ+ အတ&က# လeတ&ကiu Static Variable eတ& အeနန-9 Pကiuတင# eရ$သ+$eပ$ထ+$ပ3တယ#။
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
}
Calendar c = Calendar.getInstance();
System.out.println(c.isLenient());
c.set(Calendar.DAY_OF_MONTH, 45);
System.out.println(c.getTime());
}
true
Sat Oct 15 13:14:36 MMT 2016
Calendar Object c ရ-I lenient တန#ဖiu$ဟ+ သတ#မHတ#ထ+$Cခင#$မQiတ-6 အတ&က# Default အတiuင#$ true Cဖစ#eနတ+
ကiu eတ&Jရပ3တယ#။ အ-ဒ?အတ&က# DAY_OF_MONTH ကiu တစ#လQiတ+ထက# ပiuKပ?$ 45 လiu သတ#မHတ#လiuက#တ-6အခ3
လက#Qiလကiu eကG+#Kပ?$ ၁၀ လပiuင#$ ၁၅ ရက#လiu သတ#မHတ#eပ$သ&+$တ+ Cဖစ#ပ3တယ#။
Calendar c = Calendar.getInstance();
c.setLenient(false);
System.out.println(c.isLenient());
c.set(Calendar.DAY_OF_MONTH, 45);
System.out.println(c.getTime());
}
false
Exception in thread "main" java.lang.IllegalArgumentException:
DAY_OF_MONTH
at java.util.GregorianCalendar.computeTime(GregorianCalendar.java:2648)
at java.util.Calendar.updateTime(Calendar.java:3393)
at java.util.Calendar.getTimeInMillis(Calendar.java:1782)
at java.util.Calendar.getTime(Calendar.java:1755)
at com.jdc.dummy.GenericsDemo.main(GenericsDemo.java:18)
Leniency ရ-Iသeဘ+တရ+$ဟ+ Calendar Field eတ&ကiu Set လuပ#ရ+မH+သ+မက ရက#စ&- အခGiန#eတ&ကiu တ&က#ခGက#
တ-6eနရ+မH+လ- အသuB$Cပuပ3တယ#။ ဆက#လက#Kပ?$ အခGiန#eတ&ကiu ဘယ#လiu တ&က#ခGက#တယ#ဆiuတ+ကiu Fကည#6Fကည#6
ရeအ+င#။
roll int field
လက#Qi Field ထက#Pက?$eသ+ Field အ+$ မeCပ+င#$လည#$eစပ- အeပ3င#$
int amount အA[တ# Cပuလuပ#
အထက#ပ3 နမOန+ထ-မH+ Calendar Object c1 ရ-I တန#ဖiu$ကiu 2016/09/15 လiuသတ#မHတ#ပ3တယ#။ Kပ?$ရင# ရက# ၃၀ ကiu
add method ကiu သuB$Kပ?$ eပ3င#$eစပ3တယ#။ Add Method ကiu သuB$Kပ?$eပ3င#$တ+ Cဖစ#တ-6အတ&က# ရက#ကiu eပ3င#$Kပ?$
လကiu ပ3 ဆက#Kပ?$တiu$eပ$Aiuင#မH+ Cဖစ#ပ3တယ#။ အ-6ဒ? အတ&က# ရလဒ#ဟ+ 2016/10/15 Cဖစ#သ&+$ပ3မယ#။
Calendar c = Calendar.getInstance();
c.setTime(d);
c.add(Calendar.DAY_OF_MONTH, 30);
System.out.println(c.getTime());
c.setTime(d);
c.roll(Calendar.DAY_OF_MONTH, 30);
System.out.println(c.getTime());
}
တဖန# roll ကiu သuB$Kပ?$ eပ3င#$ရင#eတ+6 လက#Qi Field ရ-I တန#ဖiu$အCပင#ကiu eCပ+င#$လ- eပ$မH+ မဟuတ#ပ3ဘO$။ အ-6ဒ?
အတ&က# ရလဒ#ဟ+ 2016/09/15 ပ- Cဖစ#eနမH+ Cဖစ#ပ3တယ#။ Run Fကည#6ထ+$တ-6 ရလဒ#ကeတ+6 eအ+က#ပ3 အတiuင#$
Cဖစ#ပ3တယ#။
Formatting Date
Date Object ကiu View မH+ Cပန#Kပ?$ Cပသလiuတ-6အခ3မH+ User က န+$လည#လ&ယ#တ-6 ပuBစBန-9 Cပန#Kပ?$ Cပဖiuလiuအပ#ပ3
တယ#။ တဖန# Localization အရ မည#သiueဖ2Cပရမယ#ဆiuတ-6 သတ#မHတ#ခGက#eတ&လ-Qiတတ#ပ3တယ#။ User Input
ကeတ+6 String eတ&Cဖစ#eနရင#လ- String ကeန Date Object ကiu eCပ+င#$ဖiuလiuအပ#ပ3မယ#။ အ-6လiueနရ+မGiu$မH+
Date eတ&ကiu ဘယ#လiu Format န-9Cပမယ#ဆiuတ+ကiu eရ$သ+$တတ#ဖiuလiuအပ#ပ3တယ#။Date Object အ+$ String
အCဖစ# Format လuပ#လiuသည#6အခ3တ&င#၎င#$၊ Format ခGထ+$eသ+ String မHတဆင#6 Date Object အ+$ Parse လuပ#
လiuသည#6အခ3တ&င#၎င#$ အသuB$CပuAiuင#ပ3တယ#။ DateFormat သည# Abstract Class Cဖစ#Kပ?$၊ Concrete Class မH+
SimpleDateFormat Class Cဖစ#ပ3တယ#။
Date eတ&ကiu Format လuပ#လiuသည#6 အခ3 format(date date) Method ကiu အသuB$CပuAiuင#Kပ?$ သတ#မHတ#ထ+$တ-6
Format န-9 Format လuပ#ထ+$တ-6 String Object ကiu Cပန#ရမH+ Cဖစ#ပ3တယ#။ Format အတiuင#$eရ$ထ+$တ-6 String
Object ကeန Date Object ကiu Parse လuပ#လiuတ-6 အခ3 parse(String source) method ကiu အသuB$CပuAiuင#ပ3
တယ#။ String တန#ဖiu$န-9 တည#eဆ+က#ထ+$တ-6 Date Object ကiu ရQiမH+ Cဖစ#ပ3တယ#။ parse method ကiu အသuB$Cပu
တ-6 အခ3မH+ ParseException ကiu Cဖစ#eပ2eစAiuင#တ-6အတ&က# Handle လuပ#eပ$ဖiu လiuအပ#ပ3တယ#။
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Examples
Date and Time Pattern Result
"yyyy.MM.dd G 'at' HH:mm:ss z" 2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy" Wed, Jul 4, '01
"h:mm a" 12:08 PM
"hh 'o''clock' a, zzzz" 12 o'clock PM, Pacific Daylight Time
"K:mm a, z" 0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa" 02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z" Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ" 010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX" 2001-07-04T12:08:56.235-07:00
"YYYY-'W'ww-u" 2001-W27-3
Date Object ကiu Format ခGထ+$တ-6 String အCဖစ#eCပ+င#$လiuရင# သတ#မHတ#လiuတ-6 Format န-9 DateFormat ကiu အ
ရင#eဆ+က#ရပ3မယ#။ Kပ?$ပ3မH Format လuပ#လiuတ-6 Date Object ကiu သuB$Kပ?$ format eCပ+င#$UuBCဖစ#ပ3မယ#။
// Formatting Date
String formatedDate = df.format(new Date());
System.out.println(formatedDate);
// Parsing Date
Date date = df.parse(formatedDate);
System.out.println(date);
တဖန# Format လuပ#ထ+$တ-6 String ကeန Date Object ကiu Cပန#လiuခGင#ရင# parse method ကiu အသuB$CပuAiuင#ပ3
တယ#။
Java SE 8 မတiuင#မH?ကeတ+6 Third Party API eတ&Cဖစ#တ-6 Joda Time API တiuကiu အသuB$Cပuခ-6Fကရပ3တယ#။
Java SE 8 eရ+က#တ-6 အခ3မH+eတ+6 Date & Time API အသစ#ကiu Cဖည#6စ&က#လ+ခ-6Kပ?$ Duration eတ&ကiu
တ&က#ခGက#Aiuင#လ+ခ-6ပ3တယ#။
ဒ?အခန#$မH+eတ+6 ဘ+လiu Date eတ& Time eတ&ကiu အသuB$Cပuဖiu API အသစ#တစ#ခuလiuအပ#ခ-6ရတ+လ-။ Kပ?$eတ+6 API
အသစ#မH+ Date Time eတ&ကiu အသuB$Cပuဖiu ဘယ#လiu Class eတ& Interface eတ&ကiu အသuB$Cပuရမလ-။ ဘယ#လiu eနရ+
မGiu$eတ&မH+ ဒ? API န-9 ဘယ#လiu အသuB$CပuAiuင#သလ- ဆiuတ+eတ&ကiu eလ6လ+သ&+$Fကပ3မယ#။
Collections Framework
က\န#eတ+#တiu Java Program eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ Data eတ&ကiu တစuတစည#$ထ- အသuB$Cပuလiuတ-6 အခ3မH+
Array eတ&ကiu အသuB$Cပuခ-6Fကပ3တယ#။ Array eတ&ဟ+ အသuB$Cပuမည#6 Data Type အလiuက# ထည#6သ&င#$ထ+$တ-6
အစ?အစT#ကiu ထiမ#$eပ$ထ+$Aiuင#တ-6 Object တစ#မGiu$Cဖစ#ပ3တယ#။
ဒ3eပမ-6 Array eတ&ကiu eရ$သ+$အသuB$CပuFကတ-6 eနရ+မH+ Array Object ကiu တည#eဆ+က#eတ+6မယ#ဆiuရင# အသuB$Cပu
မည#6 အeရအတ&က#ကiu အရင#ဆuB$သတ#မHတ#eပ$ခ-6ရပ3တယ#။ eန+က#Kပ?$ Array Object eတ&ဟ+ တစ#ခ3တည#eဆ+က#
Kပ?$Kပ?ဆiuရင# အသuB$Cပuလiuတ-6 အခန#$အeရအတ&က#ကiu ထပ#Kပ?$တiu$လiuမရeတ+6ပ3ဘO$။ eန+က#Kပ?$ Array eတ&ဟ+
သiမ#$ထ+$တ-6 Data eတ&ရ-I Index အတiuင#$သ+ Data eတ&ကiu Access လuပ#လiuရမH+Cဖစ#ပ3တယ#။ အCခ+$eသ+ Data
Structure eတ&ကiu Support မလuပ#eပ$Aiuင#ပ3ဘO$။
ဒ36eFက+င#6 လက#eတ&J Java Application eတ&ကiu eရ$သ+$တ-6 eနရ+မH+ Array eတ&ဟ+ သuB$ရခက#ခ-တ-6 အတ&က#
Arrays eတ&အစ+$ Collections eတ&ကiu အသuB$CပuFကတ+မG+$ပ3တယ#။ က\န#eတ+#တiu ဒ?အခန#$မH+eတ+6 Collections
eတ&ကiu ပB6ပiu$eပ$တ-6 Collections Framework အeFက+င#$ကiu eလ6လ+သ&+$Fကပ3မယ#။
Collection Interface
Map eတ&ဟ+ Key Value အeနန-9 တ&-Kပ?$ Data eတ&ကiu သiမ#$eပ$ထ+$Aiuင#တ-6 Collection Interface ရ-I Sub
Interface eတ+6မဟuတ#ပ3ဘO$။ ဒ3eပမ-6 Map eတ&မH+ပ3တ-6 Key, Value အတ&-ကiu Entry ဆiuတ-6 Object န-9 သiမ#$eပ$
ထ+$Kပ?$၊ အ-6ဒ? Entry eတ&ကiu Set အeနန-9 သiမ#$eပ$ထ+$ပ3တယ#။
addAll(Collection<? extends E>) boolean Collection ထ-ကiu အCခ+$ Collection eတ&ကiu Cဖည#စ&က#Aiuင#
removeIf(Predicate<? super E>) boolean Predicate ထ-မH+ပ3တ-6 Condition န-9 တOတ-6 Element eတ&ကiu
ဖGက#ထuတ#ပစ#Aiuင#
အထက#ပ3 Method eတ&ကeတ+6 Collection Interface ထ-မH+ပ3တ-6 Method eတ&Cဖစ#FကKပ?$၊ Collection ရ-I Sub
Interface eတ&Cဖစ#Fကတ-6 Set, List န-9 Queue တiuမH+လ- အထက#ပ3 Method eတ&ကiu အသuB$CပuAiuင#ပ3တယ#။ Set,
List န-9 Queue တiuဟ+ Data Structure eတ&ကiu ကiuယ#စ+$Cပueရ$သ+$ထ+$တ-6 Interface eတ&Cဖစ#Fကတ-6 အတ&က#
Collection Interface ထ-မH+ပ3တ-6 အeCခခB Metdhod eတ&အCပင# Data Structure အလiuက# အသuB$Cပuလiuတ-6
Method eတ&ကiu ထပ#မBCဖည#6စ&က#ထ+$Fကပ3တယ#။
Set Interface
Set Interface ဟ+ Collection Interface ရ-I Sub Interface တစ#ခuCဖစ#Kပ?$ အထက#တန#$ သခsG+မH+ ပ3တ-6 အစu
(Set) ဆiuတ-6 Data Structure ကiu အeCခခBKပ?$eရ$သ+$ထ+$ပ3တယ#။ အစu ဆiuတ-6 အတiuင#$ Set တစ#ခuထ-မH+ Element
eတ&ဟ+ Duplicate Cဖစ#တ+ကiu လက#မခBပ3ဘO$။ Kပ?$eတ+6 ပ3ဝင#တ-6 Element eတ&ရ-I ဘယ# Element Kပ?$ရင# ဘယ#
Element လ+မယ# ဆiuတ-6 သiမ#$ထ+$တ-6 အစ?အစT#ကiuလ- မHတ#မထ+$eပ$Aiuင#ပ3ဘO$။ ဒ36eFက+င#6 Set eတ&မH+ Index
Number ကiu အသuB$Cပuတ-6 Method eတ&လ- မပ3သလiu e^ဆuB$ eန+က#ဆuB$အစQiတ-6 Element eတ&ကiu eခ2ယOတ-6
Method eတ&လ- ပ3မလ+ပ3ဘO$။
Set eတ&မH+eတ+6 Collection Interface ထ-မH+ပ3တ-6 Method eတ&ကiuသ+ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ Set ဟ+
Interface တစ#ခuCဖစ#တ-6 အတ&က# ဒ?အတiuင#$eတ+6 Object တစ#ခuကiu တည#eဆ+က#လiuမရAiuင#ပ3ဘO$။ Set Interface
ကiu Implement လuပ#ထ+$တ-6 Class eတ&ကeန တဆင#6သ+ တည#eဆ+က#လiuရပ3မယ#။ Collections Framework
ထ-မH+ Set Object eတ&ကiu အလ&ယ#တကOတည#eဆ+က#Aiuင#ဖiuအတ&က# General Purpose Implementation Class
eတ&ကiu eရ$သ+$eပ$ထ+$ပ3တယ#။
LinkedHashSet Link List & Hash Tablee Link List Data Structure ကiu အသuB$Cပuထ+$တ-6 အတ&က# ထ
ည#6သ&င#$ထ+$တ-6 အစ?အစT#ကiu သiမ#$eပ$ထ+$Aiuင#ပ3တယ#
System.out.println(hash);
System.out.println(tree);
System.out.println(link);
}
အထက#ပ3နမOန+ထ-မH+ Set Object eတ&ကiu အသ?$သ?$ သက#ဆiuင#ရ+ Implementation Class eတ&န-9 တည#eဆ+က#
ထ+$ပ3တယ#။ Kပ?$eတ+6 for Loop ကiu 10 ကeန 0 အထi Desending Order န-9 Loop ပတ#eစKပ?$ Set Object eတ&
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
ဒuတiယ စ+eFက+င#$ကeတ+6 TreeMap ကiu အသuB$Cပuထ+$တ+ပ3။ ဒ?eနရ+မH+လ- Integer eတ&ရ-I Natural Ordering
အတiuင#$ ငယ#စT#Pက?$လiuက#Cပန#Kပ?$ စ?eပ$ထ+$Aiuင#တ+ကiu eတ&Jရပ3တယ#။ Sort လuပ#တယ#ဆiuတ+က Element တစ#ခuန-9
တစ#ခuအFက+$ ငယ#သလ+$Pက?$သလ+$ကiu Aiuင#$ယHT#Aiuင#မHသ+ Sort လuပ#လiuရမH+ Cဖစ#ပ3တယ#။ Compare လuပ#လiu မရ
တ-6 Object eတ&ကiu TreeSet ထ-မH+ ထည#6သuB$ရင# ဘယ#လiu Cဖစ#မယ#ဆiuတ+ကiu eန+က#မH eလ6လ+သ&+$Fကပ3မယ#။ ဒ36
eFက+င#6 သဘ+ဝအတiuင#$ ငယ#စT#Pက?$လiuက# Sort လuပ#Kပ?$သ+$ Data eတ&ကiu ရယOခGင#တယ#ဆiuရင#eတ+6 TreeSet
Object ကiu အသuB$Cပuသင#6ပ3တယ#။ ဒ3eပမ-6 Set ထ-မH+ပ3တ-6 Element တန#ဖiu$eတ&eCပ+င#$တiuင#$ Sort လuပ#eနရတ-6
အတ&က# Element တန#ဖiu$eတ&ကiu ခဏခဏeCပ+င#$ဖiuလiuတ-6 eနရ+eတ&မH+ TreeSet ကiu အသuB$Cပuရင# Performance
ပiuင#$ဆiuင#ရ+မH+ အ+$န-သ&+$တတ#ပ3တယ#။
တတiယ စ+eFက+င#$ကeတ+6 LinkedHashMap ကiu အသuB$Cပuထ+$တ+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 ရလဒ#ဟ+ Add လuပ#
ထ+$တ-6 အစ?အစT#အတiuင#$Cပန#CပAiuင#တ+ပ- Cဖစ#ပ3တယ#။
က\န#eတ+#တiu ဆက#လက#Kပ?$ Compare လuပ#လiu မရတ-6 Object eတ&ကiu TreeSet eတ&ထ-မH+ eရ$သ+$အသuB$Cပuရင#
ဘယ#လiuCဖစ#မယ#ဆiuတ+ကiu eလ6လ+သ&+$Fကရeအ+င#။ eအ+က#ပ3 User Class ဟ+ က\န#eတ+#တiu TreeSet ထ-မH+
eရ$သ+$အသuB$Cပuသ&+$မည#6 Type Cဖစ#ပ3တယ#။
@Override
public String toString() {
return name;
}
System.out.println(set);
}
အထက#ပ3အတiuင#$ Main Method ထ-မH+ User Type ကiu အသuB$CပuAiuင#တ-6 TreeSet Object တစ#ခuကiu တည#eဆ+က#
Kပ?$ User Object eတ&ကiu ထည#6သ&င#$Fကည#6ပ3တယ#။ အထက#ပ3 Code eတ&ဟ+ Compile Time မH+ လuB$ဝ Error မ
Cဖစ#ပ3ဘO$။ Compile လuပ#လiuရပ3တယ#။ ဒ3eပမ-6 Run Fကည#6တ-6 အခ3မH+eတ+6 eအ+က#ပ3အတiuင#$
RuntimeException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
TreeSet eတ&ဟ+ Element eတ&ကiu Sort လuပ#Aiuင#ဖiuအတ&က# eန+က#က&ယ#မH+ TreeMap တစ#ခuကiu အသuB$Cပueနပ3
တယ#။ အ-6ဒ3eFက+င#6 TreeSet ရ-I add() Method ထ-မH+ TreeMap ရ-I put() Method ကiu ဆက#Kပ?$eခ2ပ3တယ#။
TreeMap ရ-I put() method ကeန compare() Method ကiu ဆက#eခ2Kပ?$ အ-6ဒ? Method ထ-မH+ User Object ကiu
Comparable Type အCဖစ#eCပ+င#$လiuတ-6 အတ&က# Cast လuပ#တ-6eနရ+မH+ User Class ဟ+ Comparable
Interface ကiu Implement လuပ#မထ+$တ-6 အတ&က# ClassCastException ကiu Cဖစ#eပ2eစတ+ပ- Cဖစ#ပ3တယ#။
ဒ36eFက+င#6 က\န#eတ+#တiu TreeSet မH+ အသuB$Cပuလiuတ-6 Data Type eတ&ဟ+ Comparable Interface ကiu
Implement လuပ#ထ+$ဖiuလiuအပ#တယ#ဆiuတ+ကiu သieနဖiuလiuအပ#ပ3တယ#။ Java မH+ပ3တ-6 Basic Data Type eတ&Cဖစ#
Fကတ-6 Primitive Wrapper eတ&န-9 String, Date, Calendar အစQiတ-6 Type eတ&ဟ+ eရ$သ+$ထ+$စT#ကထ-က
Comparable Interface ကiu Implement လuပ#Kပ?$သ+$Cဖစ#တ-6 အတ&က# TreeSet ထ-မH+ ဒ?အတiuင#$ အသuB$CပuAiuင#eပမ-6
မiမiကiuယ#တiuင#eရ$သ+$ထ+$တ-6 Class eတ&ဆiuရင#eတ+6 Comparable Interface ကiu Implement လuပ#ထ+$မHသ+
TreeSet ထ-မH+ eရ$သ+$ အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
@Override
public int compareTo(User o) {
return name.compareTo(o.name);
}
အထက#ပ3အတiuင#$ User Class ကiu Comparable Interface ကiu Implement လuပ#လiuက#ပ3မယ#။ အ-6ဒ3eFက+င#6
compareTo() Method ကiu Override လuပ#Kပ?$eရ$eပ$ဖiu လiuအပ#လ+ပ3တယ#။
ဒ36eFက+င#6 User Object ခGင#$ Compare လuပ#လ+ရင# name န-9 Compare လuပ#လiuရတ-6 Result ကiu ရQiမH+ Cဖစ#ပ3
တယ#။ အထက#ပ3အတiuင#$ User Class ကiu Cပင#ဆင#eရ$သ+$Kပ?$တ-6 eန+က#မH+ e^မH+eရ$သ+$ခ-6တ-6 Main Method
ကiu Cပန#Kပ?$ Run Fကည#6တ-6 အခ3 eအ+က#ပ3အတiuင#$ အeCဖကiu ရQiမH+ Cဖစ#ပ3တယ#။
List Interface
List eတ&ဟ+ Set eတ&လiuပ- Collection Interface ရ-I Sub Interface တစ#ခuCဖစ#ပ3တယ#။ ဒ36eFက+င#6 Collection ထ-
မH+ပ3တ-6 Method eတ&ကiuလ- List eတ&မH+ အသuB$CပuAiuင#ပ3တယ#။ တဖန# List eတ&ဟ+ Unlimitted Array eတ&ကiu
ကiuယ#စ+$Cပuတ-6 အတ&က# Element eတ&ကiu Index eတ&န-9 သiမ#$eပ$ထ+$Aiuင#Kပ?$ Index eတ&ကiu အသuB$CပuKပ?$ eရ$သ+$
Aiuင#တ-6 Method eတ&ပiuပ3လ+ပ3တယ#။ List eတ&မH+ ပiuပ3လ+တ-6 Method eတ&ကeတ+6eအ+က#ပ3အတiuင#$Cဖစ#ပ3တယ#။
set (int index, E element) void Index ကiu သတ#မHတ#Kပ?$ Element ကiu Set လuပ#Aiuင#
add (int index, E element) void Index ကiu သတ#မHတ#Kပ?$ Element ကiu Add လuပ#Aiuင#
addAll(int index, Collection<? boolean Index ကiu သတ#မHတ#Kပ?$ Collection ထ-မH+Qiတ-6 Element eတ&
extends E> c) အ+$လuB$ကiu Cဖည#6စ&က#Aiuင#
subList(int from, int to) List<E> အစန-9 အဆuB$ Index eတ&ကiueပ$Kပ?$ အCခ+$ List Object တစ#ခu
ကiu Cပန#လည#ရယOAiuင#
Index Number eတ&ကiu အသuB$CပuKပ?$ List ထ-က Element eတ&ကiu Access လuပ#တ-6 အခ3မH+ မQiတ-6 Index eတ&ကiu
သ&+$သuB$မiရင# IndexOutOfBoundsException ကiu Cဖစ#eပ2eစမH+Cဖစ#တ+ကiu သတiCပueစလiuပ3တယ#။
Learning Java 271 မင#$လ&င#
Java Developer Class
List Interface Object ကiuတည#eဆ+က#ဖiuအတ&က# ArrayList န-9 LinkedList Class တiuကiu အသuB$CပuAiuင#ပ3တယ#။
ArrayList ကeတ+6 Unlimited Array Data Structure ကiu အသuB$Cပuထ+$ပ3တယ#။ Unlimited Array eတ&ဟ+
Array အမGiu$အစ+$Cဖစ#တ-6 အတ&က# Element eတ&ကiu ထည#6သ&င#$ထ+$တ-6 Index Number eတ&န-9သiမ#$eပ$ထ+$Aiuင#
ပ3တယ#။ Array eတ&ကeတ+6 အသuB$Cပuမယ#ဆiuရင# အသuB$Cပuမည#6 Element အeရအတ&က#ကiu Pကiuတင# သတ#မHတ#
ထ+$ဖiu လiuအပ#eပမ-6 Unlimited Array eတ&ကeတ+6 Pကiuက#သeလ+က# Element eတ&ကiu Cဖည#6စ&က#Aiuင#ပ3တယ#။
ArrayList eတ&ဟ+ Unlimited Array Cဖစ#တ-6 အတ&က# Index ကiu အသuB$CပuKပ?$ Element eတ&ကiu Q+eဖ&တ-6 eနရ+မH+
အလ&န#eက+င#$မ&န#ပ3တယ#။ အထက#ပ3ပuBထ-ကလiu list.add(“J”) လiu အသစ#Cဖည#6စ&က#မယ#ဆiuရင# eန+က#ဆuB$eနရ+မH+
အခန#$တစ#ခန#$တiu$Kပ?$ အ-6ဒ?eနရ+မH+ “J” ကiu Cဖည#6စ&က#UuBပ3ပ-။ ဒ?လiuပ- Element eတ&ကiu Index န-9 သiမ#$ထ+$တ+ Cဖစ#
တ-6 အတ&က# list.get(5) လiu Cပန#Q+မယ#ဆiuရင#လ- အလ&ယ#တကOQ+eဖ&Aiuင#မH+ Cဖစ#ပ3တယ#။
ဒ3eပမ-6 list.remove(1) လiu Index 1 မH+Qiတ-6 Element ကiu Delete လuပ#မယ#ဆiuရင#eတ+6 Index 2 ကeန အဆuB$
အထi Index Number eတ&ကiu Cပန#eCပ+င#$Kပ?$လiuတ-6 eနရ+မGiu$eတ&မH+ Performance ကiu ကGဆင#$eစAiuင#ပ3တယ#။ ဒ36
eFက+င#6 ArrayList Object eတ&ကiu Fက+$Cဖတ#Kပ?$ ဖGက#ထuတ#တ+တiu၊ Fက+$Cဖတ#Kပ?$ Cဖည#6စ&က#ဖiuလiuအပ#တ-6 Operation
eတ&မH+ သiပ#Kပ?$ မသuB$သင#6ပ3ဘO$။
LinkedList Class eတ&ကeတ+6 Link List Data Structure ကiu အသuB$Cပuပ3တယ#။ Link List eတ&မH+ Element
eတ&ကiu Node eတ&န-9သiမ#$ဆည#$ထ+$Fကပ3တယ#။ Node တစ#ခuမH+ Element Value န-9 Next Node ဟ+ ဘယ#
Node လ-ဆiuတ+ကiu သတ#မHတ#eပ$Aiuင#တ-6 တန#ဖiu$တစ#ခuတiuန-9 ဖ&-Jစည#$ထ+$ပ3တယ#။ ဒ36eFက+င#6 LinkedList eတ&ဟ+
// [10]
list.add(10);
// [10, 4]
list.add(4);
// [10, 5, 4]
list.add(1, 5);
// [10, 2, 4]
list.set(1, 2);
// [2, 4]
list.remove(0);
List Object eတ&မH+ add() method AHစ#မGiu$ပ3Qiပ3တယ#။ ပထမ add() method ကeတ+6 Element ကiuယOKပ?$ List
ထ-ကiu ထည#6eပ$Aiuင#တ-6 Method Cဖစ#ပ3တယ#။ အထက#eဖ2Cပပ3အတiuင#$ list.add(10) လiueရ$လiuက#Kပ?$တ-6 eန+က#မH+
List ထ-က eန+က#ဆuB$ Index eနရ+ကeန တစ#ခuတiu$Kပ?$ Element ကiu Cဖည#6စ&က#eပ$မH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6
add(E) Method ကiu အသuB$Cပuရင# Cဖည#6စ&က#လiuက#တ-6 Element ဟ+ eန+က#ဆuB$eနရ+မH+ eရ+က#Qiသ&+$မH+ Cဖစ#ပ3
တယ#။ eန+က# Method တစ#ခuကeတ+6 add(int, E) ပ3။ Argument AHစ#ခuပ3QiKပ?$၊ ပထမ Argument ကeတ+6 Add
လuပ#မည#6 Index Number Cဖစ#Kပ?$ eန+က# Argument ကeတ+6 Cဖည#6စ&က#မည#6 Element Cဖစ#ပ3တယ#။ အသစ#Cဖည#6
စ&က#လiuက#တ-6 Element က Index eနရ+မH+ eရ+က#Qiသ&+$Kပ?$၊ အရင# Index မH+ Qieနတ-6 Element ကeတ+6 eန+က#
ကiu eရpIသ&+$မH+ Cဖစ#ပ3တယ#။ ဒ?လiuပ- eန+က#မH+Qiတ-6 Element eတ&လ- eန+က#ကiu Index တစ#ခuဆ?ဆuတ#သ&+$မH+ Cဖစ#
ပ3တယ#။ ဘယ#လiuပ- Cဖစ#Cဖစ# add() method ကiu အသuB$Cပuရင# Element တစ#ခueတ+6 တiu$သ&+$မH+ Cဖစ#ပ3တယ#။
set(int, E) Method ကeတ+6 Index Number မH+Qieနတ-6 Element န-9 Argument မH+ပ3လ+တ-6 Element န-9 လ-
eပ$Aiuင#တ-6 Method တစ#ခuCဖစ#ပ3တယ#။ ဒ3eFက+င#6 နဂiu List ထ-မH+ [10, 5, 4] Qieနတ-6 eနရ+မH+ list.set(1, 2) ကiu
Evaluate လuပ#Kပ?$တ-6 အခ3မH+ [10, 2, 4] လiu Index 1 eနရ+ကiu တန#ဖiu$ 2 က အစ+$ထiu$သ&+$တ+ကiu eတ&Jရပ3မယ#။
တဖန# Index Number ကiueပ$Kပ?$လ- remove လuပ#လiuရပ3eသ$တယ#။ list.remove(0) ကiu Evaluate လuပ#လiuက#ရင#
eတ+6 Index 1 မH+Qiတ-6 10 ကiu ဖGက#ထuတ#ပစ#Kပ?$ [2, 4] ပ- List ထ-မH+ ကGန#ပ3eတ+6မယ#။
list.add("Hello");
list.addAll(set);
// [Hello, Java]
System.out.println(list);
list.addAll(1, list);
Java IO
Java IO ဆiuတ+ဟ+ Java Program ထ-ကeန Inputs Outputs eတ&ကiu လuပ#Aiuင#eအ+င# Pကiueရ$eပ$ထ+$တ-6 API
ပ- Cဖစ#တယ#။ ဒ3ဆiuရင# IO ကiu သieအ+င# ဘ+eတ&eလ6လ+ထ+$ဖiuလiuမH+လ-။ File System ကiuန+လည#ထ+ဖiueတ+6 လiu
ပ3လiမ#6မယ#။ Kပ?$မH API ကiu သuB$Kပ?$ Input Output ကiu ဘယ#လiuလuပ#မယ#ဆiuတ+ရယ# ဘယ#လiu အရ+မGiu$eတ&ကiu Input
လuပ#လiuရမယ#ဆiuတ+ရယ#၊ အသuB$CပuAiuင#တ-6 Interface Object eတ&ကiu သiQiထ+$ရပ3မယ#။
Java SE ရ-I java.io package ရ-I eအ+က#မH+ IO အတ&က# API Class eတ& Interfaces eတ&ကiu စuစည#$ထ+$ပ3
တယ#။ က\န#eတ+#တiu Java IO အခန#$န-9 eအ+က#ပ3 အeFက+င#$အရ+မG+$ကiu eလ6လ+သ&+$ပ3မယ#။
FILE OBJECT
File System ထ-မH+ Qiတ-6 File eတ& Directory eတ&ရ-I Path Name eတ&ကiu ကiuယ#စ+$Cပuရန#အတ&က# java.io.File
Class ကiu Cပင#ဆင#ထ+$ပ3တယ#။ File Object ကeန File Directory တiuရ-I Properties eတ&ကiu သiQiAiuင#သလiu၊ File
Directory eတ&ကiu တည#eဆ+က#Aiuင#ပ3တယ#။ တဖန# Directory ထ-မH+Qiတ-6 File eတ&ကiu Q+eဖ&တ+eတ&၊ File eတ&
ကiu န+မည#eCပ+င#$တ+eတ&၊ တeနရ+က တeနရ+ကiu eCပ+င#eရpIတ+eတ&၊ Kပ?$eတ+6 ဖGက#ပစ#တ+eတ& လuပ#Aiuင#ပ3တယ#။
I/O STREAMS
File ထ-မH+Qiတ-6 Data eတ&ကiu Read / Write လuပ#ဖiuအတ&က#Cပင#ဆင#ထ+$တ-6 Object eတ&Cဖစ#ပ3တယ#။ Read /
Write လuပ#မည#6 Data Type အလiuက# အသuB$Cပuရမည#6 I/O Stream အမGiu$အစ+$eတ&ဟ+ မတOည?ပ3ဘO$။ ဘယ#လiu
Data အမGiu$အစ+$ဆiuရင# ဘယ# Stream ကiu သuB$မလ- ဆiuတ+eတ&ကiu အeသအခG+ ခ&-Cခ+$သieနဖiuလiuအပ#ပ3တယ#။ နမO
န+eတ&န-9 I/O Stream eတ&ကiu သeဘ+eပ3က#eအ+င# eလ6လ+သ&+$Fကပ3မယ#။
JVM ရ-I Memory eပ2မH+Qiတ-6 Object eတ&ကiu တCခ+$တeနရ+ရ+မH+ သ&+$Kပ?$ သiမ#$တ+ကiu Serialize လuပ#တယ#လiu
eခ2ပ3တယ#။တဖန# Serialized လuပ#ထ+$တ-6 Object eတ&ကiu JVM ရ-I Memory eပ2ကiu Cပန#Kပ?$ eခ2ယO အသuB$Cပuတ+
ကiu Deserialize လuပ#တယ#လiueခ2Kပ?$ Deserialize လuပ#တ+ကiu ဘယ#လiu လuပ#တ+လ-။ Kပ?$eတ+6 သတiထ+$စရ+ ဘ+
eတ&Qiလ-ဆiuတ+ကiu eလ6လ+သ&+$ပ3မယ#။
java.io.File
Java IO API ဟ+ JDK version 1.0 ကထ-ကပ3ဝင#လ+ခ-6တ-6 Input Output ကiu လuပ#eဆ+င#ဖiuအတ&က# API တစ#ခu
Cဖစ#ပ3တယ#။ File System ထ-မH+ Qiတ-6 File eတ& Directory eတ&ရ-I Path ကiu ကiuယ#စ+$Cပuဖiuအတ&က# java.io.File
Class ကiu Cပင#ဆင#ထ+$ပ3တယ#။ File Class ဟ+ Serializable န-9 Comparable<File> ကiu Implement လuပ#ထ+$
တ-6 Class တစ#ခuCဖစ#ပ3တယ#။
Constructors Descriptions
File(File parent, String child) Parent Cဖစ#တ-6 File Object တစ#ခuန-9 Child Path Name တiuCဖင#6 File Object ကiu
တည#eဆ+က#Aiuင#တ-6 Constructor Cဖစ#ပ3တယ#
File(String pathname) File Directory ရ-I Path String ကeန File Object ကiu တည#eဆ+က#Aiuင#တ-6
Constructor Cဖစ#ပ3တယ#။ Path အeနန-9 Absolute Path eက+ Relative Path
ကiu ပ3 အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#
File(String parent, String child) File Directory တiuQieနတ-6 Directory Path န-9 File Name တiuကeန File
Object ကiu တည#eဆ+က#Aiuင#တ-6 Constructor Cဖစ#ပ3တယ#။
File(URI uri) File Directory တiuကiueဖ2CပAiuင#တ-6 URI Object ကeနတဆင#6 File Object ကiu
တည#eဆ+က#Aiuင#တ-6 Costructor Cဖစ#ပ3တယ#။
File Class ရ-I Constructor eတ&ကiu eလ6လ+Fကည#6ရင# File တစ#ခuကiu တည#eဆ+က#ဖiuအတ&က#က အ-6ဒ? File ရ-I
Path ကiu eဖ2Cပeပ$Aiuင#ဖiuလiuတ+ကiu eတ&Jရပ3မယ#။ အ-6ဒ? Path ကiu eဖ2Cပတ-6eနရ+မH+ Absoulte Path န-9လည#$ eဖ2Cပ
Aiuင#သလiu Relative Path န-9 လည#$eဖ2CပAiuင#မH+ Cဖစ#ပ3တယ#။
// from URI
URI uri = new URI("c:\\tmp\\names.txt");
File file = new File(uri);
createNewFile() boolean
File Object မH+ သတ#မHတ#ထ+$ခ-6တ-6 Abstract Path Name Cဖင#6 Empty New File တစ#ခu
ကiu တည#eဆ+က#eပ$ပ3လiမ#6မယ#။ တကယ#လiu Path အတiuင#$ File ဟ+Qieနမယ#ဆiuရင#
eဆ+က#eပ$Aiuင#မH+ မဟuတ#ပ3ဘO$။ File ကiu တည#eဆ+က#Aiuင#ခ-6ရင# true ကiu Return လuပ#မH+
Cဖစ#Kပ?$ မeဆ+က#Aiuင#ခ-6ပ3က false ကiu Return Cပန#မH+ Cဖစ#ပ3တယ#။
IOException ကiu Cဖစ#eပ2eစAiuင#တ-6အတ&က# Handle လuပ#eပ$ဖiuလiuအပ#ပ3တယ#။
mkdir() boolean
File Object မH+ သတ#မHတ#ထ+$တ-6 Abstract Path Name Cဖင#6 Directory ကiu
တည#eဆ+က#eပ$မH+ Cဖစ#ပ3တယ#။ တည#eဆ+က#Aiuင#ခ-6ရင# true ကiu Return Cပန#မH+ Cဖစ#Kပ?$ မ
တည#eဆ+က#Aiuင#ခ-6ပ3က false ကiu Return Cပန#မH+ Cဖစ#ပ3တယ#
mkdirs() boolean
File Object မH+ သတ#မHတ#ထ+$တ-6 Abstract Path Name Cဖင#6 Directory ကiu
တည#eဆ+က#eပ$မH+ Cဖစ#ပ3တယ#။ Child Directories eတ&ပ3လ+ရင#eတ+6 ဒ? Method ကiu
အသuB$CပuရမH+ Cဖစ#ပ3တယ#။ တည#eဆ+က#Aiuင#ခ-6ရင# true ကiu Return Cပန#မH+ Cဖစ#Kပ?$ မ
တည#eဆ+က#Aiuင#ခ-6ပ3က false ကiu Return Cပန#မH+ Cဖစ#ပ3တယ#
delete() boolean
File Object Cဖင#6 ကiuယ#စ+$Cပueသ+ File Directory ကiu delete လuပ#လiuတ-6အခ3မH+ အသuB$Cပu
Aiuင#ပ3တယ#။ eအ+င#Cမင#စ&+ Kပ?$ဆuB$ပ3က true ကiu Return Cပန#မH+ Cဖစ#Kပ?$ မဖGက#Aiuင#ခ-6ပ3က
false ကiu Return Cပန#မH+ Cဖစ#ပ3တယ#။
deleteOnExit() void
File Object ကiu JVM ကeန Application ကiu Run တ+Kပ?$တ-6 အခGiန#မH+ Delete လuပ#eပ$
မH+ Cဖစ#ပ3တယ#။ Return Type eတ+6မQiပ3ဘO$။
dir1.mkdirs();
အထက#ပ3 နမOန+ထ-မH+ outer ဆiuတ-6 Directory ထ-မH+ inner ဆiuတ-6 Directory Qieနတ-6 အတ&က# mkdirs method
ကiu အသuB$Cပueနတ+Cဖစ#ပ3တယ#။
getAbsoluteFile() File
Absolute Path ပuBစBန-9 တည#eဆ+က#ထ+$တ-6 File Object ကiu ရQiမH+ Cဖစ#ပ3တယ#။
getAbsolutePath() String
File Object ရ-I Absolute Path ကiu ရQiမH+ Cဖစ#ပ3တယ#
getCanonicalFile() File
Canonical ပuBစBCဖင#6တည#eဆ+က#ထ+$တ-6 File Object ကiu ရQiမH+ Cဖစ#ပ3တယ#
getCanonicalPath() String
Absolute and Unique Cဖစ#တ-6 Canonical File Path ကiu ရQiမH+ Cဖစ#ပ3တယ#
getName() String
File Name ကiu ရQiမH+ Cဖစ#ပ3တယ#။
getParent() String
Parent Directory ရ-I Name ကiu ရQiမH+ Cဖစ#ပ3တယ#။ တကယ#လiu သတ#မHတ#ထ+$Cခင#$ မQi
ပ3က null ကiu Cပန#ရမH+ Cဖစ#ပ3တယ#။
getParentFile() File
Parent Directory ရ-I File Object ကiu Cပန#ရမH+Cဖစ#ပ3တယ#။ သတ#မHတ#ထ+$Cခင#$မQiပ3က
null ကiu Cပန#ရမH+ Cဖစ#ပ3တယ#။
getPath() String
Absolute Path Name ကiu Return အeနန-9 Cပန#လည# ရQiမH+ Cဖစ#ပ3တယ#။
isAbsolute() boolean
File Object ကiu သတ#မHတ#ထ+$တ-6 File Name ဟ+ Absolute Path ဟuတ#မဟuတ#ကiu
စစ#eဆ$Aiuင#တ-6 Method Cဖစ#ပ3တယ#။
Move File
isDirectory() boolean
Directory တစ#ခu ဟuတ#မဟuတ#ကiu သiQieစAiuင#eသ+ Method Cဖစ#ပ3တယ#
isFile() boolean
File တစ#ခu ဟuတ#မဟuတ#ကiu သiQieစAiuင#eသ+ Method Cဖစ#ပ3တယ#
isHidden() boolean
Hidden File တစ#ခu ဟuတ#မဟuတ#ကiu သiQieစAiuင#eသ+ Method Cဖစ#ပ3တယ#
lastModified() long
eန+က#ဆuB$ Modified လuပ#သ&+$eသ+ အခGiန#ကiu သiQieစAiuင#eသ+ Method Cဖစ#ပ3တယ#
getTotalSpace() long
File Name န-9သတ#မHတ#ထ+$တ-6 Partition ရ-I ပမ+ဏကiu သiQieစAiuင#eသ+ Method Cဖစ#ပ3
တယ#
getFreeSpace() long
File Name န-9သတ#မHတ#ထ+$တ-6 Partition ထ-မH+Qiတ-6 Free Space ကiu သiQieစAiuင#eသ+
Method Cဖစ#ပ3တယ#
getUsableSpace() long
File Name န-9သတ#မHတ#ထ+$တ-6 Partition ထ-မH+Qiတ-6 အသuB$CပuAiuင#eသ+ ပမ+ဏကiu သiQi
eစAiuင#eသ+ Method Cဖစ#ပ3တယ#
setLastModified(long boolean
time) eန+က#ဆuB$ Modified လuပ#တ-6အခGiန#ကiu သတ#မHတ#eပ$Aiuင#eသ+ Method Cဖစ#ပ3တယ#
setExcutable(boolean boolean
executable) Program တစ#ခuအeနန-9 Run လiuရမရကiu သတ#မHတ#eပ$Aiuင#eသ+ Method Cဖစ#ပ3တယ#
setExcutable(boolean boolean
executable, boolean Program တစ#ခuအeနန-9 Run လiuရမရကiu File Owner တစ#eယ+က#ထ- လuပ#လiuရတ+လ+$
ownerOnly) ဆiuတ-6 အခGက#ကiuပ3 သတ#မHတ#eပ$Aiuင#eသ+ Method Cဖစ#ပ3တယ#
setReadable(boolean boolean
readable) File ကiu Read လuပ#လiuရမရကiuသတ#မHတ#eပ$Aiuင#eသ+ MethodCဖစ#ပ3တယ#
setReadable(boolean boolean
readable, boolean File ကiu Read လuပ#လiuရမရကiu File Owner တစ#eယ+က#ထ- လuပ#လiuရတ+လ+$ ဆiuတ-6
ownerOnly) အခGက#ကiuပ3 သတ#မHတ#eပ$Aiuင#eသ+ Method Cဖစ#ပ3တယ#
setReadOnly() boolean
Read Only File အCဖစ#သတ#မHတ#eပ$Aiuင#eသ+ Method Cဖစ#ပ3တယ#။
setWritable(boolean boolean
writable) Write လuပ#လiuရမရကiu သတ#မHတ#eပ$Aiuင#eသ+ Method Cဖစ#ပ3တယ#။
setWritable(boolean boolean
writable, boolean Write လuပ#လiuရမရကiu File Owner တစ#eယ+က#ထ- လuပ#လiuရတ+လ+$ ဆiuတ-6 အခGက#ကiuပ3
ownerOnly) သတ#မHတ#eပ$Aiuင#eသ+ Method Cဖစ#ပ3တယ#
list() String[]
လက#Qi Directory eအ+က#မH+Qiတ-6 File eတ& Directory eတ&ရ-I အမည#ကiu String []
အeနန-9 Cပန#လည# ရQiမH+ Cဖစ#ပ3တယ#။
listFiles() File[]
လက#Qi Directory eအ+က#မH+Qiတ-6 File eတ& Directory eတ&ကiu File[] အeနန-9 Cပန#လည#
ရQiမH+ Cဖစ#ပ3တယ#။
listFiles(FileNameFilter File[]
filter) လက#Qi Directory eအ+က#မH+Qiတ-6 File eတ& Directory eတ&ကiu FileNameFilter
Interface Object ကiu သuB$Kပ?$ Filter လuပ#Kပ?$ Cပန#လည#ရQiAiuင#မH+ Cဖစ#ပ3တယ#
Example
ဒ?တစ#eခ3က#eတ+6 Directory ထ-မH+Qiတ-6 File eတ&ကiu န+မည#တစ#ခuန-9 Q+Kပ?$ ဖGက#တ-6 နမOန+တစ#ခu eရ$Fကည#6ပ3မယ#။
Maven ကiu သuB$Kပ?$ Library eတ&ကiu Download လuပ#တ-6အခ3မH+ Connection မeက+င#$ရင# LastUpdate ဆiuတ-6
န+မည#န-9 File eတ&ကiu ခGန#ထ+$Kပ?$ ရပ#သ&+$တတ#ပ3တယ#။ အ-6ဒ? File eတ&ကiu Q+Kပ?$ Delete လuပ#eပ$Aiuင#တ-6 နမOန+
တစ#ခuကiu eရ$Fကည#6ပ3မယ#။
toPath() Path
Java NiO2 ရ-I Path Object အCဖစ#eCပ+င#$eပ$Aiuင#တ-6 Method Cဖစ#ပ3တယ#
toStirng() String
File Object ရ-I Path Name ကiu ရQiAiuင#မH+ Cဖစ#ပ3တယ#။ getPath method AHင#6 ရလဒ#
Cခင#$ အတOတOCဖစ#ပ3တယ#
toURI() URI
File Path Name ကiu ကiuယ#စ+$Cပueသ+ URI Object ကiu Cပန#လည#ရQiမH+ Cဖစ#ပ3တယ#
Conclusion
File Object ဟ+ Java IO ကiu အသuB$Cပuရ+မH+ မQiမCဖစ#လiuအပ#eသ+ Object တစ#ခuCဖစ#ပ3တယ#။ လက#Qi File eတ&
Directory eတ&ရ-I Abstract Path Name ကiu ကiuယ#စ+$Cပuတ-6 Object တစ#ခuCဖစ#ပ3တယ#။ File Object တစ#ခuကiu
ဘယ#လiu Create လuပ#မယ#။ File eတ& Directory eတ&ကiu ဘယ#လiu တည#eဆ+က#မယ#၊ Kပ?$ရင# Delete လuပ#မယ#။
Directory ထ-မH+Qiတ-6 File eတ&ကiu ဘယ#လiu Q+eဖ&မယ#ဆiuတ+ကiu သiQiထ+$eအ+င# eလ6လ+ထ+$ဖiu လiuအပ#ပ3မယ#။
IO Streams
အရင#တစ#eခ3က# File အeFက+င#$eရ$သ+$ခ-6စT#က File eတ& Directory eတ&ကiu Create လuပ#Aiuင#တယ#။ Kပ?$eတ+6လ-
Delete လuပ#Aiuင#တယ#။ အမည#eCပ+င#$တ+တiuလ- လuပ#Aiuင#ခ-6ပ3တယ#။ ဒ3eပမ-6 အ-6ဒ? File eတ&ထ-က Data eတ&ကiu
Read လuပ#တ+တiu Write လuပ#တ+တiuကiu မလuပ#Aiuင#ခ-6ပ3ဘO$။
File ထ-က Data eတ&ကiu Input Output လuပ#Aiuင#ဖiuအတ&က# I/O Stream eတ&ကiu အသuB$CပuရမH+ Cဖစ#ပ3တယ#။ Java
Language မH+ I/O Stream eတ&ကiu အသuB$Cပuမည#6 Data Type အeပ2မOတည#Kပ?$ အမGiu$မGiu$Cပင#ဆင#ထ+$ပ3တယ#။
Kပ?$eတ+6 I/O Stream eတ&ကiu eရ$သ+$တ-6eနရ+မH+လ- Design Pattern eတ&ကiu အသuB$Cပueရ$သ+$ထ+$ပ3တယ#။
အရင#ဆuB$ I/O Stream eတ&ကiu eလ6လ+တ-6eနရ+မH+ အသuB$CပuAiuင#တ-6 I/O Stream eတ&န-9 အသuB$CပuပuBeတ&ကiu eလ6လ+
Kပ?$၊ eန+က#ပiuင#$မH I/O Stream eတ&မH+ အသuB$Cပuထ+$တ-6 Design Patterns eတ&ကiu eလ6လ+သ&+$ပ3မယ#။
Input Source လiueCပ+တ-6eနရ+မH+ File တစ#ခuလ-Cဖစ#Aiuင#သလiu System Console ကလ+တ-6 Input လ- Cဖစ#eနAiuင#
ပ3တယ#။ ဒ3မHမဟuတ# အCခ+$eသ+ Program တစ#ခuခuလ- Cဖစ#Aiuင#ပ3တယ#။ ဒ?လiuပ- Output Destination လiueCပ+တ-6
eနရ+မH+လ- File တစ#ခuခu၊ System Console ဒ3မHမဟuတ# အCခ+$eသ+ Program တစ#ခuခuလ- Cဖစ#eနAiuင#ပ3တယ#။
ဒ3eပမ-6 အeCခခBအ+$Cဖင#6eတ+6 I/O Stream eတ&ကiu Input Stream eတ&န-9 Output Streams eတ&ဆiuKပ?$ သတ#မHတ#
ထ+$ပ3တယ#။
Input Streams
Java Program ထ-ကအသuB$Cပuရန# Data မG+$အ+$ Source တစ#eနရ+ရ+မH ဖတ#ယOAiuင#ဖiuအတ&က# Input Stream
မG+$ကiu အသuB$Cပuရပ3တယ#။ အသuB$Cပuလiuတ-6 Data Type အeပ2မOတည#Kပ?$ Streams အမGiu$မGiu$ကiuလ- Cပင#ဆင#ထ+$ပ3
တယ#။ အသuB$CပuAiuင#တ-6 Data Type eတ&ကeတ+6 bytes, primitive type data, localize character မG+$န-9 Object
eတ&ပ- Cဖစ#Fကပ3တယ#။
Output Streams
Java Program ထ-ကeန Destination တစ#ခuဆ?ကiu Data မG+$ကiu Output လuပ#ခGင#တ-6အခ3 Output Stream eတ&
ကiu အသuB$CပuAiuင#ပ3တယ#။ Destination အeနန-9 File တစ#ခuခuCဖစ#Aiuင#သလiu၊ System Console လ- Cဖစ#Aiuင#သလiu
အCခ+$eသ+ Program တစ#ခuခuလ- Cဖစ#Aiuင#ပ3တယ#။ Kပ?$eတ+6 byte အeနန-9eသ+#၎င#$၊ primitive data type အeနန-9
eသ+#၎င#$၊ localize character မG+$အeနန-9eသ+#၎င#$၊ Object မG+$အeနန-9eသ+#၎င#$ Outputလuပ#Aiuင#ပ3တယ#။
Input Stream တuန#$ကလiuပ- အသuB$Cပuလiuတ-6 Data Type eတ&အလiuက# Stream eတ&ကiu eရ&$ခGယ# အသuB$CပuAiuင#မH+
Cဖစ#ပ3တယ#။
Byte Streams
File တစ#ခuထ-က Data eတ&ကiu Binary Data eတ&Cဖစ#တ-6 8-bit bytes ပuBစBန-9 Read Write လuပ#လiuတ-6အခ3 Byte
Streams eတ&ကiu အသuB$CပuရမH+ Cဖစ#ပ3တယ#။ Byte Stream eတ&အ+$လuB$ဟ+ InputStream န-9 OutputStream
Class eတ&ရ-I Sub Class eတ&Cဖစ#FကKပ?$ အသuB$မG+$တ+ကeတ+6 FileInputStream န-9 FileOutputStream Class
တiuပ- Cဖစ#Fကပ3တယ#။
FileInputStream ကeတ+6 File တစ#ခuကeန Byte eတ&ကiu Read လuပ#ခGင#တ-6အခ3မH+ အသuB$CပuAiuင#တ-6 Stream
တစ#ခuCဖစ#Kပ?$၊ FileInputStream Object ကiu တည#eဆ+က#ရန# Constructor ၃ မGiu$Cပင#ဆင#ထ+$ပ3တယ#။
Constructor Description
FileInputStream(File file) Input လuပ#ရမည#6 File ကiu ကiuယ#စ+$Cပuတ-6 File Object ကiu Argument
အeနန-9 အသuB$Cပuရပ3မယ#
FileInputStream(FileDescription fdObj) Input လuပ#မည#6 File ကiu eဖ2Cပeပ$Aiuင#တ-6 FileDescriptor Object ကiu
Argument အeနန-9 အသuB$Cပuရပ3မယ#
FileInputStream(String name) Input လuပ#မည#6 File ရ-I အမည# String Object ကiu Argument အeနန-9
အသuB$Cပuရပ3မယ#
FileInputStream Object ကeန byte eတ&ကiu 1 byte ခGင#$ Read လuပ#လiuတ-6အခ3 read() ဆiuတ-6 Method ကiu
အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
FileOutputStream ကeတ+6 File တစ#ခuဆ?ကiu Byte eတ& အeနန-9 Output လuပ#eပ$Aiuင#တ-6 Stream Object တစ#ခu
Cဖစ#ပ3တယ#။ FileOutputStream Object ကiu တည#eဆ+က#ဖiuအတ&က# Cပင#ဆင#ထ+$တ-6 Constructor eတ&ကeတ+6
eအ+က#ပ3 အတiuင#$Cဖစ#Fကပ3တယ#။
Constructor Description
FileOutputStream(File file) Output လuပ#ရမည#6 File ကiu ကiuယ#စ+$Cပuတ-6 File Object ကiu
Argument အeနန-9 အသuB$Cပuရပ3မယ#
FileOutputStream(File file, boolean Output လuပ#ရမည#6 File ကiu ကiuယ#စ+$Cပuတ-6 File Object န-9
append) boolean တန#ဖiu$တစ#ခuကiu Argument အeနန-9 eပ$ရပ3မယ#။
boolean ရ-I တန#ဖiu$ဟ+ true Cဖစ#မယ#ဆiuရင# လက#QiQiKပ?$သ+$ File
မH+ Output လuပ#လ+တ-6 Data eတ&ကiu ဆက#Kပ?$ထည#6eပ$Aiuင#မH+ Cဖစ#
ပ3တယ#
FileOutputStream(String name) Output လuပ#မည#6 File ရ-I အမည# String Object ကiu Argument
အeနန-9 အသuB$Cပuရပ3မယ#
FileOutputStream(String name, boolean Output လuပ#မည#6 File ရ-I အမည#ကiu String Object န-9 boolean
append) တန#ဖiu$တစ#ခuကiu Argument အeနန-9 eပ$ရပ3မယ#။
boolean ရ-I တန#ဖiu$ဟ+ true Cဖစ#မယ#ဆiuရင# လက#QiQiKပ?$သ+$ File
မH+ Output လuပ#လ+တ-6 Data eတ&ကiu ဆက#Kပ?$ထည#6eပ$Aiuင#မH+ Cဖစ#
ပ3တယ#
Output လuပ#လiuတ-6 Byte Data eတ&ကiu eရ$သ+$Aiuင#ဖiuအတ&က# write(int b), write(byte [] b) န-9 write(byte [] b,
int off, int len) method တiuကiu Cပင#ဆင#ထ+$ပ3တယ#။ 1 byte ခGင#$ Write လuပ#ခGင#ရင#eတ+6 write(int b) ကiu
အသuB$CပuရမH+ Cဖစ#ပ3တယ#။
Stream Object eတ&ဟ+ Resource eတ&ကiu အသuB$Cပueနတ-6 Object အမGiu$အစ+$ Cဖစ#တ-6အတ&က# အသuB$CပuKပ?$တ-6
အခ3မH+ Cပန#Kပ?$ ပiတ#eပ$ဖiuလiuအပ#တ-6အတ&က# close() ဆiuတ-6 Method ကiuလ- Cပင#ဆင#eပ$ထ+$ပ3တယ#။ ဒ3eပမ-6 Java
SE 7 ရ-I eရ$သ+$ပuBအသစ#Cဖစ#တ-6 try-with-resource eရ$သ+$ပuBန-9 eရ$သ+$မယ#ဆiuရင#eတ+6 အလiuအeလG+က# ပiတ#
eပ$Aiuင#မH+ Cဖစ#ပ3တယ#။
အထက#ပ3နမOန+ကeတ+6 from.txt ဆiuတ-6 File ထ-မH+Qiတ-6 Data eတ&ကiu 1 byte ခGင#$ read လuပ#Kပ?$ to.txt ဆiuတ-6ဖiuင#
ထ-ကiu 1 byte ခGင#$ write လuပ#eနတ-6 နမOန+Cဖစ#ပ3တယ#။
FileInputStream န-9 FileOutputStream Object eတ&ကiu try with resource န-9 eရ$သ+$ထ+$တ-6အတ&က#
eန+က#ဆuB$မH+ အလiuအeလG+က#ပiတ#eပ$သ&+$မH+ Cဖစ#တယ#။ အ-6ဒ?အတ&က# တကO$တက close လuပ#eပ$စရ+မလiu
eတ+6 ပ3ဘO$။ တဖန# while clause ထ-မH+ i = in.read() ဆiuKပ?$ FileInputStream ကeန 1 byte ခGင#$ Read လuပ#
eနပ3တယ#။ eန+က#ဆuB$ Read လuပ#စရ+မQieတ+6တ-6အခ3 -1 ကiu Return Cပန#မH+ Cဖစ#Kပ?$ While loop ထ-ကeန
ထ&က#သ&+$မH+ Cဖစ#ပ3တယ#။
While Loop ထ-မH+eတ+6 Read လuပ#လ+တ-6 တန#ဖiu$ကiu 1 byte ခGင#$ FileOutputStream ကiu သuB$Kပ?$ write လuပ#
eပ$eနပ3တယ#။ ဤနည#$အ+$Cဖင#6 from.txt ဖiuင#ထ-က Data eတ&ကiu to.txt ဖiuင#ထ-ကiu 1 byte ခGင#$ Write လuပ#eပ$
သ&+$Aiuင#မH+ Cဖစ#ပ3တယ#။
Character Streams
Text File တစ#ခuအတ&င#$Qi Data မG+$ကiu Character ပuBစBန-9 Read / Write လuပ#ခGင#ရင# Character Streams မG+$
ကiu အသuB$CပuရမH+ Cဖစ#ပ3တယ#။ Character Streams eတ&ဟ+ InputStreamReader န-9 OutputStreamWriter
တiuရ-I Sub Class eတ& Cဖစ#FကKပ?$ FileReader န-9 FileWriter တiuဟ+ အသuB$မG+$ပ3တယ#။
FileReader န-9 FileWriter တiuဟ+ Default Encoding န-9 Character eတ&ကiu အလ&ယ#တကO Read / Write လuပ#
Aiuင#eအ+င#Cပင#ဆင#ထ+$တ-6 Class eတ&Cဖစ#FကKပ?$၊ Character Set တiuကiu ကiuယ#တiuင# သတ#မHတ#Kပ?$ Read / Write
လuပ#ခGင#ရင#eတ+6 InputStreamReader န-9 OutputStreamWriter တiuကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
FileReader ကiu Character မG+$ကiu Read လuပ#တ-6eနရ+မH+ အသuB$CပuKပ?$ eရ$သ+$Aiuင#တ-6 Constructor မG+$
ကeတ+6 eအ+က#ပ3 အတiuင#$Cဖစ#Fကပ3တယ#။
Constructor Description
FileReader(File file) Input လuပ#ရမည#6 File ကiu ကiuယ#စ+$Cပuတ-6 File Object ကiu
Argument အeနန-9 အသuB$Cပuရပ3မယ#
FileReader(String name) Input လuပ#မည#6 File ရ-I အမည# String Object ကiu Argument အeန
န-9 အသuB$Cပuရပ3မယ#
FileWriter ကiu Character မG+$ကiu Write လuပ#တ-6eနရ+မH+ အသuB$CပuKပ?$ eရ$သ+$Aiuင#တ-6 Constructor မG+$ကeတ+6
eအ+က#ပ3 အတiuင#$Cဖစ#Fကပ3တယ#။
Constructor Description
FileWriter(File file) Output လuပ#ရမည#6 File ကiu ကiuယ#စ+$Cပuတ-6 File Object ကiu
Argument အeနန-9 အသuB$Cပuရပ3မယ#
FileWriter(File file, boolean append) Output လuပ#ရမည#6 File ကiu ကiuယ#စ+$Cပuတ-6 File Object န-9
boolean တန#ဖiu$တစ#ခuကiu Argument အeနန-9 eပ$ရပ3မယ#။
boolean ရ-I တန#ဖiu$ဟ+ true Cဖစ#မယ#ဆiuရင# လက#QiQiKပ?$သ+$ File
မH+ Output လuပ#လ+တ-6 Data eတ&ကiu ဆက#Kပ?$ထည#6eပ$Aiuင#မH+ Cဖစ#
ပ3တယ#
FileWriter(String name) Output လuပ#မည#6 File ရ-I အမည# String Object ကiu Argument
အeနန-9 အသuB$Cပuရပ3မယ#
FileWriter(String name, boolean append) Output လuပ#မည#6 File ရ-I အမည#ကiu String Object န-9 boolean
တန#ဖiu$တစ#ခuကiu Argument အeနန-9 eပ$ရပ3မယ#။
boolean ရ-I တန#ဖiu$ဟ+ true Cဖစ#မယ#ဆiuရင# လက#QiQiKပ?$သ+$ File
မH+ Output လuပ#လ+တ-6 Data eတ&ကiu ဆက#Kပ?$ထည#6eပ$Aiuင#မH+ Cဖစ#
ပ3တယ#
FileReader န-9 FileWriter တiuရ-I အသuB$CပuပuBဟ+ အeCခခBအ+$Cဖင#6 FileInputStream န-9 FileOutputStream တiuန-9
အတOတOပ- Cဖစ#ပ3တယ#။
FileReader ကiu အသuB$CပuKပ?$ Text File အတ&င#$မH Character မG+$ကiu Read လuပ#ရ+မH+ read() method ကiu
အသuB$CပuAiuင#မH+Cဖစ#ပ3တယ#။ Return Type မH+ int Cဖစ#Kပ?$ Character တစ#လuB$ကiu ကiuယ#စ+$CပuမH+ Cဖစ#ပ3တယ#။
eန+က#ဆuB$ Read လuပ#စရ+မQieတ+6တ-6အခ3 -1 ကiu Return Cပန#မH+Cဖစ#ပ3တယ#။
Character စ+လuB$မG+$ကiu Write လuပ#လiuတ-6အခ3 FileWriter Object ရ-I write(int char) method ကiu အသuB$CပuAiuင#
မH+ Cဖစ#ပ3တယ#။ Write Method ကiu အသuB$CပuKပ?$ Character တစ#လuB$ခGင#$စ?ကiu Output လuပ#eပ$Aiuင#မH+ Cဖစ#ပ3
တယ#။
အထက#ပ3နမOန+ထ-BမH+eတ+6 from.txt file ထ-မH Character မG+$ကiu while statement Cဖင#6 တစ#လuB$စ?ဖတ#Kပ?$
out.txt file ထ-ကiu Character တစ#လuB$စ? Output လuပ#eပ$Aiuင#မH+ Cဖစ#ပ3တယ#။
Lined Oriented IO
Character I/O ကiu အသuB$Cပuတ-6အခ3မH+ Character တစ#လuB$Cခင#$ Read / Write လuပ#တ+ထက# ဒ?ထက#ပiuKပ?$
Pက?$မ+$တ-6 Unit န-9 Read / Write လuပ#eလ6Qiပ3တယ#။ အသuB$မG+$တ+က စ+eFက+င#$ တစ#eFက+င#$စ?ကiu Read /
Write လuပ#တ-6ပuBစBပ- Cဖစ#ပ3တယ#။ Line တစ#ခuခGင#$စ?ကiu Read / Write လuပ#ဖiuအတ&က# BufferedReader,
BufferedWriter န-9 PrintWriter တiuကiu အသuB$CပuAiuင#ပ3တယ#။
BufferedReader
BufferedReader eတ&ဟ+ Text File eတ&ကeန Character eတ&ကiu သတ#မHတ#ထ+$တ-6 Buffered Size အလiuက#
Character Array အCဖစ#eသ+#၎င#$၊ စ+eFက+င#$တစ#eFက+င#$စ?လiuက#eသ+#၎င#$ Read လuပ#Aiuင#eအ+င#Cပင#ဆင#ထ+$တ-6
Class eတ& Cဖစ#ပ3တယ#။
Constructor Description
BufferedReader(Reader in, int size) Reader Object တစ#ခuန-9 Buffer Size ကiu Argument အeနန-9 eပ$
Kပ?$ BufferedReader Object တစ#ခuကiu တည#eဆ+က#Aiuင#မH+ Cဖစ#ပ3
တယ#။ Buffer Size ကiu သတ#မHတ#Kပ?$ အသuB$Cပuလiuပ3က ဤ
Constructor ကiu အသuB$CပuရမH+ Cဖစ#ပ3တယ#။
BufferedReader ကeန စ+eFက+င#$ တစ#eFက+င#$စ? Read လuပ#လiuပ3က readLine() method ကiu အသuB$CပuAiuင#မH+
Cဖစ#ပ3တယ#။ အထက#ပ3 နမOန+မH+eတ+6 in.readLine() ကiu အသuB$CပuKပ?$ line variable မH+ အစ+$ထiu$eနပ3တယ#။ Kပ?$
eတ+6 While Statement မH+ line ဟ+ null မCဖစ#မCခင#$ loop ပတ#eနမH+ Cဖစ#Kပ?$ စ+eFက+င#$eတ& ဖတ#စရ+ကuန#သ&+$
ရင# null ကiu Return လuပ#မH+ Cဖစ#တ-6အတ&က# looping ထ-ကeန ထ&က#သ&+$ပ3လiမ#6မယ#။
PrintWriter
Java Program ထ-ကeန Character eတ&ကiu String အeနန-9 Write လuပ#လiuတ-6အခ3မH+ PrintWriter ကiu အသuB$Cပu
Aiuင#မH+ Cဖစ#ပ3တယ#။ PrintWriter ကiu အသuB$CပuKပ?$ String eတ&လiu ဒ?အတiuင#$ Write လuပ#Aiuင#သလiu၊ Format ခGKပ?$လ-
Write လuပ#Aiuင#ပ3တယ#။ ထiuအCပင# Locale အလiuက#သတ#မHတ#Kပ?$လ- Format လuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။ PrintWriter
Object ကiu တည#eဆ+က#Aiuင#တ-6 Constructor eတ&ကeတ+6 eအ+က#ပ3 အတiuင#$Cဖစ#Fကပ3တယ#။
Constructor Description
PrintWriter(File file, String csn) Output File န-9 Character Set ကiu သတ#မHတ#Kပ?$ PrintWriter
Object ကiu တည#eဆ+က#Aiuင#မH+ Cဖစ#ပ3တယ#။ Auto Flush ကiueတ+6
လuပ#eပ$Aiuင#မH+ မဟuတ#ပ3ဘO$
PrintWriter(OutputStream out, boolean OutputStream န-9 Auto Flush Mode ကiu သတ#မHတ#Kပ?$
autoFlush) PrintWriter Object ကiu တည#eဆ+က#Aiuင#မH+ Cဖစ#ပ3တယ#။
PrintWriter(String fileName, String csn) File Name န-9 Character Set ကiu သတ#မHတ#Kပ?$ PrintWriter
Object ကiu တည#eဆ+က#Aiuင#မH+ Cဖစ#ပ3တယ#။ Auto Flush ကiueတ+6
လuပ#eပ$Aiuင#မH+ မဟuတ#ပ3ဘO$
PrintWriter(Writer out, boolean autoFlush) Writer န-9 Auto Flush Mode ကiu သတ#မHတ#Kပ?$ PrintWriter Object
ကiu တည#eဆ+က#Aiuင#မH+ Cဖစ#ပ3တယ#။
Data Streams
Primitive Data န-9 String တန#ဖiu$ eတ&ကiu Read / Write လuပ#ခGင#တ-6အခ3 DataInputStream န-9
DataOutputStream တiuကiu အသuB$CပuAiuင#ပ3တယ#။
Constructor Description
မiမiအသuB$Cပuလiuတ-6 Data Type အလiuက# သက#ဆiuင#ရ+ Method ကiu အသuB$CပuKပ?$ eရ$သ+$ရမH+ Cဖစ#ပ3တယ#။
Writing As Data
အထက#ပ3နမOန+မH+eတ+6 name variable ဟ+ String Cဖစ#တ-6အတ&က# writeUTF ကiu အသuB$CပuKပ?$၊ age ဟ+ int
Cဖစ#တ-6အတ&က# writeInt ကiu အသuB$Cပuပ3တယ#။ တဖန# isMan ဆiuတ-6 Variable ဟ+ boolean type Cဖစ#တ-6အတ&က#
writeBoolean ကiu အသuB$CပရမH+ Cဖစ#ပ3တယ#။
Reading Data
အထက#ပ3 နမOန+ကeတ+6 DataOutput Cဖင#6 Write လuပ#ထ+$တ-6 data.dat file ထ-က Data eတ&ကiu Cပန#Kပ?$ Read
လuပ#eနတ+Cဖစ#ပ3တယ#။ String Data eတ&ကiu readUTF ကiuအသuB$CပuKပ?$၊ int ကiueတ+6 readInt ကiu အသuB$Cပuပ3
တယ#။ တဖန# boolean ကiueတ+6 readBoolean method ကiu အသuB$Cပuပ3တယ#။
Serialization
အe^တ&င#eဖ2Cပခ-6သလiu Java ဘ+သ+ရပ#တ&င# Byte, Character, Primitive Data မG+$AHင#6 String မG+$ကiu Read /
Write လuပ#Aiuင#တ-6အCပင# Object eတ&ကiuလ- Object အတiuင#$ Read / Write လuပ#Aiuင#ပ3တယ#။
Java ဘ+သ+ရပ#မH+ JVM Memory အeပ2မH+Qiတ-6 Object eတ&ကiu အCခ+$ တစ#eနeနရ+ကiu ပiueပ$လiuက#Cခင#$ကiu
Serialize လuပ#တယ#လiueခ2ပ3တယ#။ တဖန# တစ#Cခ+$တစ#eနeနရ+ကeနလ+တ-6 Serialized လuပ#ထ+$တ-6 Data
eတ&ကeန JVM Memory အeပ2ကiu Cပန#Kပ?$ Object အCဖစ#Cပန#eCပ+င#$တ+ကiueတ+6 Deserialize လuပ#တယ#လiueခ2
ပ3တယ#။ Deseiralize လuပ#တယ#ဆiuတ+ကလ- Serialize လuပ#ထ+$တ-6 Data မG+$ကiuသ+ Cပuလuပ#Aiuင#မH+ Cဖစ#ပ3တယ#။
နမOန+အ+$Cဖင#6 Program ထ-မH+ သuB$eနတ-6 Java Object eတ&ကiu File တစ#ခuခuမH+ သ&+$သiမ#$တ+တiu၊ Internet ကiu
Cဖတ#Kပ?$ တစ#Cခ+$တစ#eနeနရ+ကiuပiueပ$တ+တiuဟ+ Serialize လuပ#တ+Cဖစ#Fကပ3တယ#။ Server အeပ2မH+Qiတ-6
Object eတ&ကiu Session eပ2မH+ သuB$eနတယ#ဆiuတ+ကလ- Serialize လuပ#eနတ+ပ- Cဖစ#ပ3တယ#။
ဒ3Cဖင#6 ဘယ#လiu Object eတ&ကiu Serialize လuပ#လiuရတ+လ-။ Primitive Data Type eတ&၊ Serializable Interface
ကiu Implement လuပ#ထ+$တ-6 Object eတ&န-9 Serializable Object eတ&ရ-I Collection eတ& ဆiuရင# Serialize လuပ#
လiuရမH+ Cဖစ#ပ3တယ#။
Object တစ#ခuကiu Serialize လuပ#တ-6အခ3မH+ Object ရ-I State eတ&Cဖစ#Fကတ-6 Instance Variable eတ&ကiuသ+
Serialize လuပ#သ&+$မH+ Cဖစ#ပ3တယ#။ ဒ36eFက+င#6 Serialize လuပ#မည#6 Object ရ-I Instance Variable eတ&ဟ+လ-
Serializable Cဖစ#ဖiuလiuအပ#ပ3တယ#။ တကယ#လiu Serialize မလuပ#ခGင#တ-6 Instance Variable eတ&ဆiuရင# transient
modifier ကiu eရ$သ+$Kပ?$ eဖ2CပAiuင#ပ3တယ#။ Instance Variable eတ&e^မH+ transient ကiu eရ$သ+$ထ+$ရင# အ-6ဒ?
Field ကiu Serialize လuပ#မH+ မဟuတ#eတ+6ပ3ဘO$။
Serialize လuပ#တ-6အခ3မH+ Serial Version UID ဟ+ Static Variable Cဖစ#eပမ-6 eခင#$ခGက#အeနန-9 Serialize
အလuပ#ခBရမH+ Cဖစ#ပ3တယ#။ Deserialize လuပ#တ-6အခ3မH+ လက#Qi Class န-9 Deserialize လuပ#မည#6 Object ရ-I Serial
Version UID ကiu တiuက#စစ#Kပ?$ မHန#ကန#မHသ+ Serialize လuပ#eပ$မH+ Cဖစ#ပ3တယ#။ တကယ#လiu Version AHစ#ခuမတOည?
ခ-6ပ3က InvalidClassException ကiu Cဖစ#eပ2eစမH+ Cဖစ#ပ3တယ#။
တကယ#လiu Serializable Class တစ#ခuမH+ Serial Version UID ကiu မeရ$ထ+$ဖO$ဆiuရင# Serialize လuပ#တ-6အခ3မH+
JVM ကeန AHစ#သက#ရ+ ID တစ#ခuကiu Generate လuပ#eပ$မH+ Cဖစ#ပ3တယ#။
Serialization
Java Program ထ-ကeန Memory အeပ2မH+Qiတ-6 Serializable Object eတ&န-9 Serializable Object ရ-I
Collection eတ&ကiu Serialize လuပ#လiuတ-6အခ3မH+ ObjectOutputStream ကiu အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။
ObjectOutputStream ကiu အသuB$CပuKပ?$ Primitive Data eတ&န-9 Serializable Object Graphs eတ&ကiu Serialize
လuပ#eပ$Aiuင#မH+ Cဖစ#ပ3တယ#။
Object eတ&ကiu Serialize လuပ#တ-6eနရ+မH+လ- File eတ&မH+လ- Serialize လuပ#Aiuင#သလiu Network ကiu အသuB$Cပuတ-6
Socket Stream eတ&န-9လ- တ&-ဖက# အသuB$CပuAiuင#မH+ Cဖစ#ပ3တယ#။ ObjectOutputStream ရ-I Constructor eတ&
ကeတ+6 eအ+က#ပ3အတiuင#$ Cဖစ#Fကပ3တယ#။
Constructor Description
Deserialization
ObjectOutputStream ကiu အသuB$CပuKပ?$ Serialize လuပ#ထ+$တ-6 Primitive Data eတ&န-9 Object eတ&ကiu
Deserialize လuပ#လiuတ-6အခ3 ObjectInputStream ကiu အသuB$CပuရမH+ Cဖစ#ပ3တယ#။
Constructor Description
တဖန# Remote System တစ#ခuကeန Data eတ&ကiu ရယOတ-6အခ3မGiu$မH+eတ+6 Socket Streams ကiu အသuB$CပuKပ?$
Data eတ&ကiu Deserialize လuပ#Aiuင#ပ3တယ#။
ယခင# နမOန+Cဖင#6 Serialize လuပ#ထ+$တ-6 Employee Object ကiu Deserialize လuပ#လiuတ-6အခ3 အထက#ပ3အတiuင#$
ObjectInputStream ကiu အသuB$CပuKပ?$ eရ$သ+$Aiuင#ပ3တယ#။ အထက#ပ3အတiuင#$ in.readObject() method ရ-I
Return Type ဟ+ Object Cဖစ#eနတ-6အတ&က# Employee အCဖစ#Cပန#Kပ?$ Cast လuပ#eပ$ဖiuလiuအပ#ပ3တယ#။
NiO2
Lambda Expression
Method References
Changes in Interfaces
Streams API