မင်္ဂလာပါ!

လှိုက်လှဲစွာကြိုဆိုပါသည်။ ယခု ပထမဆုံးအကြိမ် ရောက်ဖူးခြင်းဖြစ်ပါသလား? ဝင်ရောက် ဆွေးနွေး မေးမြန်းလိုပါလျှင် အောက်တွင်ဖော်ပြထားသော button များမှတဆင့် ဝင်ရောက် ဆွေးနွေးနိုင်သကဲ့သို့ အဖွဲ့ဝင်အသစ်အနေဖြင့်လည်း လျှောက်ထားနိုင်ပါတယ်။

MYSTERY ZILLION တွင် English သို့မဟုတ် Unicode ဖြင့်သာ အသုံးပြုခွင့်ရှိသည်။ ဇော်ဂျီ ၊ ဧရာ စသည်တို့ကို အသုံးပြုခွင့် မရှိ။ Unicode fonts များမှာ Mon3,Yunghkio, Myanamr3 စသည်များ အသုံးပြုနိုင်သည်။ Unicode Guide ကို ဒီမှာ Download ချပါ။ Zawgyi to Unicode Converter
Don't share ebook or software if nobody request. You can find free book websites on here. We are welcome for discussion or asking question instead.

Java အခြေခံ အမေး၊အဖြေ များ (၁)

edited December 2014 in My Article

၁ ။ Java ရဲ. အရေးအကြီးဆုံး feature က ဘာလဲ ?

ဂျာဗား ဟာ platform မှီခိုမှု မရှိဘူး။ ဘယ် platform (Mac , Linux , Window) မှာ ပဲ ဖြစ်ဖြစ် develop လုပ်လို.ရတယ် ၊ run လို.ရတယ်။ သူ.ရဲ. JVM(Java Virtual Machine) ကိုသာ ထည်.သွင်းပေးဖို.ပဲ။

၂။ JVM(Java Virtual Machine) ဆိုတာ ဘာလဲ ?

JVM ဆိုသည်မှာ Java Class များကို compile (စက်နားလည်သော ညွှန်ကြားချက်များဖြစ်အောင်ပြုလုပ်ခြင်း) လုပ်ထားသော class file များအား run (ညွှန်ကြားချက်များအား အစီအစဉ်တကျ လုပ်ခိုင်း) ပေးနိုင်သည်. ကြားခံ စက်အတု (Virtual Machine) ဖြစ်သည်။

၃ ။ JVM ကရော platform independent (platform မှီခိုမှုကင်းခြင်း) ဖြစ်ရဲ.လား ?

မဖြစ်ပါဘူး ။ JVM ဟာ platform မှီခိုမှုရှိပါတယ် ။ ဥပမာ ... Window အတွက်ဆို Window အတွက် JVM , Mac အတွက်ဆို Mac အတွက် JVM ဆိုပြီးရှိပါတယ်။

၄ ။ JDK နဲ. JVM ဘာကွာသလဲ ?

JDK (Java Development Kit) သည် Java program များ developing လုပ်ရန် နှင့် compile လုပ်ရန်အတွက်ဖြစ်ပြီး JVM မှာ runtime environment (class file များအား စက်နားလည်သော machine code များအဖြစ်သို.ပြောင်းစေခြင်း) သက်သက်သာဖြစ်သည်။ JVM ဖြင့် မည်သည်. Class file , source file များကို compile လုပ်နိုင်စွမ်းမရှိပါ။

၅ ။ Pointer ဆိုတာဘာလဲ ? Pointer ကို Java Language က support လုပ်သလား ?

Pointer ဆိုသည်မှာ memory location များကို ကိုယ်စားပြုသောအရာများဖြစ်သည်။Memory များကို မသင့်လျော်သော ၊ မှားယွင်းသော ၊ မလိုအပ်သော အသုံးပြုခြင်းများ ပြုလုပ်ပါက memory အပိုသုံးမှုများ ၊ စက်ကိုထိခိုက်နိုင်မှုများ ၊ အရည်အသွေး စွမ်းဆောင်ရည် ကျဆင်းစေမှုများ ၊ program ၏ အားနည်းချက်များ (memory leaks and reliable issues) ဖြစ်ပေါ်စေတတ်မှုတို.ကြောင့် Java ၌ pointer သုံးခြင်းအားခွင့်မပြုပါ။

၆ ။ Java Class များ၏ အခြေခံ Class က ဘာလဲ ?

Java.lang.Object

၇ ။ Java က တစ်ခုထက်ပိုသော Class မှီခိုမှု (Multiple Inheritance) ကို အသုံးပြုလို.ရလား ?

မရပါ။ ဂျာဗား၌ တစ်ခုထက်ပိုသော Class မှီခိုရေးသားမှုများ support မလုပ်ပါ။

၈ ။ Java က pure OOP (Object Oriented Programming) Language ဖြစ်ပါသလား ?

Java သည် primitive data types (byte , short , int , long , float , double , boolean , char) များအသုံးပြုခြင်းကြောင့် pure OOP languageဟု မဆိုနိင်ပါ။

၉ ။ Arrays များသည် primitive data type များ ဖြစ်ပါသလား ?

Java တွင် Array များသည် Object များသာဖြစ်သည်။

၁၀ ။ Path နဲ. ClassPath ဘာကွာလဲ ?

Path ရော ClassPath ရော နှစ်ခုလုံးသည် Operating System ကသတ်မှတ်သော variables များဖြစ်ကြသည်။ Path သည် file တစ်ခု၏ လမ်းကြောင်းဖြစ်ပြီး ClassPath သည် .class file ၏ location ကို သတ်မှတ်သော variable ဖြစ်သည်။

၁၁ ။ Local variable ဆိုတာဘာလဲ ?

Local variable ဆိုသည်မှာ method တစ်ခု၏ အဖွင့် အပိတ် တွန်.ကွင်း နှစ်ခုကြား ({………..}) အတွင်းကြေငြာထားသော variable များဖြစ်ပြီး ထို variable များအား အသုံးမပြုခင်ကပင် initialize (သင့်တော်သော တန်ဖိုးတစ်ခုခု ထည်.သွင်းခြင်း) ပြုလုပ်ရမည်ဖြစ်သည်။

၁၂ ။ Instance variable ဆိုတာဘာလဲ ?

Instance variable ဆိုသည်မှာ Class Level တွင် declare လုပ်ထားသော variable များဖြစ်ပြီး ထို variable များအားလည်း local variable များကဲ့သို.ပင် မသုံးပြုခင်ကပင် initialize လုပ်ရန်လိုအပ်ပေသည်။ အကယ်၍ မပြုလုပ်ခဲ့ပါက ၎င်းတို.၏ သက်ဆိုင်ရာ default value များ ကို အလိုအလျောက်ထည်.သွင်းပေးမည်ဖြစ်သည်။
ဥပမာ..... class level တွင် int value တစ်ခု ကို ကြေငြာခဲ့ပြီး initialize မလုပ်ပဲ အသုံးပြုခဲ့ပါက default value “0” ကိုထည်.သွင်း အသုံးပြုမည် ဖြစ်ပေသည်။

၁၃ ။ Constant Variable တစ်ခု ဘယ်လိုကြေငြာရမလဲ ?

Variable တစ်ခု၏ ရှေ.တွင် static final ဟု ထည်.သွင်းကြေငြာပါက ၎င်း variable ကို Constant Variable ဟုခေါ်သည်။ ထို variable ရှိသော class ၏ instance များသည် ၎င်း constant variable ၏ copy variable ကိုသာ ရရှိပြီး ထို constant variable ၏တန်ဖိုးကိုလည်း ပြောင်းလဲ သုံးစွဲနိုင်ခြင်း မရှိပါ ။ စည်းကမ်းအရ ... Constant variable များကို စာလုံးအကြီး (capital letter ) ဖြင့်သာရေးလေ့ရှိကြသည်။
ဥပမာ .... static final int PI = 2.14

၁၄ ။ main method ရဲ. Return type က ဘာလဲ ?

Main method ကို return type void ဖြစ်ပြီး main method မှ မည်သည်.အရာကိုမျှ return ပြန်ခြင်း မရှိပါ။

၁၅ ။ main() method ကိုဘာဖြစ်လို. static နဲ. ကြေငြာရတာလဲ ?

main() method ကို JVM က Class ကို instance မဆောက်ခင် ကတည်းက ခေါ်ယူ အသုံးပြုခြင်းကြောင့် static ဖြင့်ကြေငြာရန်လိုအပ်ပါသည်။ Class တစ်ခု တွင် အရင်ဆုံး အလုပ်လုပ်သည်မှာ ထို Class ၏ static field များ ဖြစ်သည်။ ထို class ၏ main() method မဟုတ်ပါ။ Class တစ်ခုတွင် static field (static variables , static methods) များသည် class မှ ပိုင်ဆိုင်သော အရာများဖြစ်ပြီး Class ကို instance မဆောက်မီကပင် အရင်ဆုံး run သော အရာများဖြစ်သည်။ ၎င်းတို.ကို Class ကသာ ပိုင်ဆိုင်သော field များဖြစ်ပြီး Class ၏ instance များမှာမူ ခေါ်ယူအသုံးခွင့်သာရှိပြီး ပိုင်ဆိုင်ခွင့် ၊ ပြုပြင်ပြောင်းလဲခွင့် မရှိပါ။ ထို.ကြောင့် main() method အားလည်း class instance မဆောက်မီ ကတည်းက ခေါ်ယူ run မည်ဖြစ်သောကြောင့် Static ဖြင့် main() အား ကြေငြာရခြင်းဖြစ်သည်။
ဥပမာ....

    public class Foo {
     static {
    System.out.print(“ World”);
    }
    public static void main (String [] args)
    System.out.print(“ Hello ”);

    }

အထက်ပါ program ကို run ပါက output မှာ World Hello သာ ဖြစ်သည်။

၁၆ ။ main() method ဟာ ဘာ argument တွေကိုလက်ခံသလဲ ?

main() သည် String Object Array argument တစ်ခုကိုသာလက်ခံသည်။
(1) public static void main (String [] args) {……}
(2) public static void main(String…args){…..}

၁၇ ။ main method ကို overload လုပ်ရေးလို.ရသလား ?

ရပါတယ် ။ Class တစ်ခုအတွင်းမှာ main() method တစ်ခုထက်မက ရေးလို.ရပါတယ် ။ method Signature သာမတူရင်ပေါ့ ။ method signature မတူဘူး ဆိုတာ method တစ်ခုနဲ.တစ်ခု လက်ခံတဲ့ parameter procedure တွေ ၊ parameter type တွေ ၊ return type တွေ ၊ parameter အရေအတွက်တွေသာ တစ်ခုနဲ. တစ်ခု တိုက်ဆိုင်မှု မရှိရင် Class တစ်ခုအတွင်းမှာ main လို. အမည်ပေးထားတဲ့ method ကြိုက်သလောက် ရေးလို.ရပါတယ်။

၁၈ ။ main() method ကို final ကြေငြာလို.ရသလား ?

ရပါတယ်။ ဘာကြောင့်လဲ ဆိုတော့ အဲဒီ့ class အပြင် နောက်ထပ်သူ.ရဲ. child class တွေမှာ ၎င်းတို.ကိုယ့်ပိုင် main() method ထပ်မရှိနိုင်တော့လို.ပဲ ဖြစ်ပါတယ်။

၁၉ ။ public static void main လို.ကြေငြာတာနဲ. static public void main() ဘယ်ဟာအမှန်လဲ ?

ဘယ်လိုပဲ ရေးရေး မှန်ပါတယ် ။ ဒါပေမယ့် void ကတော့ အမြဲတန်း main() ရဲ.ရှေ.မှာ ရှိရမယ်။

၂၀ ။ source file တစ်ခုအတွင်းမှာ Class တစ်ခုထက်ပိုပါလို.ရလား ?

ရပါတယ် ။ ဒါပေမယ့် class တစ်ခုတည်းကသာ public ကြေငြာခွင့်ရှိပါတယ်။

၂၁ ။ package ဆိုတာ ဘာလဲ ?

Package ဆိုသည်မှာ မျိုး တူသော ၊ ဆက်စပ်မှုရှိသော class များ ၊ interface များအား စုစည်းထားသော အရာ ဖြစ်သည် (တစ်နည်း ... folder တစ်ခုဖြစ်သည် )။ package ကိုကြေငြာသည်.အခါတွင် Class ၏ ပထမဆုံး တွင်သာ ကြေငြာရမည် ဖြစ်သည်။

၂၂ ။ ဘယ် package ဟာ import လုပ်စရမလိုဘူးလဲ ?

java.lang.package ဟာ package declaration မရှိသည်.တိုင်အောင် အလိုအလျောက် import လုပ်ပြီးသားဖြစ်တယ်။ ကိုယ့်ဘာသာကိုယ် manually import လုပ်စရာမလိုပါ ။

၂၃ ။ Class ကို protected နဲ. ကြေငြာလို.ရပါသလား ?

မရပါ ။ method တွေကိုပဲ protected နဲ. ကြေငြာလို.ရပါတယ်။

၂၄ ။ method တစ်ခုကို protected နဲ.ကြေငြာထားရင် ဘယ်တွေကနေ ခေါ်သုံးလို.ရလဲ ?

Same package (package တစ်ခုတည်းအောက်) ဒါမှမဟုတ် package တော့မတူပေမယ့် ထို class ရဲ. Subclass ဆိုရင် ခေါ်သုံးလို.ရပါတယ်။

၂၅ ။ variable တစ်ခုကို ဘာလို. Final ကြေငြာရသလဲ ?

Variable တစ်ခုရဲ. တန်ဖိုးကို ဘယ်တော့မှ မပြောင်းလဲစေ ချင်ရင် final ကြေငြာရပါတယ်။ ဒါပေမယ့် final variable တွေကို မသုံးခင် initialize လုပ်ပေးဖို.တော့လိုပါတယ်။

၂၆ ။ method တစ်ခုကို ဘာလို. Final ကြေငြာရသလဲ ?

Override လုပ်မရေးစေချင်လို. ။ class တစ်ခုရဲ. Method ကို သူ.ရဲ. subclass တွေကနေ override လုပ်ရေးရင်
(override ဆိုတာ မူရင်း method အတိုင်း signature တူပြီး method အတွင်းက လုပ်ဆောင်ပုံမတူတာ ) မူရင်း class ရဲ. Method အလုပ်လုပ်ပုံ ပြောင်းလဲသွားမှာ မလိုလားတဲ့အခါမျိုးမှာ method ကို final ကြေငြာရပါတယ်။

၂၇ ။ Class တစ်ခုကို inherit မလုပ်စေချင်ရင် (subclass create မလုပ်စေချင်ရင်) ဘယ်လိုလုပ်ရမလဲ ?

ထို class ကို final ကြေငြာလိုက်ပါ။ အဲတာဆို အဲဒီ့ class ကို inherit လုပ်လို.မရတော့ပါဘူး ။ တစ်နည်း ... subclass create လုပ်လို.မရတော့ပါဘူး ။ ဒါပေမယ့် Abstract Class ကိုတော့ final ကြေငြာလို.မရပါ။ ဘာလို.လဲဆိုတော့ Abstract Class ဆိုတာကိုက subclass ဒါမှမဟုတ် Child Class ရှိကိုရှိရမှာမို.ပါ ။ child class (class အား inherit လုပ်ထားသော class) မရှိပဲ Abstract Class ကြေငြာခြင်းဟာ အဓိပ္ပာယ် မရှိပါဘူး။

၂၈ ။ Java API မှာ final ကြေငြာထားတဲ့ class တွေက ဘာတွေလဲ ?

Java API(Application Programming Interface) Java Language တွင် ထောက်ပံ့ပေးထားသော ၊အဆင်သင့်ပြုလုပ်ပေးထားသော Class များထဲမှ final ကြေငြာထားသော Class များမှာ java.lang.String နှင့် Java.lang.Math တို.ဖြစ်ကြသည်။

၂၉ ။ Class တစ်ခုကို static ကြေငြာလို.ရသလား ?

Top Level Class (Main Class) ကို static ကြေငြာလို.မရပါ ။ ဒါပေမယ့် inner class တွေကိုတော့ static ကြေငြာလို.ရပါတယ်။ ဘာကြောင့်လဲဆိုတော့ inner class တွေကို top level class (အဓိက main class) ရဲ. Static field တွေအနေနဲ. သတ်မှတ်ခွင့်ရှိလို.ပါ။

၃၀ ။ method တစ်ခုကို ဘယ်အချိန်မှာ static ကြေငြာသင့်သလဲ ?

တစ်ခါ တစ်လေမှာ method တစ်ချို.ကို Class ရဲ. Object create မလုပ်ခင် (instance မဆောက်ခင်) မှာ လုပ်စေချင်တာမျိုးရှိရင် အဲဒီ့ method ကို static နဲ. ကြေငြာပေးရပါတယ်။

၃၁ ။ static method တွေဟာ ဘာတွေကန်.သတ်ထားလဲ ?

Static method တွေဆို.တာ instance တွေအတွက်မဟုတ်ပါဘူး ။ Class ကသာပိုင်ဆိုင်တဲ့ method တွေပါ ။ အဲတာကြောင့် Class ရဲ. instance တွေဟာ ခေါ်သုံးလို.မရပါဘူး ။ ClassName ကိုထောက်ပြီး (Class ကသာ ပိုင်ဆိုင်သော method အဖြစ်) ခေါ်သုံးရပါတယ်။ “this” keyword နဲ.လည်း ခေါ်သုံးလို.မရပါဘူး ။

၃၂ ။ Static variable တွေရဲ. သတိထားရမယ့်အချက်က ဘာလဲ ?

Static variable တွေဟာ Class ကသာ ပိုင်ဆိုင်တဲ့ variable တွေဖြစ်ပြီး မည်သည်. Class ရဲ. Instance ကမှမပိုင်ဆိုင်ပါဘူး ။ instance တွေဟာ Class ရဲ. Static variable တွေကို share လုပ်ပြီး သုံးတာဖြစ်တဲ့ အတွက် instance တစ်ခုခုကသာ static variable ရဲ. တန်ဖိုးကို ပြောင်းလဲ ခဲ့မယ် ဆိုရင် ကျန်တဲ့ instance တွေမှာလည်း လိုက်ပြီး effect ဖြစ်ပါတယ် ။ တစ်နည်း .... instance တစ်ခုကသာ static variable ရဲ.တန်ဖိုးကိုပြောင်းလိုက်မယ်ဆိုရင် instance တိုင်းရဲ. Static variable value ဟာ လိုက်ပြီး ပြောင်းလဲ သွားမှာဖြစ်ပါတယ်။

၃၃ ။ Static variable တွေကို method အတွင်းမှာ ကြေငြာလို.ရပါသလား ?

Static variable တွေဟာ class ကသာ ပိုင်ဆိုင်တဲ့ variable တွေဖြစ်တာကြောင့် method အတွင်းမှာ local variable တွေကြေငြာသလိုမျိုး ကြေငြာလို.မရပါဘူး။ ကြေငြာရင် အဲဒီ့ class ဟာ compile time error တက်ပါတယ်။

၃၄ ။ အကျဉ်းချုံး class (Abstract class) ဆိုတာဘာလဲ ။

Abstract method (တိကျတဲ့ အဓိပ္ပာယ် ဖွင့်ဆိုမှုမရှိသော သို.မဟုတ် implementation မရှိသော) အနည်းဆုံးတစ်ခု ပါဝင်သော Class ကို Abstract Class (အကျဉ်းချုံးထားသော class) ဟုခေါ်သည်။

၃၅ ။ Abstract Class ကို final ကြေငြာလို. ရပါသလား ?

မရပါ ။ Abstract Class ကို inherit လုပ်တဲ့ Class သို.မဟုတ် အကျဉ်းချုံး Class (Abstract Class) ရဲ. Abstract method ကို implementation လုပ်ပေးမယ့် (method detail ဖွင့်ဆိုမယ့်) Class မရှိခြင်းဟာ အဓိပ္ပာယ်မရှိပါဘူး ။ Class ကို final ကြေငြာလိုက်ရင် SubClass create လုပ်လို.မရတော့သောကြောင့် ။ ဒါကြောင့် Abstract method ကို final ကြေငြာရင် compile time error တက်ပါတယ်။

၃၆ ။ variable တစ်ခုကို abstract ကြေငြာလို.ရပါသလား ?

မရပါ ။ method သို.မဟုတ် Class များကိုသာ Abstract ကြေငြာလို.ရပါတယ်။

၃၇ ။ Abstract Class ကို instance ဆောက်လို.ရပါသလား ?

Abstract Class တစ်ခုကို instance ဆောက်လို.မရပါ။ Annonymous inner class သာဆောက်လို.ရပါတယ်။

၃၈ ။ Abstract method တစ်ခုမှ မရှိပဲ Class ကို Abstract လို. ကြေငြာလို.ရပါသလား ?

ရပါတယ် ။ ၎င်း Class ကို instance creation မလုပ်စေချင်တဲ့အခါမျိုးမှာ Class ကို Abstract နဲ. ကြေငြာထားလို.ရပါတယ်။

၃၉ ။ Interface ဆိုတာ ဘာလဲ ?

Interface ဆိုတာ 100% abstract method တွေကိုစုထားတဲ့ အစုပါ။ Interface အတွင်းမှာ ရှိတဲ့ method တွေအားလုံးဟာ declaration ပဲရှိပြီး implementation လုံးဝ မရှိပါဘူး ။

၄၀ ။ interface တစ်ခုကို implements လုပ်တဲ့ class ဟာ အဲဒီ့ interface ထဲမှာပါတဲ့ method အကုန်လုံးကို implements မလုပ်လို.ရလား ?

မရပါဘူး ။ method အကုန်လုံးကို implement လုပ်ဖို.လိုပါတယ် ။ တကယ်လို.သာ method အကုန်လုံးကို implement မလုပ်ခဲ့ရင် အဲဒီ့ Class ကို Abstract Class အဖြစ်ပြန်လည်ကြေငြာပေးရပါတယ်။

Tagged:
Thanked by 2 CalmHill ahkar
Sign In or Register to comment.